OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
6 #error "This file requires ARC support." | |
7 #endif | |
8 | |
9 #import "remoting/ios/host_refresh.h" | |
10 | |
11 #import "base/compiler_specific.h" | |
12 #import "testing/gtest_mac.h" | |
13 | |
14 #import "remoting/ios/host.h" | |
15 #import "remoting/ios/host_refresh_test_helper.h" | |
16 | |
17 @interface HostRefreshDelegateTester : NSObject<HostRefreshDelegate> | |
18 | |
19 @property(nonatomic) NSArray* hostList; | |
20 @property(nonatomic) NSString* errorMessage; | |
21 | |
22 @end | |
23 | |
24 @implementation HostRefreshDelegateTester | |
25 | |
26 @synthesize hostList = _hostList; | |
27 @synthesize errorMessage = _errorMessage; | |
28 | |
29 - (void)hostListRefresh:(NSArray*)hostList | |
30 errorMessage:(NSString*)errorMessage { | |
31 _hostList = hostList; | |
32 _errorMessage = errorMessage; | |
33 } | |
34 | |
35 - (bool)receivedHosts { | |
36 return (_hostList.count > 0); | |
37 } | |
38 | |
39 - (bool)receivedErrorMessage { | |
40 return (_errorMessage != nil); | |
41 } | |
42 | |
43 @end | |
44 | |
45 namespace remoting { | |
46 | |
47 namespace { | |
48 | |
49 NSString* kErrorMessageTest = @"TestErrorMessage"; | |
50 | |
51 } // namespace | |
52 | |
53 class HostRefreshTest : public ::testing::Test { | |
54 protected: | |
55 virtual void SetUp() OVERRIDE { | |
56 hostRefreshProcessor_ = [[HostRefresh allocWithZone:nil] init]; | |
57 delegateTester_ = [[HostRefreshDelegateTester alloc] init]; | |
58 [hostRefreshProcessor_ setDelegate:delegateTester_]; | |
59 } | |
60 | |
61 void CreateHostList(int numHosts) { | |
62 [hostRefreshProcessor_ | |
63 setJsonData:HostRefreshTestHelper::GetHostList(numHosts)]; | |
64 } | |
65 | |
66 NSError* CreateErrorFromString(NSString* message) { | |
67 NSDictionary* errorDictionary = nil; | |
68 | |
69 if (message != nil) { | |
70 errorDictionary = @{NSLocalizedDescriptionKey : message}; | |
71 } | |
72 | |
73 return [[NSError alloc] initWithDomain:@"HostRefreshTest" | |
74 code:EPERM | |
75 userInfo:errorDictionary]; | |
76 } | |
77 | |
78 HostRefresh* hostRefreshProcessor_; | |
79 HostRefreshDelegateTester* delegateTester_; | |
80 }; | |
81 | |
82 TEST_F(HostRefreshTest, ErrorFormatter) { | |
83 [hostRefreshProcessor_ connection:nil | |
84 didFailWithError:CreateErrorFromString(nil)]; | |
85 ASSERT_FALSE(hostRefreshProcessor_.errorMessage == nil); | |
86 | |
87 [hostRefreshProcessor_ connection:nil | |
88 didFailWithError:CreateErrorFromString(@"")]; | |
89 ASSERT_FALSE(hostRefreshProcessor_.errorMessage == nil); | |
90 | |
91 [hostRefreshProcessor_ connection:nil | |
92 didFailWithError:CreateErrorFromString(kErrorMessageTest)]; | |
93 ASSERT_TRUE([hostRefreshProcessor_.errorMessage | |
94 rangeOfString:kErrorMessageTest].location != NSNotFound); | |
95 } | |
96 | |
97 TEST_F(HostRefreshTest, JSONParsing) { | |
98 // There were no hosts returned | |
99 CreateHostList(0); | |
100 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
101 ASSERT_TRUE(delegateTester_.hostList.count == 0); | |
102 | |
103 CreateHostList(1); | |
104 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
105 ASSERT_TRUE(delegateTester_.hostList.count == 1); | |
106 | |
107 Host* host = static_cast<Host*>([delegateTester_.hostList objectAtIndex:0]); | |
108 ASSERT_NSEQ(HostRefreshTestHelper::CreatedTimeTest, host.createdTime); | |
109 ASSERT_NSEQ(HostRefreshTestHelper::HostIdTest, host.hostId); | |
110 ASSERT_NSEQ(HostRefreshTestHelper::HostNameTest, host.hostName); | |
111 ASSERT_NSEQ(HostRefreshTestHelper::HostVersionTest, host.hostVersion); | |
112 ASSERT_NSEQ(HostRefreshTestHelper::KindTest, host.kind); | |
113 ASSERT_NSEQ(HostRefreshTestHelper::JabberIdTest, host.jabberId); | |
114 ASSERT_NSEQ(HostRefreshTestHelper::PublicKeyTest, host.publicKey); | |
115 ASSERT_NSEQ(HostRefreshTestHelper::StatusTest, host.status); | |
116 ASSERT_NSEQ(HostRefreshTestHelper::UpdatedTimeTest, host.updatedTime); | |
117 | |
118 CreateHostList(11); | |
119 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
120 ASSERT_TRUE(delegateTester_.hostList.count == 11); | |
121 | |
122 // An error in parsing returns no hosts | |
123 [hostRefreshProcessor_ | |
124 setJsonData: | |
125 [NSMutableData | |
126 dataWithData: | |
127 [@"{\"dataaaaaafa\":{\"kiffffnd\":\"chromoting#hostList\"}}" | |
128 dataUsingEncoding:NSUTF8StringEncoding]]]; | |
129 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
130 ASSERT_TRUE(delegateTester_.hostList.count == 0); | |
131 } | |
132 | |
133 TEST_F(HostRefreshTest, HostListDelegateNoList) { | |
134 // Hosts were not processed at all | |
135 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
136 ASSERT_FALSE([delegateTester_ receivedHosts]); | |
137 ASSERT_TRUE([delegateTester_ receivedErrorMessage]); | |
138 | |
139 // There were no hosts returned | |
140 CreateHostList(0); | |
141 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
142 ASSERT_FALSE([delegateTester_ receivedHosts]); | |
143 ASSERT_TRUE([delegateTester_ receivedErrorMessage]); | |
144 } | |
145 | |
146 TEST_F(HostRefreshTest, HostListDelegateHasList) { | |
147 CreateHostList(1); | |
148 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
149 ASSERT_TRUE([delegateTester_ receivedHosts]); | |
150 ASSERT_FALSE([delegateTester_ receivedErrorMessage]); | |
151 } | |
152 | |
153 TEST_F(HostRefreshTest, HostListDelegateHasListWithError) { | |
154 CreateHostList(1); | |
155 | |
156 [hostRefreshProcessor_ connection:nil | |
157 didFailWithError:CreateErrorFromString(kErrorMessageTest)]; | |
158 | |
159 [hostRefreshProcessor_ connectionDidFinishLoading:nil]; | |
160 ASSERT_TRUE([delegateTester_ receivedHosts]); | |
161 ASSERT_TRUE([delegateTester_ receivedErrorMessage]); | |
162 } | |
163 | |
164 TEST_F(HostRefreshTest, ConnectionFailed) { | |
165 [hostRefreshProcessor_ connection:nil didFailWithError:nil]; | |
166 ASSERT_FALSE([delegateTester_ receivedHosts]); | |
167 ASSERT_TRUE([delegateTester_ receivedErrorMessage]); | |
168 } | |
169 | |
170 } // namespace remoting | |
OLD | NEW |