OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "chrome/browser/chromeos/cros/cros_library.h" | 10 #include "chrome/browser/chromeos/cros/cros_library.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 using ::testing::Invoke; | 26 using ::testing::Invoke; |
27 using ::testing::Return; | 27 using ::testing::Return; |
28 using ::testing::_; | 28 using ::testing::_; |
29 using content::BrowserThread; | 29 using content::BrowserThread; |
30 | 30 |
31 namespace chromeos { | 31 namespace chromeos { |
32 | 32 |
33 class OnlineAttemptTest : public testing::Test { | 33 class OnlineAttemptTest : public testing::Test { |
34 public: | 34 public: |
35 OnlineAttemptTest() | 35 OnlineAttemptTest() |
36 : message_loop_(MessageLoop::TYPE_UI), | 36 : message_loop_(base::MessageLoop::TYPE_UI), |
37 ui_thread_(BrowserThread::UI, &message_loop_), | 37 ui_thread_(BrowserThread::UI, &message_loop_), |
38 state_(UserContext(), "", "", "", User::USER_TYPE_REGULAR, false), | 38 state_(UserContext(), "", "", "", User::USER_TYPE_REGULAR, false), |
39 resolver_(new MockAuthAttemptStateResolver) { | 39 resolver_(new MockAuthAttemptStateResolver) { |
40 } | 40 } |
41 | 41 |
42 virtual ~OnlineAttemptTest() {} | 42 virtual ~OnlineAttemptTest() {} |
43 | 43 |
44 virtual void SetUp() { | 44 virtual void SetUp() { |
45 attempt_.reset(new OnlineAttempt(&state_, resolver_.get())); | 45 attempt_.reset(new OnlineAttempt(&state_, resolver_.get())); |
46 } | 46 } |
(...skipping 18 matching lines...) Expand all Loading... |
65 | 65 |
66 void CancelLogin(OnlineAttempt* auth) { | 66 void CancelLogin(OnlineAttempt* auth) { |
67 BrowserThread::PostTask( | 67 BrowserThread::PostTask( |
68 BrowserThread::UI, FROM_HERE, | 68 BrowserThread::UI, FROM_HERE, |
69 base::Bind(&OnlineAttempt::CancelClientLogin, | 69 base::Bind(&OnlineAttempt::CancelClientLogin, |
70 auth->weak_factory_.GetWeakPtr())); | 70 auth->weak_factory_.GetWeakPtr())); |
71 } | 71 } |
72 | 72 |
73 static void Quit() { | 73 static void Quit() { |
74 BrowserThread::PostTask( | 74 BrowserThread::PostTask( |
75 BrowserThread::UI, FROM_HERE, MessageLoop::QuitClosure()); | 75 BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure()); |
76 } | 76 } |
77 | 77 |
78 static void RunThreadTest() { | 78 static void RunThreadTest() { |
79 MessageLoop::current()->RunUntilIdle(); | 79 base::MessageLoop::current()->RunUntilIdle(); |
80 } | 80 } |
81 | 81 |
82 MessageLoop message_loop_; | 82 base::MessageLoop message_loop_; |
83 content::TestBrowserThread ui_thread_; | 83 content::TestBrowserThread ui_thread_; |
84 TestAttemptState state_; | 84 TestAttemptState state_; |
85 scoped_ptr<MockAuthAttemptStateResolver> resolver_; | 85 scoped_ptr<MockAuthAttemptStateResolver> resolver_; |
86 scoped_ptr<OnlineAttempt> attempt_; | 86 scoped_ptr<OnlineAttempt> attempt_; |
87 | 87 |
88 // Initializes / shuts down a stub CrosLibrary. | 88 // Initializes / shuts down a stub CrosLibrary. |
89 chromeos::ScopedStubCrosEnabler stub_cros_enabler_; | 89 chromeos::ScopedStubCrosEnabler stub_cros_enabler_; |
90 }; | 90 }; |
91 | 91 |
92 TEST_F(OnlineAttemptTest, LoginSuccess) { | 92 TEST_F(OnlineAttemptTest, LoginSuccess) { |
(...skipping 21 matching lines...) Expand all Loading... |
114 // This is how we inject fake URLFetcher objects, with a factory. | 114 // This is how we inject fake URLFetcher objects, with a factory. |
115 // This factory creates fake URLFetchers that Start() a fake fetch attempt | 115 // This factory creates fake URLFetchers that Start() a fake fetch attempt |
116 // and then come back on the UI thread saying they've been canceled. | 116 // and then come back on the UI thread saying they've been canceled. |
117 MockURLFetcherFactory<GotCanceledFetcher> factory; | 117 MockURLFetcherFactory<GotCanceledFetcher> factory; |
118 | 118 |
119 attempt_->Initiate(&profile); | 119 attempt_->Initiate(&profile); |
120 BrowserThread::PostTask( | 120 BrowserThread::PostTask( |
121 BrowserThread::UI, FROM_HERE, | 121 BrowserThread::UI, FROM_HERE, |
122 base::Bind(&OnlineAttemptTest::RunThreadTest)); | 122 base::Bind(&OnlineAttemptTest::RunThreadTest)); |
123 | 123 |
124 MessageLoop::current()->Run(); | 124 base::MessageLoop::current()->Run(); |
125 | 125 |
126 EXPECT_TRUE(error == state_.online_outcome().error()); | 126 EXPECT_TRUE(error == state_.online_outcome().error()); |
127 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, | 127 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, |
128 state_.online_outcome().reason()); | 128 state_.online_outcome().reason()); |
129 } | 129 } |
130 | 130 |
131 TEST_F(OnlineAttemptTest, LoginTimeout) { | 131 TEST_F(OnlineAttemptTest, LoginTimeout) { |
132 LoginFailure error(LoginFailure::LOGIN_TIMED_OUT); | 132 LoginFailure error(LoginFailure::LOGIN_TIMED_OUT); |
133 TestingProfile profile; | 133 TestingProfile profile; |
134 | 134 |
135 EXPECT_CALL(*(resolver_.get()), Resolve()) | 135 EXPECT_CALL(*(resolver_.get()), Resolve()) |
136 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 136 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
137 .RetiresOnSaturation(); | 137 .RetiresOnSaturation(); |
138 | 138 |
139 // This is how we inject fake URLFetcher objects, with a factory. | 139 // This is how we inject fake URLFetcher objects, with a factory. |
140 // This factory creates fake URLFetchers that Start() a fake fetch attempt | 140 // This factory creates fake URLFetchers that Start() a fake fetch attempt |
141 // and then come back on the UI thread saying they've been canceled. | 141 // and then come back on the UI thread saying they've been canceled. |
142 MockURLFetcherFactory<ExpectCanceledFetcher> factory; | 142 MockURLFetcherFactory<ExpectCanceledFetcher> factory; |
143 | 143 |
144 attempt_->Initiate(&profile); | 144 attempt_->Initiate(&profile); |
145 BrowserThread::PostTask( | 145 BrowserThread::PostTask( |
146 BrowserThread::UI, FROM_HERE, | 146 BrowserThread::UI, FROM_HERE, |
147 base::Bind(&OnlineAttemptTest::RunThreadTest)); | 147 base::Bind(&OnlineAttemptTest::RunThreadTest)); |
148 | 148 |
149 // Post a task to cancel the login attempt. | 149 // Post a task to cancel the login attempt. |
150 CancelLogin(attempt_.get()); | 150 CancelLogin(attempt_.get()); |
151 | 151 |
152 MessageLoop::current()->Run(); | 152 base::MessageLoop::current()->Run(); |
153 | 153 |
154 EXPECT_EQ(LoginFailure::LOGIN_TIMED_OUT, state_.online_outcome().reason()); | 154 EXPECT_EQ(LoginFailure::LOGIN_TIMED_OUT, state_.online_outcome().reason()); |
155 } | 155 } |
156 | 156 |
157 TEST_F(OnlineAttemptTest, HostedLoginRejected) { | 157 TEST_F(OnlineAttemptTest, HostedLoginRejected) { |
158 LoginFailure error( | 158 LoginFailure error( |
159 LoginFailure::FromNetworkAuthFailure( | 159 LoginFailure::FromNetworkAuthFailure( |
160 GoogleServiceAuthError( | 160 GoogleServiceAuthError( |
161 GoogleServiceAuthError::HOSTED_NOT_ALLOWED))); | 161 GoogleServiceAuthError::HOSTED_NOT_ALLOWED))); |
162 TestingProfile profile; | 162 TestingProfile profile; |
163 | 163 |
164 EXPECT_CALL(*(resolver_.get()), Resolve()) | 164 EXPECT_CALL(*(resolver_.get()), Resolve()) |
165 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 165 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
166 .RetiresOnSaturation(); | 166 .RetiresOnSaturation(); |
167 | 167 |
168 // This is how we inject fake URLFetcher objects, with a factory. | 168 // This is how we inject fake URLFetcher objects, with a factory. |
169 MockURLFetcherFactory<HostedFetcher> factory; | 169 MockURLFetcherFactory<HostedFetcher> factory; |
170 | 170 |
171 TestAttemptState local_state(UserContext(), "", "", "", | 171 TestAttemptState local_state(UserContext(), "", "", "", |
172 User::USER_TYPE_REGULAR, true); | 172 User::USER_TYPE_REGULAR, true); |
173 attempt_.reset(new OnlineAttempt(&local_state, resolver_.get())); | 173 attempt_.reset(new OnlineAttempt(&local_state, resolver_.get())); |
174 attempt_->Initiate(&profile); | 174 attempt_->Initiate(&profile); |
175 BrowserThread::PostTask( | 175 BrowserThread::PostTask( |
176 BrowserThread::UI, FROM_HERE, | 176 BrowserThread::UI, FROM_HERE, |
177 base::Bind(&OnlineAttemptTest::RunThreadTest)); | 177 base::Bind(&OnlineAttemptTest::RunThreadTest)); |
178 | 178 |
179 MessageLoop::current()->Run(); | 179 base::MessageLoop::current()->Run(); |
180 | 180 |
181 EXPECT_EQ(error, local_state.online_outcome()); | 181 EXPECT_EQ(error, local_state.online_outcome()); |
182 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, | 182 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, |
183 local_state.online_outcome().reason()); | 183 local_state.online_outcome().reason()); |
184 } | 184 } |
185 | 185 |
186 TEST_F(OnlineAttemptTest, FullLogin) { | 186 TEST_F(OnlineAttemptTest, FullLogin) { |
187 TestingProfile profile; | 187 TestingProfile profile; |
188 | 188 |
189 EXPECT_CALL(*(resolver_.get()), Resolve()) | 189 EXPECT_CALL(*(resolver_.get()), Resolve()) |
190 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 190 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
191 .RetiresOnSaturation(); | 191 .RetiresOnSaturation(); |
192 | 192 |
193 // This is how we inject fake URLFetcher objects, with a factory. | 193 // This is how we inject fake URLFetcher objects, with a factory. |
194 MockURLFetcherFactory<SuccessFetcher> factory; | 194 MockURLFetcherFactory<SuccessFetcher> factory; |
195 | 195 |
196 TestAttemptState local_state(UserContext(), "", "", "", | 196 TestAttemptState local_state(UserContext(), "", "", "", |
197 User::USER_TYPE_REGULAR, true); | 197 User::USER_TYPE_REGULAR, true); |
198 attempt_.reset(new OnlineAttempt(&local_state, resolver_.get())); | 198 attempt_.reset(new OnlineAttempt(&local_state, resolver_.get())); |
199 attempt_->Initiate(&profile); | 199 attempt_->Initiate(&profile); |
200 BrowserThread::PostTask( | 200 BrowserThread::PostTask( |
201 BrowserThread::UI, FROM_HERE, | 201 BrowserThread::UI, FROM_HERE, |
202 base::Bind(&OnlineAttemptTest::RunThreadTest)); | 202 base::Bind(&OnlineAttemptTest::RunThreadTest)); |
203 | 203 |
204 MessageLoop::current()->Run(); | 204 base::MessageLoop::current()->Run(); |
205 | 205 |
206 EXPECT_EQ(LoginFailure::LoginFailureNone(), local_state.online_outcome()); | 206 EXPECT_EQ(LoginFailure::LoginFailureNone(), local_state.online_outcome()); |
207 } | 207 } |
208 | 208 |
209 TEST_F(OnlineAttemptTest, LoginNetFailure) { | 209 TEST_F(OnlineAttemptTest, LoginNetFailure) { |
210 RunFailureTest( | 210 RunFailureTest( |
211 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET)); | 211 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET)); |
212 } | 212 } |
213 | 213 |
214 TEST_F(OnlineAttemptTest, LoginDenied) { | 214 TEST_F(OnlineAttemptTest, LoginDenied) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 attempt_->weak_factory_.GetWeakPtr(), | 251 attempt_->weak_factory_.GetWeakPtr(), |
252 error)); | 252 error)); |
253 | 253 |
254 // Force UI thread to finish tasks so I can verify |state_|. | 254 // Force UI thread to finish tasks so I can verify |state_|. |
255 message_loop_.RunUntilIdle(); | 255 message_loop_.RunUntilIdle(); |
256 EXPECT_TRUE(GoogleServiceAuthError::AuthErrorNone() == | 256 EXPECT_TRUE(GoogleServiceAuthError::AuthErrorNone() == |
257 state_.online_outcome().error()); | 257 state_.online_outcome().error()); |
258 } | 258 } |
259 | 259 |
260 } // namespace chromeos | 260 } // namespace chromeos |
OLD | NEW |