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 // A complete set of unit tests for GaiaAuthFetcher. | 5 // A complete set of unit tests for GaiaAuthFetcher. |
6 // Originally ported from GoogleAuthenticator tests. | 6 // Originally ported from GoogleAuthenticator tests. |
7 | 7 |
8 #include "chrome/common/net/gaia/gaia_auth_fetcher_unittest.h" | 8 #include "chrome/common/net/gaia/gaia_auth_fetcher_unittest.h" |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
13 #include "base/stringprintf.h" | 13 #include "base/stringprintf.h" |
14 #include "chrome/common/net/gaia/gaia_auth_consumer.h" | 14 #include "chrome/common/net/gaia/gaia_auth_consumer.h" |
15 #include "chrome/common/net/gaia/gaia_auth_fetcher.h" | 15 #include "chrome/common/net/gaia/gaia_auth_fetcher.h" |
16 #include "chrome/common/net/gaia/gaia_urls.h" | 16 #include "chrome/common/net/gaia/gaia_urls.h" |
17 #include "chrome/common/net/gaia/google_service_auth_error.h" | 17 #include "chrome/common/net/gaia/google_service_auth_error.h" |
18 #include "chrome/common/net/http_return.h" | 18 #include "chrome/common/net/http_return.h" |
19 #include "chrome/test/base/testing_profile.h" | 19 #include "chrome/test/base/testing_profile.h" |
20 #include "content/common/net/url_fetcher.h" | 20 #include "content/common/net/url_fetcher.h" |
| 21 #include "content/public/common/url_fetcher_delegate.h" |
21 #include "content/test/test_url_fetcher_factory.h" | 22 #include "content/test/test_url_fetcher_factory.h" |
22 #include "googleurl/src/gurl.h" | 23 #include "googleurl/src/gurl.h" |
23 #include "net/base/load_flags.h" | 24 #include "net/base/load_flags.h" |
24 #include "net/base/net_errors.h" | 25 #include "net/base/net_errors.h" |
25 #include "net/url_request/url_request_status.h" | 26 #include "net/url_request/url_request_status.h" |
26 #include "testing/gmock/include/gmock/gmock.h" | 27 #include "testing/gmock/include/gmock/gmock.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 28 #include "testing/gtest/include/gtest/gtest.h" |
28 | 29 |
29 using ::testing::_; | 30 using ::testing::_; |
30 | 31 |
31 MockFetcher::MockFetcher(bool success, | 32 MockFetcher::MockFetcher(bool success, |
32 const GURL& url, | 33 const GURL& url, |
33 const std::string& results, | 34 const std::string& results, |
34 URLFetcher::RequestType request_type, | 35 URLFetcher::RequestType request_type, |
35 URLFetcher::Delegate* d) | 36 content::URLFetcherDelegate* d) |
36 : URLFetcher(url, request_type, d), | 37 : URLFetcher(url, request_type, d), |
37 success_(success), | |
38 url_(url), | 38 url_(url), |
39 results_(results) {} | 39 results_(results) { |
| 40 net::URLRequestStatus::Status code; |
| 41 |
| 42 if (success) { |
| 43 response_code_ = RC_REQUEST_OK; |
| 44 code = net::URLRequestStatus::SUCCESS; |
| 45 } else { |
| 46 response_code_ = RC_FORBIDDEN; |
| 47 code = net::URLRequestStatus::FAILED; |
| 48 } |
| 49 |
| 50 status_ = net::URLRequestStatus(code, 0); |
| 51 } |
| 52 |
| 53 MockFetcher::MockFetcher(const GURL& url, |
| 54 const net::URLRequestStatus& status, |
| 55 int response_code, |
| 56 const net::ResponseCookies& cookies, |
| 57 const std::string& results, |
| 58 URLFetcher::RequestType request_type, |
| 59 content::URLFetcherDelegate* d) |
| 60 : URLFetcher(url, request_type, d), |
| 61 url_(url), |
| 62 status_(status), |
| 63 response_code_(response_code), |
| 64 cookies_(cookies), |
| 65 results_(results) { |
| 66 } |
40 | 67 |
41 MockFetcher::~MockFetcher() {} | 68 MockFetcher::~MockFetcher() {} |
42 | 69 |
43 void MockFetcher::Start() { | 70 void MockFetcher::Start() { |
44 net::URLRequestStatus::Status code; | 71 delegate()->OnURLFetchComplete(this); |
45 int http_code; | 72 } |
46 if (success_) { | |
47 http_code = RC_REQUEST_OK; | |
48 code = net::URLRequestStatus::SUCCESS; | |
49 } else { | |
50 http_code = RC_FORBIDDEN; | |
51 code = net::URLRequestStatus::FAILED; | |
52 } | |
53 | 73 |
54 net::URLRequestStatus status(code, 0); | 74 const GURL& MockFetcher::url() const { |
55 delegate()->OnURLFetchComplete(NULL, | 75 return url_; |
56 url_, | 76 } |
57 status, | 77 |
58 http_code, | 78 const net::URLRequestStatus& MockFetcher::status() const { |
59 net::ResponseCookies(), | 79 return status_; |
60 results_); | 80 } |
| 81 |
| 82 int MockFetcher::response_code() const { |
| 83 return response_code_; |
| 84 } |
| 85 |
| 86 const net::ResponseCookies& MockFetcher::cookies() const { |
| 87 return cookies_; |
| 88 } |
| 89 |
| 90 bool MockFetcher::GetResponseAsString(std::string* out_response_string) const { |
| 91 *out_response_string = results_; |
| 92 return true; |
61 } | 93 } |
62 | 94 |
63 | 95 |
64 class GaiaAuthFetcherTest : public testing::Test { | 96 class GaiaAuthFetcherTest : public testing::Test { |
65 public: | 97 public: |
66 GaiaAuthFetcherTest() | 98 GaiaAuthFetcherTest() |
67 : client_login_source_(GaiaUrls::GetInstance()->client_login_url()), | 99 : client_login_source_(GaiaUrls::GetInstance()->client_login_url()), |
68 issue_auth_token_source_( | 100 issue_auth_token_source_( |
69 GaiaUrls::GetInstance()->issue_auth_token_url()), | 101 GaiaUrls::GetInstance()->issue_auth_token_url()), |
70 token_auth_source_(GaiaUrls::GetInstance()->token_auth_url()), | 102 token_auth_source_(GaiaUrls::GetInstance()->token_auth_url()), |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 GoogleServiceAuthError expected_error = | 198 GoogleServiceAuthError expected_error = |
167 GoogleServiceAuthError::FromConnectionError(error_no); | 199 GoogleServiceAuthError::FromConnectionError(error_no); |
168 | 200 |
169 MockGaiaConsumer consumer; | 201 MockGaiaConsumer consumer; |
170 EXPECT_CALL(consumer, OnClientLoginFailure(expected_error)) | 202 EXPECT_CALL(consumer, OnClientLoginFailure(expected_error)) |
171 .Times(1); | 203 .Times(1); |
172 | 204 |
173 GaiaAuthFetcher auth(&consumer, std::string(), | 205 GaiaAuthFetcher auth(&consumer, std::string(), |
174 profile_.GetRequestContext()); | 206 profile_.GetRequestContext()); |
175 | 207 |
176 auth.OnURLFetchComplete(NULL, | 208 MockFetcher mock_fetcher( |
177 client_login_source_, | 209 client_login_source_, status, 0, net::ResponseCookies(), std::string(), |
178 status, | 210 URLFetcher::GET, &auth); |
179 0, | 211 auth.OnURLFetchComplete(&mock_fetcher); |
180 cookies_, | |
181 std::string()); | |
182 } | 212 } |
183 | 213 |
184 TEST_F(GaiaAuthFetcherTest, TokenNetFailure) { | 214 TEST_F(GaiaAuthFetcherTest, TokenNetFailure) { |
185 int error_no = net::ERR_CONNECTION_RESET; | 215 int error_no = net::ERR_CONNECTION_RESET; |
186 net::URLRequestStatus status(net::URLRequestStatus::FAILED, error_no); | 216 net::URLRequestStatus status(net::URLRequestStatus::FAILED, error_no); |
187 | 217 |
188 GoogleServiceAuthError expected_error = | 218 GoogleServiceAuthError expected_error = |
189 GoogleServiceAuthError::FromConnectionError(error_no); | 219 GoogleServiceAuthError::FromConnectionError(error_no); |
190 | 220 |
191 MockGaiaConsumer consumer; | 221 MockGaiaConsumer consumer; |
192 EXPECT_CALL(consumer, OnIssueAuthTokenFailure(_, expected_error)) | 222 EXPECT_CALL(consumer, OnIssueAuthTokenFailure(_, expected_error)) |
193 .Times(1); | 223 .Times(1); |
194 | 224 |
195 GaiaAuthFetcher auth(&consumer, std::string(), | 225 GaiaAuthFetcher auth(&consumer, std::string(), |
196 profile_.GetRequestContext()); | 226 profile_.GetRequestContext()); |
197 | 227 |
198 auth.OnURLFetchComplete(NULL, | 228 MockFetcher mock_fetcher( |
199 issue_auth_token_source_, | 229 issue_auth_token_source_, status, 0, cookies_, std::string(), |
200 status, | 230 URLFetcher::GET, &auth); |
201 0, | 231 auth.OnURLFetchComplete(&mock_fetcher); |
202 cookies_, | |
203 std::string()); | |
204 } | 232 } |
205 | 233 |
206 | 234 |
207 TEST_F(GaiaAuthFetcherTest, LoginDenied) { | 235 TEST_F(GaiaAuthFetcherTest, LoginDenied) { |
208 std::string data("Error=BadAuthentication"); | 236 std::string data("Error=BadAuthentication"); |
209 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 237 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
210 | 238 |
211 GoogleServiceAuthError expected_error( | 239 GoogleServiceAuthError expected_error( |
212 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 240 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
213 | 241 |
214 MockGaiaConsumer consumer; | 242 MockGaiaConsumer consumer; |
215 EXPECT_CALL(consumer, OnClientLoginFailure(expected_error)) | 243 EXPECT_CALL(consumer, OnClientLoginFailure(expected_error)) |
216 .Times(1); | 244 .Times(1); |
217 | 245 |
218 GaiaAuthFetcher auth(&consumer, std::string(), | 246 GaiaAuthFetcher auth(&consumer, std::string(), |
219 profile_.GetRequestContext()); | 247 profile_.GetRequestContext()); |
220 auth.OnURLFetchComplete(NULL, | 248 |
221 client_login_source_, | 249 MockFetcher mock_fetcher( |
222 status, | 250 client_login_source_, status, RC_FORBIDDEN, cookies_, data, |
223 RC_FORBIDDEN, | 251 URLFetcher::GET, &auth); |
224 cookies_, | 252 auth.OnURLFetchComplete(&mock_fetcher); |
225 data); | |
226 } | 253 } |
227 | 254 |
228 TEST_F(GaiaAuthFetcherTest, ParseRequest) { | 255 TEST_F(GaiaAuthFetcherTest, ParseRequest) { |
229 RunParsingTest("SID=sid\nLSID=lsid\nAuth=auth\n", "sid", "lsid", "auth"); | 256 RunParsingTest("SID=sid\nLSID=lsid\nAuth=auth\n", "sid", "lsid", "auth"); |
230 RunParsingTest("LSID=lsid\nSID=sid\nAuth=auth\n", "sid", "lsid", "auth"); | 257 RunParsingTest("LSID=lsid\nSID=sid\nAuth=auth\n", "sid", "lsid", "auth"); |
231 RunParsingTest("SID=sid\nLSID=lsid\nAuth=auth", "sid", "lsid", "auth"); | 258 RunParsingTest("SID=sid\nLSID=lsid\nAuth=auth", "sid", "lsid", "auth"); |
232 RunParsingTest("SID=sid\nAuth=auth\n", "sid", "", "auth"); | 259 RunParsingTest("SID=sid\nAuth=auth\n", "sid", "", "auth"); |
233 RunParsingTest("LSID=lsid\nAuth=auth\n", "", "lsid", "auth"); | 260 RunParsingTest("LSID=lsid\nAuth=auth\n", "", "lsid", "auth"); |
234 RunParsingTest("\nAuth=auth\n", "", "", "auth"); | 261 RunParsingTest("\nAuth=auth\n", "", "", "auth"); |
235 RunParsingTest("SID=sid", "sid", "", ""); | 262 RunParsingTest("SID=sid", "sid", "", ""); |
(...skipping 24 matching lines...) Expand all Loading... |
260 result.token = "auth"; | 287 result.token = "auth"; |
261 result.data = data; | 288 result.data = data; |
262 | 289 |
263 MockGaiaConsumer consumer; | 290 MockGaiaConsumer consumer; |
264 EXPECT_CALL(consumer, OnClientLoginSuccess(result)) | 291 EXPECT_CALL(consumer, OnClientLoginSuccess(result)) |
265 .Times(1); | 292 .Times(1); |
266 | 293 |
267 GaiaAuthFetcher auth(&consumer, std::string(), | 294 GaiaAuthFetcher auth(&consumer, std::string(), |
268 profile_.GetRequestContext()); | 295 profile_.GetRequestContext()); |
269 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 296 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
270 auth.OnURLFetchComplete(NULL, | 297 MockFetcher mock_fetcher( |
271 client_login_source_, | 298 client_login_source_, status, RC_REQUEST_OK, cookies_, data, |
272 status, | 299 URLFetcher::GET, &auth); |
273 RC_REQUEST_OK, | 300 auth.OnURLFetchComplete(&mock_fetcher); |
274 cookies_, | |
275 data); | |
276 } | 301 } |
277 | 302 |
278 TEST_F(GaiaAuthFetcherTest, WorkingIssueAuthToken) { | 303 TEST_F(GaiaAuthFetcherTest, WorkingIssueAuthToken) { |
279 MockGaiaConsumer consumer; | 304 MockGaiaConsumer consumer; |
280 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess(_, "token")) | 305 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess(_, "token")) |
281 .Times(1); | 306 .Times(1); |
282 | 307 |
283 GaiaAuthFetcher auth(&consumer, std::string(), | 308 GaiaAuthFetcher auth(&consumer, std::string(), |
284 profile_.GetRequestContext()); | 309 profile_.GetRequestContext()); |
285 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 310 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
286 auth.OnURLFetchComplete(NULL, | 311 MockFetcher mock_fetcher( |
287 issue_auth_token_source_, | 312 issue_auth_token_source_, status, RC_REQUEST_OK, cookies_, "token", |
288 status, | 313 URLFetcher::GET, &auth); |
289 RC_REQUEST_OK, | 314 auth.OnURLFetchComplete(&mock_fetcher); |
290 cookies_, | |
291 "token"); | |
292 } | 315 } |
293 | 316 |
294 TEST_F(GaiaAuthFetcherTest, CheckTwoFactorResponse) { | 317 TEST_F(GaiaAuthFetcherTest, CheckTwoFactorResponse) { |
295 std::string response = | 318 std::string response = |
296 base::StringPrintf("Error=BadAuthentication\n%s\n", | 319 base::StringPrintf("Error=BadAuthentication\n%s\n", |
297 GaiaAuthFetcher::kSecondFactor); | 320 GaiaAuthFetcher::kSecondFactor); |
298 EXPECT_TRUE(GaiaAuthFetcher::IsSecondFactorSuccess(response)); | 321 EXPECT_TRUE(GaiaAuthFetcher::IsSecondFactorSuccess(response)); |
299 } | 322 } |
300 | 323 |
301 TEST_F(GaiaAuthFetcherTest, CheckNormalErrorCode) { | 324 TEST_F(GaiaAuthFetcherTest, CheckNormalErrorCode) { |
302 std::string response = "Error=BadAuthentication\n"; | 325 std::string response = "Error=BadAuthentication\n"; |
303 EXPECT_FALSE(GaiaAuthFetcher::IsSecondFactorSuccess(response)); | 326 EXPECT_FALSE(GaiaAuthFetcher::IsSecondFactorSuccess(response)); |
304 } | 327 } |
305 | 328 |
306 TEST_F(GaiaAuthFetcherTest, TwoFactorLogin) { | 329 TEST_F(GaiaAuthFetcherTest, TwoFactorLogin) { |
307 std::string response = base::StringPrintf("Error=BadAuthentication\n%s\n", | 330 std::string response = base::StringPrintf("Error=BadAuthentication\n%s\n", |
308 GaiaAuthFetcher::kSecondFactor); | 331 GaiaAuthFetcher::kSecondFactor); |
309 | 332 |
310 GoogleServiceAuthError error = | 333 GoogleServiceAuthError error = |
311 GoogleServiceAuthError(GoogleServiceAuthError::TWO_FACTOR); | 334 GoogleServiceAuthError(GoogleServiceAuthError::TWO_FACTOR); |
312 | 335 |
313 MockGaiaConsumer consumer; | 336 MockGaiaConsumer consumer; |
314 EXPECT_CALL(consumer, OnClientLoginFailure(error)) | 337 EXPECT_CALL(consumer, OnClientLoginFailure(error)) |
315 .Times(1); | 338 .Times(1); |
316 | 339 |
317 GaiaAuthFetcher auth(&consumer, std::string(), | 340 GaiaAuthFetcher auth(&consumer, std::string(), |
318 profile_.GetRequestContext()); | 341 profile_.GetRequestContext()); |
319 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 342 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
320 auth.OnURLFetchComplete(NULL, | 343 MockFetcher mock_fetcher( |
321 client_login_source_, | 344 client_login_source_, status, RC_FORBIDDEN, cookies_, response, |
322 status, | 345 URLFetcher::GET, &auth); |
323 RC_FORBIDDEN, | 346 auth.OnURLFetchComplete(&mock_fetcher); |
324 cookies_, | |
325 response); | |
326 } | 347 } |
327 | 348 |
328 TEST_F(GaiaAuthFetcherTest, CaptchaParse) { | 349 TEST_F(GaiaAuthFetcherTest, CaptchaParse) { |
329 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 350 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
330 std::string data = "Url=http://www.google.com/login/captcha\n" | 351 std::string data = "Url=http://www.google.com/login/captcha\n" |
331 "Error=CaptchaRequired\n" | 352 "Error=CaptchaRequired\n" |
332 "CaptchaToken=CCTOKEN\n" | 353 "CaptchaToken=CCTOKEN\n" |
333 "CaptchaUrl=Captcha?ctoken=CCTOKEN\n"; | 354 "CaptchaUrl=Captcha?ctoken=CCTOKEN\n"; |
334 GoogleServiceAuthError error = | 355 GoogleServiceAuthError error = |
335 GaiaAuthFetcher::GenerateAuthError(data, status); | 356 GaiaAuthFetcher::GenerateAuthError(data, status); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 GaiaAuthFetcher auth(&consumer, std::string(), | 487 GaiaAuthFetcher auth(&consumer, std::string(), |
467 profile_.GetRequestContext()); | 488 profile_.GetRequestContext()); |
468 auth.StartClientLogin("username", | 489 auth.StartClientLogin("username", |
469 "password", | 490 "password", |
470 "service", | 491 "service", |
471 std::string(), | 492 std::string(), |
472 std::string(), | 493 std::string(), |
473 GaiaAuthFetcher::HostedAccountsAllowed); | 494 GaiaAuthFetcher::HostedAccountsAllowed); |
474 | 495 |
475 EXPECT_TRUE(auth.HasPendingFetch()); | 496 EXPECT_TRUE(auth.HasPendingFetch()); |
476 auth.OnURLFetchComplete( | 497 MockFetcher mock_fetcher( |
477 NULL, | |
478 client_login_source_, | 498 client_login_source_, |
479 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 499 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
480 RC_REQUEST_OK, | 500 RC_REQUEST_OK, cookies_, "SID=sid\nLSID=lsid\nAuth=auth\n", |
481 cookies_, | 501 URLFetcher::GET, &auth); |
482 "SID=sid\nLSID=lsid\nAuth=auth\n"); | 502 auth.OnURLFetchComplete(&mock_fetcher); |
483 EXPECT_FALSE(auth.HasPendingFetch()); | 503 EXPECT_FALSE(auth.HasPendingFetch()); |
484 } | 504 } |
485 | 505 |
486 TEST_F(GaiaAuthFetcherTest, FullTokenSuccess) { | 506 TEST_F(GaiaAuthFetcherTest, FullTokenSuccess) { |
487 MockGaiaConsumer consumer; | 507 MockGaiaConsumer consumer; |
488 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess("service", "token")) | 508 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess("service", "token")) |
489 .Times(1); | 509 .Times(1); |
490 | 510 |
491 TestingProfile profile; | 511 TestingProfile profile; |
492 | 512 |
493 TestURLFetcherFactory factory; | 513 TestURLFetcherFactory factory; |
494 GaiaAuthFetcher auth(&consumer, std::string(), | 514 GaiaAuthFetcher auth(&consumer, std::string(), |
495 profile_.GetRequestContext()); | 515 profile_.GetRequestContext()); |
496 auth.StartIssueAuthToken("sid", "lsid", "service"); | 516 auth.StartIssueAuthToken("sid", "lsid", "service"); |
497 | 517 |
498 EXPECT_TRUE(auth.HasPendingFetch()); | 518 EXPECT_TRUE(auth.HasPendingFetch()); |
499 auth.OnURLFetchComplete( | 519 MockFetcher mock_fetcher( |
500 NULL, | |
501 issue_auth_token_source_, | 520 issue_auth_token_source_, |
502 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 521 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
503 RC_REQUEST_OK, | 522 RC_REQUEST_OK, cookies_, "token", |
504 cookies_, | 523 URLFetcher::GET, &auth); |
505 "token"); | 524 auth.OnURLFetchComplete(&mock_fetcher); |
506 EXPECT_FALSE(auth.HasPendingFetch()); | 525 EXPECT_FALSE(auth.HasPendingFetch()); |
507 } | 526 } |
508 | 527 |
509 TEST_F(GaiaAuthFetcherTest, FullTokenFailure) { | 528 TEST_F(GaiaAuthFetcherTest, FullTokenFailure) { |
510 MockGaiaConsumer consumer; | 529 MockGaiaConsumer consumer; |
511 EXPECT_CALL(consumer, OnIssueAuthTokenFailure("service", _)) | 530 EXPECT_CALL(consumer, OnIssueAuthTokenFailure("service", _)) |
512 .Times(1); | 531 .Times(1); |
513 | 532 |
514 TestingProfile profile; | 533 TestingProfile profile; |
515 TestURLFetcherFactory factory; | 534 TestURLFetcherFactory factory; |
516 | 535 |
517 GaiaAuthFetcher auth(&consumer, std::string(), | 536 GaiaAuthFetcher auth(&consumer, std::string(), |
518 profile_.GetRequestContext()); | 537 profile_.GetRequestContext()); |
519 auth.StartIssueAuthToken("sid", "lsid", "service"); | 538 auth.StartIssueAuthToken("sid", "lsid", "service"); |
520 | 539 |
521 EXPECT_TRUE(auth.HasPendingFetch()); | 540 EXPECT_TRUE(auth.HasPendingFetch()); |
522 auth.OnURLFetchComplete( | 541 MockFetcher mock_fetcher( |
523 NULL, | |
524 issue_auth_token_source_, | 542 issue_auth_token_source_, |
525 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 543 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
526 RC_FORBIDDEN, | 544 RC_FORBIDDEN, cookies_, "", URLFetcher::GET, &auth); |
527 cookies_, | 545 auth.OnURLFetchComplete(&mock_fetcher); |
528 ""); | |
529 EXPECT_FALSE(auth.HasPendingFetch()); | 546 EXPECT_FALSE(auth.HasPendingFetch()); |
530 } | 547 } |
531 | 548 |
532 TEST_F(GaiaAuthFetcherTest, TokenAuthSuccess) { | 549 TEST_F(GaiaAuthFetcherTest, TokenAuthSuccess) { |
533 MockGaiaConsumer consumer; | 550 MockGaiaConsumer consumer; |
534 EXPECT_CALL(consumer, OnTokenAuthSuccess("<html></html>")) | 551 EXPECT_CALL(consumer, OnTokenAuthSuccess("<html></html>")) |
535 .Times(1); | 552 .Times(1); |
536 | 553 |
537 TestingProfile profile; | 554 TestingProfile profile; |
538 TestURLFetcherFactory factory; | 555 TestURLFetcherFactory factory; |
539 | 556 |
540 GaiaAuthFetcher auth(&consumer, std::string(), | 557 GaiaAuthFetcher auth(&consumer, std::string(), |
541 profile_.GetRequestContext()); | 558 profile_.GetRequestContext()); |
542 auth.StartTokenAuth("myubertoken"); | 559 auth.StartTokenAuth("myubertoken"); |
543 | 560 |
544 EXPECT_TRUE(auth.HasPendingFetch()); | 561 EXPECT_TRUE(auth.HasPendingFetch()); |
545 auth.OnURLFetchComplete( | 562 MockFetcher mock_fetcher( |
546 NULL, | |
547 token_auth_source_, | 563 token_auth_source_, |
548 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 564 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
549 RC_REQUEST_OK, | 565 RC_REQUEST_OK, cookies_, "<html></html>", URLFetcher::GET, &auth); |
550 cookies_, | 566 auth.OnURLFetchComplete(&mock_fetcher); |
551 "<html></html>"); | |
552 EXPECT_FALSE(auth.HasPendingFetch()); | 567 EXPECT_FALSE(auth.HasPendingFetch()); |
553 } | 568 } |
554 | 569 |
555 TEST_F(GaiaAuthFetcherTest, TokenAuthUnauthorizedFailure) { | 570 TEST_F(GaiaAuthFetcherTest, TokenAuthUnauthorizedFailure) { |
556 MockGaiaConsumer consumer; | 571 MockGaiaConsumer consumer; |
557 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) | 572 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) |
558 .Times(1); | 573 .Times(1); |
559 | 574 |
560 TestingProfile profile; | 575 TestingProfile profile; |
561 TestURLFetcherFactory factory; | 576 TestURLFetcherFactory factory; |
562 | 577 |
563 GaiaAuthFetcher auth(&consumer, std::string(), | 578 GaiaAuthFetcher auth(&consumer, std::string(), |
564 profile_.GetRequestContext()); | 579 profile_.GetRequestContext()); |
565 auth.StartTokenAuth("badubertoken"); | 580 auth.StartTokenAuth("badubertoken"); |
566 | 581 |
567 EXPECT_TRUE(auth.HasPendingFetch()); | 582 EXPECT_TRUE(auth.HasPendingFetch()); |
568 auth.OnURLFetchComplete( | 583 MockFetcher mock_fetcher( |
569 NULL, | |
570 token_auth_source_, | 584 token_auth_source_, |
571 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 585 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
572 RC_UNAUTHORIZED, | 586 RC_UNAUTHORIZED, cookies_, "", URLFetcher::GET, &auth); |
573 cookies_, | 587 auth.OnURLFetchComplete(&mock_fetcher); |
574 ""); | |
575 EXPECT_FALSE(auth.HasPendingFetch()); | 588 EXPECT_FALSE(auth.HasPendingFetch()); |
576 } | 589 } |
577 | 590 |
578 TEST_F(GaiaAuthFetcherTest, TokenAuthNetFailure) { | 591 TEST_F(GaiaAuthFetcherTest, TokenAuthNetFailure) { |
579 MockGaiaConsumer consumer; | 592 MockGaiaConsumer consumer; |
580 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) | 593 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) |
581 .Times(1); | 594 .Times(1); |
582 | 595 |
583 TestingProfile profile; | 596 TestingProfile profile; |
584 TestURLFetcherFactory factory; | 597 TestURLFetcherFactory factory; |
585 | 598 |
586 GaiaAuthFetcher auth(&consumer, std::string(), | 599 GaiaAuthFetcher auth(&consumer, std::string(), |
587 profile_.GetRequestContext()); | 600 profile_.GetRequestContext()); |
588 auth.StartTokenAuth("badubertoken"); | 601 auth.StartTokenAuth("badubertoken"); |
589 | 602 |
590 EXPECT_TRUE(auth.HasPendingFetch()); | 603 EXPECT_TRUE(auth.HasPendingFetch()); |
591 auth.OnURLFetchComplete( | 604 MockFetcher mock_fetcher( |
592 NULL, | |
593 token_auth_source_, | 605 token_auth_source_, |
594 net::URLRequestStatus(net::URLRequestStatus::FAILED, 0), | 606 net::URLRequestStatus(net::URLRequestStatus::FAILED, 0), |
595 RC_REQUEST_OK, | 607 RC_REQUEST_OK, cookies_, "", URLFetcher::GET, &auth); |
596 cookies_, | 608 auth.OnURLFetchComplete(&mock_fetcher); |
597 ""); | |
598 EXPECT_FALSE(auth.HasPendingFetch()); | 609 EXPECT_FALSE(auth.HasPendingFetch()); |
599 } | 610 } |
600 | 611 |
601 TEST_F(GaiaAuthFetcherTest, MergeSessionSuccess) { | 612 TEST_F(GaiaAuthFetcherTest, MergeSessionSuccess) { |
602 MockGaiaConsumer consumer; | 613 MockGaiaConsumer consumer; |
603 EXPECT_CALL(consumer, OnMergeSessionSuccess("<html></html>")) | 614 EXPECT_CALL(consumer, OnMergeSessionSuccess("<html></html>")) |
604 .Times(1); | 615 .Times(1); |
605 | 616 |
606 TestingProfile profile; | 617 TestingProfile profile; |
607 TestURLFetcherFactory factory; | 618 TestURLFetcherFactory factory; |
608 | 619 |
609 GaiaAuthFetcher auth(&consumer, std::string(), | 620 GaiaAuthFetcher auth(&consumer, std::string(), |
610 profile_.GetRequestContext()); | 621 profile_.GetRequestContext()); |
611 auth.StartMergeSession("myubertoken"); | 622 auth.StartMergeSession("myubertoken"); |
612 | 623 |
613 EXPECT_TRUE(auth.HasPendingFetch()); | 624 EXPECT_TRUE(auth.HasPendingFetch()); |
614 auth.OnURLFetchComplete( | 625 MockFetcher mock_fetcher( |
615 NULL, | |
616 merge_session_source_, | 626 merge_session_source_, |
617 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 627 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
618 RC_REQUEST_OK, | 628 RC_REQUEST_OK, cookies_, "<html></html>", URLFetcher::GET, &auth); |
619 cookies_, | 629 auth.OnURLFetchComplete(&mock_fetcher); |
620 "<html></html>"); | |
621 EXPECT_FALSE(auth.HasPendingFetch()); | 630 EXPECT_FALSE(auth.HasPendingFetch()); |
622 } | 631 } |
623 | 632 |
624 TEST_F(GaiaAuthFetcherTest, MergeSessionSuccessRedirect) { | 633 TEST_F(GaiaAuthFetcherTest, MergeSessionSuccessRedirect) { |
625 MockGaiaConsumer consumer; | 634 MockGaiaConsumer consumer; |
626 EXPECT_CALL(consumer, OnMergeSessionSuccess("<html></html>")) | 635 EXPECT_CALL(consumer, OnMergeSessionSuccess("<html></html>")) |
627 .Times(1); | 636 .Times(1); |
628 | 637 |
629 TestingProfile profile; | 638 TestingProfile profile; |
630 TestURLFetcherFactory factory; | 639 TestURLFetcherFactory factory; |
631 | 640 |
632 GaiaAuthFetcher auth(&consumer, std::string(), | 641 GaiaAuthFetcher auth(&consumer, std::string(), |
633 profile_.GetRequestContext()); | 642 profile_.GetRequestContext()); |
634 auth.StartMergeSession("myubertoken"); | 643 auth.StartMergeSession("myubertoken"); |
635 | 644 |
636 // Make sure the fetcher created has the expected flags. Set its url() | 645 // Make sure the fetcher created has the expected flags. Set its url() |
637 // properties to reflect a redirect. | 646 // properties to reflect a redirect. |
638 TestURLFetcher* test_fetcher = factory.GetFetcherByID(0); | 647 TestURLFetcher* test_fetcher = factory.GetFetcherByID(0); |
639 EXPECT_TRUE(test_fetcher != NULL); | 648 EXPECT_TRUE(test_fetcher != NULL); |
640 EXPECT_TRUE(test_fetcher->load_flags() == net::LOAD_NORMAL); | 649 EXPECT_TRUE(test_fetcher->load_flags() == net::LOAD_NORMAL); |
641 EXPECT_TRUE(auth.HasPendingFetch()); | 650 EXPECT_TRUE(auth.HasPendingFetch()); |
642 | 651 |
643 GURL final_url("http://www.google.com/CheckCookie"); | 652 GURL final_url("http://www.google.com/CheckCookie"); |
644 test_fetcher->set_url(final_url); | 653 test_fetcher->set_url(final_url); |
| 654 test_fetcher->set_status( |
| 655 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0)); |
| 656 test_fetcher->set_response_code(RC_REQUEST_OK); |
| 657 test_fetcher->set_cookies(cookies_); |
| 658 test_fetcher->SetResponseString("<html></html>"); |
645 | 659 |
646 auth.OnURLFetchComplete( | 660 auth.OnURLFetchComplete(test_fetcher); |
647 test_fetcher, | |
648 test_fetcher->url(), | |
649 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | |
650 RC_REQUEST_OK, | |
651 cookies_, | |
652 "<html></html>"); | |
653 EXPECT_FALSE(auth.HasPendingFetch()); | 661 EXPECT_FALSE(auth.HasPendingFetch()); |
654 } | 662 } |
OLD | NEW |