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