OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "chrome/browser/chromeos/cros/cros_library.h" | 9 #include "chrome/browser/chromeos/cros/cros_library.h" |
10 #include "chrome/browser/chromeos/cros/mock_library_loader.h" | 10 #include "chrome/browser/chromeos/cros/mock_library_loader.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 TestingProfile profile; | 125 TestingProfile profile; |
126 | 126 |
127 EXPECT_CALL(*(resolver_.get()), Resolve()) | 127 EXPECT_CALL(*(resolver_.get()), Resolve()) |
128 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 128 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
129 .RetiresOnSaturation(); | 129 .RetiresOnSaturation(); |
130 | 130 |
131 // This is how we inject fake URLFetcher objects, with a factory. | 131 // This is how we inject fake URLFetcher objects, with a factory. |
132 // This factory creates fake URLFetchers that Start() a fake fetch attempt | 132 // This factory creates fake URLFetchers that Start() a fake fetch attempt |
133 // and then come back on the IO thread saying they've been canceled. | 133 // and then come back on the IO thread saying they've been canceled. |
134 MockFactory<GotCanceledFetcher> factory; | 134 MockFactory<GotCanceledFetcher> factory; |
135 URLFetcher::set_factory(&factory); | |
136 | 135 |
137 attempt_->Initiate(&profile); | 136 attempt_->Initiate(&profile); |
138 BrowserThread::PostTask( | 137 BrowserThread::PostTask( |
139 BrowserThread::IO, FROM_HERE, | 138 BrowserThread::IO, FROM_HERE, |
140 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); | 139 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); |
141 | 140 |
142 MessageLoop::current()->Run(); | 141 MessageLoop::current()->Run(); |
143 | 142 |
144 EXPECT_TRUE(error == state_.online_outcome().error()); | 143 EXPECT_TRUE(error == state_.online_outcome().error()); |
145 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, | 144 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, |
146 state_.online_outcome().reason()); | 145 state_.online_outcome().reason()); |
147 URLFetcher::set_factory(NULL); | |
148 } | 146 } |
149 | 147 |
150 TEST_F(OnlineAttemptTest, LoginTimeout) { | 148 TEST_F(OnlineAttemptTest, LoginTimeout) { |
151 LoginFailure error(LoginFailure::LOGIN_TIMED_OUT); | 149 LoginFailure error(LoginFailure::LOGIN_TIMED_OUT); |
152 TestingProfile profile; | 150 TestingProfile profile; |
153 | 151 |
154 EXPECT_CALL(*(resolver_.get()), Resolve()) | 152 EXPECT_CALL(*(resolver_.get()), Resolve()) |
155 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 153 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
156 .RetiresOnSaturation(); | 154 .RetiresOnSaturation(); |
157 | 155 |
158 // This is how we inject fake URLFetcher objects, with a factory. | 156 // This is how we inject fake URLFetcher objects, with a factory. |
159 // This factory creates fake URLFetchers that Start() a fake fetch attempt | 157 // This factory creates fake URLFetchers that Start() a fake fetch attempt |
160 // and then come back on the IO thread saying they've been canceled. | 158 // and then come back on the IO thread saying they've been canceled. |
161 MockFactory<ExpectCanceledFetcher> factory; | 159 MockFactory<ExpectCanceledFetcher> factory; |
162 URLFetcher::set_factory(&factory); | |
163 | 160 |
164 attempt_->Initiate(&profile); | 161 attempt_->Initiate(&profile); |
165 BrowserThread::PostTask( | 162 BrowserThread::PostTask( |
166 BrowserThread::IO, FROM_HERE, | 163 BrowserThread::IO, FROM_HERE, |
167 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); | 164 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); |
168 | 165 |
169 // Post a task to cancel the login attempt. | 166 // Post a task to cancel the login attempt. |
170 CancelLogin(attempt_.get()); | 167 CancelLogin(attempt_.get()); |
171 | 168 |
172 MessageLoop::current()->Run(); | 169 MessageLoop::current()->Run(); |
173 | 170 |
174 EXPECT_EQ(LoginFailure::LOGIN_TIMED_OUT, state_.online_outcome().reason()); | 171 EXPECT_EQ(LoginFailure::LOGIN_TIMED_OUT, state_.online_outcome().reason()); |
175 URLFetcher::set_factory(NULL); | |
176 } | 172 } |
177 | 173 |
178 TEST_F(OnlineAttemptTest, HostedLoginRejected) { | 174 TEST_F(OnlineAttemptTest, HostedLoginRejected) { |
179 LoginFailure error( | 175 LoginFailure error( |
180 LoginFailure::FromNetworkAuthFailure( | 176 LoginFailure::FromNetworkAuthFailure( |
181 GoogleServiceAuthError( | 177 GoogleServiceAuthError( |
182 GoogleServiceAuthError::HOSTED_NOT_ALLOWED))); | 178 GoogleServiceAuthError::HOSTED_NOT_ALLOWED))); |
183 TestingProfile profile; | 179 TestingProfile profile; |
184 | 180 |
185 EXPECT_CALL(*(resolver_.get()), Resolve()) | 181 EXPECT_CALL(*(resolver_.get()), Resolve()) |
186 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 182 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
187 .RetiresOnSaturation(); | 183 .RetiresOnSaturation(); |
188 | 184 |
189 // This is how we inject fake URLFetcher objects, with a factory. | 185 // This is how we inject fake URLFetcher objects, with a factory. |
190 MockFactory<HostedFetcher> factory; | 186 MockFactory<HostedFetcher> factory; |
191 URLFetcher::set_factory(&factory); | |
192 | 187 |
193 TestAttemptState local_state("", "", "", "", "", true); | 188 TestAttemptState local_state("", "", "", "", "", true); |
194 attempt_ = new OnlineAttempt(&local_state, resolver_.get()); | 189 attempt_ = new OnlineAttempt(&local_state, resolver_.get()); |
195 attempt_->Initiate(&profile); | 190 attempt_->Initiate(&profile); |
196 BrowserThread::PostTask( | 191 BrowserThread::PostTask( |
197 BrowserThread::IO, FROM_HERE, | 192 BrowserThread::IO, FROM_HERE, |
198 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); | 193 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); |
199 | 194 |
200 MessageLoop::current()->Run(); | 195 MessageLoop::current()->Run(); |
201 | 196 |
202 EXPECT_EQ(error, local_state.online_outcome()); | 197 EXPECT_EQ(error, local_state.online_outcome()); |
203 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, | 198 EXPECT_EQ(LoginFailure::NETWORK_AUTH_FAILED, |
204 local_state.online_outcome().reason()); | 199 local_state.online_outcome().reason()); |
205 URLFetcher::set_factory(NULL); | |
206 } | 200 } |
207 | 201 |
208 TEST_F(OnlineAttemptTest, FullLogin) { | 202 TEST_F(OnlineAttemptTest, FullLogin) { |
209 TestingProfile profile; | 203 TestingProfile profile; |
210 | 204 |
211 EXPECT_CALL(*(resolver_.get()), Resolve()) | 205 EXPECT_CALL(*(resolver_.get()), Resolve()) |
212 .WillOnce(Invoke(OnlineAttemptTest::Quit)) | 206 .WillOnce(Invoke(OnlineAttemptTest::Quit)) |
213 .RetiresOnSaturation(); | 207 .RetiresOnSaturation(); |
214 | 208 |
215 // This is how we inject fake URLFetcher objects, with a factory. | 209 // This is how we inject fake URLFetcher objects, with a factory. |
216 MockFactory<SuccessFetcher> factory; | 210 MockFactory<SuccessFetcher> factory; |
217 URLFetcher::set_factory(&factory); | |
218 | 211 |
219 TestAttemptState local_state("", "", "", "", "", true); | 212 TestAttemptState local_state("", "", "", "", "", true); |
220 attempt_ = new OnlineAttempt(&local_state, resolver_.get()); | 213 attempt_ = new OnlineAttempt(&local_state, resolver_.get()); |
221 attempt_->Initiate(&profile); | 214 attempt_->Initiate(&profile); |
222 BrowserThread::PostTask( | 215 BrowserThread::PostTask( |
223 BrowserThread::IO, FROM_HERE, | 216 BrowserThread::IO, FROM_HERE, |
224 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); | 217 NewRunnableFunction(&OnlineAttemptTest::RunThreadTest)); |
225 | 218 |
226 MessageLoop::current()->Run(); | 219 MessageLoop::current()->Run(); |
227 | 220 |
228 EXPECT_EQ(LoginFailure::None(), local_state.online_outcome()); | 221 EXPECT_EQ(LoginFailure::None(), local_state.online_outcome()); |
229 URLFetcher::set_factory(NULL); | |
230 } | 222 } |
231 | 223 |
232 TEST_F(OnlineAttemptTest, LoginNetFailure) { | 224 TEST_F(OnlineAttemptTest, LoginNetFailure) { |
233 RunFailureTest( | 225 RunFailureTest( |
234 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET)); | 226 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET)); |
235 } | 227 } |
236 | 228 |
237 TEST_F(OnlineAttemptTest, LoginDenied) { | 229 TEST_F(OnlineAttemptTest, LoginDenied) { |
238 RunFailureTest( | 230 RunFailureTest( |
239 GoogleServiceAuthError(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); | 231 GoogleServiceAuthError(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 error)); | 267 error)); |
276 | 268 |
277 // Force IO thread to finish tasks so I can verify |state_|. | 269 // Force IO thread to finish tasks so I can verify |state_|. |
278 io_thread_.Stop(); | 270 io_thread_.Stop(); |
279 EXPECT_TRUE(GoogleServiceAuthError::None() == | 271 EXPECT_TRUE(GoogleServiceAuthError::None() == |
280 state_.online_outcome().error()); | 272 state_.online_outcome().error()); |
281 EXPECT_TRUE(GaiaAuthConsumer::ClientLoginResult() == state_.credentials()); | 273 EXPECT_TRUE(GaiaAuthConsumer::ClientLoginResult() == state_.credentials()); |
282 } | 274 } |
283 | 275 |
284 } // namespace chromeos | 276 } // namespace chromeos |
OLD | NEW |