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/testing_profile.h" | 19 #include "chrome/test/testing_profile.h" |
20 #include "content/common/test_url_fetcher_factory.h" | |
21 #include "content/common/url_fetcher.h" | 20 #include "content/common/url_fetcher.h" |
| 21 #include "content/test/test_url_fetcher_factory.h" |
22 #include "googleurl/src/gurl.h" | 22 #include "googleurl/src/gurl.h" |
23 #include "net/base/net_errors.h" | 23 #include "net/base/net_errors.h" |
24 #include "net/url_request/url_request_status.h" | 24 #include "net/url_request/url_request_status.h" |
25 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
27 | 27 |
28 using ::testing::_; | 28 using ::testing::_; |
29 | 29 |
30 MockFetcher::MockFetcher(bool success, | 30 MockFetcher::MockFetcher(bool success, |
31 const GURL& url, | 31 const GURL& url, |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 } | 379 } |
380 | 380 |
381 TEST_F(GaiaAuthFetcherTest, FullLogin) { | 381 TEST_F(GaiaAuthFetcherTest, FullLogin) { |
382 MockGaiaConsumer consumer; | 382 MockGaiaConsumer consumer; |
383 EXPECT_CALL(consumer, OnClientLoginSuccess(_)) | 383 EXPECT_CALL(consumer, OnClientLoginSuccess(_)) |
384 .Times(1); | 384 .Times(1); |
385 | 385 |
386 TestingProfile profile; | 386 TestingProfile profile; |
387 | 387 |
388 MockFactory<MockFetcher> factory; | 388 MockFactory<MockFetcher> factory; |
389 URLFetcher::set_factory(&factory); | |
390 | 389 |
391 GaiaAuthFetcher auth(&consumer, std::string(), | 390 GaiaAuthFetcher auth(&consumer, std::string(), |
392 profile_.GetRequestContext()); | 391 profile_.GetRequestContext()); |
393 auth.StartClientLogin("username", | 392 auth.StartClientLogin("username", |
394 "password", | 393 "password", |
395 "service", | 394 "service", |
396 std::string(), | 395 std::string(), |
397 std::string(), | 396 std::string(), |
398 GaiaAuthFetcher::HostedAccountsAllowed); | 397 GaiaAuthFetcher::HostedAccountsAllowed); |
399 | |
400 URLFetcher::set_factory(NULL); | |
401 } | 398 } |
402 | 399 |
403 TEST_F(GaiaAuthFetcherTest, FullLoginFailure) { | 400 TEST_F(GaiaAuthFetcherTest, FullLoginFailure) { |
404 MockGaiaConsumer consumer; | 401 MockGaiaConsumer consumer; |
405 EXPECT_CALL(consumer, OnClientLoginFailure(_)) | 402 EXPECT_CALL(consumer, OnClientLoginFailure(_)) |
406 .Times(1); | 403 .Times(1); |
407 | 404 |
408 TestingProfile profile; | 405 TestingProfile profile; |
409 | 406 |
410 MockFactory<MockFetcher> factory; | 407 MockFactory<MockFetcher> factory; |
411 URLFetcher::set_factory(&factory); | |
412 factory.set_success(false); | 408 factory.set_success(false); |
413 | 409 |
414 GaiaAuthFetcher auth(&consumer, std::string(), | 410 GaiaAuthFetcher auth(&consumer, std::string(), |
415 profile_.GetRequestContext()); | 411 profile_.GetRequestContext()); |
416 auth.StartClientLogin("username", | 412 auth.StartClientLogin("username", |
417 "password", | 413 "password", |
418 "service", | 414 "service", |
419 std::string(), | 415 std::string(), |
420 std::string(), | 416 std::string(), |
421 GaiaAuthFetcher::HostedAccountsAllowed); | 417 GaiaAuthFetcher::HostedAccountsAllowed); |
422 | |
423 URLFetcher::set_factory(NULL); | |
424 } | 418 } |
425 | 419 |
426 TEST_F(GaiaAuthFetcherTest, ClientFetchPending) { | 420 TEST_F(GaiaAuthFetcherTest, ClientFetchPending) { |
427 MockGaiaConsumer consumer; | 421 MockGaiaConsumer consumer; |
428 EXPECT_CALL(consumer, OnClientLoginSuccess(_)) | 422 EXPECT_CALL(consumer, OnClientLoginSuccess(_)) |
429 .Times(1); | 423 .Times(1); |
430 | 424 |
431 TestingProfile profile; | 425 TestingProfile profile; |
432 TestURLFetcherFactory factory; | 426 TestURLFetcherFactory factory; |
433 URLFetcher::set_factory(&factory); | |
434 | 427 |
435 GaiaAuthFetcher auth(&consumer, std::string(), | 428 GaiaAuthFetcher auth(&consumer, std::string(), |
436 profile_.GetRequestContext()); | 429 profile_.GetRequestContext()); |
437 auth.StartClientLogin("username", | 430 auth.StartClientLogin("username", |
438 "password", | 431 "password", |
439 "service", | 432 "service", |
440 std::string(), | 433 std::string(), |
441 std::string(), | 434 std::string(), |
442 GaiaAuthFetcher::HostedAccountsAllowed); | 435 GaiaAuthFetcher::HostedAccountsAllowed); |
443 | 436 |
444 URLFetcher::set_factory(NULL); | |
445 EXPECT_TRUE(auth.HasPendingFetch()); | 437 EXPECT_TRUE(auth.HasPendingFetch()); |
446 auth.OnURLFetchComplete( | 438 auth.OnURLFetchComplete( |
447 NULL, | 439 NULL, |
448 client_login_source_, | 440 client_login_source_, |
449 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 441 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
450 RC_REQUEST_OK, | 442 RC_REQUEST_OK, |
451 cookies_, | 443 cookies_, |
452 "SID=sid\nLSID=lsid\nAuth=auth\n"); | 444 "SID=sid\nLSID=lsid\nAuth=auth\n"); |
453 EXPECT_FALSE(auth.HasPendingFetch()); | 445 EXPECT_FALSE(auth.HasPendingFetch()); |
454 } | 446 } |
455 | 447 |
456 TEST_F(GaiaAuthFetcherTest, FullTokenSuccess) { | 448 TEST_F(GaiaAuthFetcherTest, FullTokenSuccess) { |
457 MockGaiaConsumer consumer; | 449 MockGaiaConsumer consumer; |
458 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess("service", "token")) | 450 EXPECT_CALL(consumer, OnIssueAuthTokenSuccess("service", "token")) |
459 .Times(1); | 451 .Times(1); |
460 | 452 |
461 TestingProfile profile; | 453 TestingProfile profile; |
| 454 |
462 TestURLFetcherFactory factory; | 455 TestURLFetcherFactory factory; |
463 URLFetcher::set_factory(&factory); | |
464 | |
465 GaiaAuthFetcher auth(&consumer, std::string(), | 456 GaiaAuthFetcher auth(&consumer, std::string(), |
466 profile_.GetRequestContext()); | 457 profile_.GetRequestContext()); |
467 auth.StartIssueAuthToken("sid", "lsid", "service"); | 458 auth.StartIssueAuthToken("sid", "lsid", "service"); |
468 | 459 |
469 URLFetcher::set_factory(NULL); | |
470 EXPECT_TRUE(auth.HasPendingFetch()); | 460 EXPECT_TRUE(auth.HasPendingFetch()); |
471 auth.OnURLFetchComplete( | 461 auth.OnURLFetchComplete( |
472 NULL, | 462 NULL, |
473 issue_auth_token_source_, | 463 issue_auth_token_source_, |
474 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 464 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
475 RC_REQUEST_OK, | 465 RC_REQUEST_OK, |
476 cookies_, | 466 cookies_, |
477 "token"); | 467 "token"); |
478 EXPECT_FALSE(auth.HasPendingFetch()); | 468 EXPECT_FALSE(auth.HasPendingFetch()); |
479 } | 469 } |
480 | 470 |
481 TEST_F(GaiaAuthFetcherTest, FullTokenFailure) { | 471 TEST_F(GaiaAuthFetcherTest, FullTokenFailure) { |
482 MockGaiaConsumer consumer; | 472 MockGaiaConsumer consumer; |
483 EXPECT_CALL(consumer, OnIssueAuthTokenFailure("service", _)) | 473 EXPECT_CALL(consumer, OnIssueAuthTokenFailure("service", _)) |
484 .Times(1); | 474 .Times(1); |
485 | 475 |
486 TestingProfile profile; | 476 TestingProfile profile; |
487 TestURLFetcherFactory factory; | 477 TestURLFetcherFactory factory; |
488 URLFetcher::set_factory(&factory); | |
489 | 478 |
490 GaiaAuthFetcher auth(&consumer, std::string(), | 479 GaiaAuthFetcher auth(&consumer, std::string(), |
491 profile_.GetRequestContext()); | 480 profile_.GetRequestContext()); |
492 auth.StartIssueAuthToken("sid", "lsid", "service"); | 481 auth.StartIssueAuthToken("sid", "lsid", "service"); |
493 | 482 |
494 URLFetcher::set_factory(NULL); | |
495 EXPECT_TRUE(auth.HasPendingFetch()); | 483 EXPECT_TRUE(auth.HasPendingFetch()); |
496 auth.OnURLFetchComplete( | 484 auth.OnURLFetchComplete( |
497 NULL, | 485 NULL, |
498 issue_auth_token_source_, | 486 issue_auth_token_source_, |
499 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 487 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
500 RC_FORBIDDEN, | 488 RC_FORBIDDEN, |
501 cookies_, | 489 cookies_, |
502 ""); | 490 ""); |
503 EXPECT_FALSE(auth.HasPendingFetch()); | 491 EXPECT_FALSE(auth.HasPendingFetch()); |
504 } | 492 } |
505 | 493 |
506 TEST_F(GaiaAuthFetcherTest, TokenAuthSuccess) { | 494 TEST_F(GaiaAuthFetcherTest, TokenAuthSuccess) { |
507 MockGaiaConsumer consumer; | 495 MockGaiaConsumer consumer; |
508 EXPECT_CALL(consumer, OnTokenAuthSuccess("<html></html>")) | 496 EXPECT_CALL(consumer, OnTokenAuthSuccess("<html></html>")) |
509 .Times(1); | 497 .Times(1); |
510 | 498 |
511 TestingProfile profile; | 499 TestingProfile profile; |
512 TestURLFetcherFactory factory; | 500 TestURLFetcherFactory factory; |
513 URLFetcher::set_factory(&factory); | |
514 | 501 |
515 GaiaAuthFetcher auth(&consumer, std::string(), | 502 GaiaAuthFetcher auth(&consumer, std::string(), |
516 profile_.GetRequestContext()); | 503 profile_.GetRequestContext()); |
517 auth.StartTokenAuth("myubertoken"); | 504 auth.StartTokenAuth("myubertoken"); |
518 | 505 |
519 URLFetcher::set_factory(NULL); | |
520 EXPECT_TRUE(auth.HasPendingFetch()); | 506 EXPECT_TRUE(auth.HasPendingFetch()); |
521 auth.OnURLFetchComplete( | 507 auth.OnURLFetchComplete( |
522 NULL, | 508 NULL, |
523 token_auth_source_, | 509 token_auth_source_, |
524 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 510 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
525 RC_REQUEST_OK, | 511 RC_REQUEST_OK, |
526 cookies_, | 512 cookies_, |
527 "<html></html>"); | 513 "<html></html>"); |
528 EXPECT_FALSE(auth.HasPendingFetch()); | 514 EXPECT_FALSE(auth.HasPendingFetch()); |
529 } | 515 } |
530 | 516 |
531 TEST_F(GaiaAuthFetcherTest, TokenAuthUnauthorizedFailure) { | 517 TEST_F(GaiaAuthFetcherTest, TokenAuthUnauthorizedFailure) { |
532 MockGaiaConsumer consumer; | 518 MockGaiaConsumer consumer; |
533 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) | 519 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) |
534 .Times(1); | 520 .Times(1); |
535 | 521 |
536 TestingProfile profile; | 522 TestingProfile profile; |
537 TestURLFetcherFactory factory; | 523 TestURLFetcherFactory factory; |
538 URLFetcher::set_factory(&factory); | |
539 | 524 |
540 GaiaAuthFetcher auth(&consumer, std::string(), | 525 GaiaAuthFetcher auth(&consumer, std::string(), |
541 profile_.GetRequestContext()); | 526 profile_.GetRequestContext()); |
542 auth.StartTokenAuth("badubertoken"); | 527 auth.StartTokenAuth("badubertoken"); |
543 | 528 |
544 URLFetcher::set_factory(NULL); | |
545 EXPECT_TRUE(auth.HasPendingFetch()); | 529 EXPECT_TRUE(auth.HasPendingFetch()); |
546 auth.OnURLFetchComplete( | 530 auth.OnURLFetchComplete( |
547 NULL, | 531 NULL, |
548 token_auth_source_, | 532 token_auth_source_, |
549 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), | 533 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), |
550 RC_UNAUTHORIZED, | 534 RC_UNAUTHORIZED, |
551 cookies_, | 535 cookies_, |
552 ""); | 536 ""); |
553 EXPECT_FALSE(auth.HasPendingFetch()); | 537 EXPECT_FALSE(auth.HasPendingFetch()); |
554 } | 538 } |
555 | 539 |
556 TEST_F(GaiaAuthFetcherTest, TokenAuthNetFailure) { | 540 TEST_F(GaiaAuthFetcherTest, TokenAuthNetFailure) { |
557 MockGaiaConsumer consumer; | 541 MockGaiaConsumer consumer; |
558 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) | 542 EXPECT_CALL(consumer, OnTokenAuthFailure(_)) |
559 .Times(1); | 543 .Times(1); |
560 | 544 |
561 TestingProfile profile; | 545 TestingProfile profile; |
562 TestURLFetcherFactory factory; | 546 TestURLFetcherFactory factory; |
563 URLFetcher::set_factory(&factory); | |
564 | 547 |
565 GaiaAuthFetcher auth(&consumer, std::string(), | 548 GaiaAuthFetcher auth(&consumer, std::string(), |
566 profile_.GetRequestContext()); | 549 profile_.GetRequestContext()); |
567 auth.StartTokenAuth("badubertoken"); | 550 auth.StartTokenAuth("badubertoken"); |
568 | 551 |
569 URLFetcher::set_factory(NULL); | |
570 EXPECT_TRUE(auth.HasPendingFetch()); | 552 EXPECT_TRUE(auth.HasPendingFetch()); |
571 auth.OnURLFetchComplete( | 553 auth.OnURLFetchComplete( |
572 NULL, | 554 NULL, |
573 token_auth_source_, | 555 token_auth_source_, |
574 net::URLRequestStatus(net::URLRequestStatus::FAILED, 0), | 556 net::URLRequestStatus(net::URLRequestStatus::FAILED, 0), |
575 RC_REQUEST_OK, | 557 RC_REQUEST_OK, |
576 cookies_, | 558 cookies_, |
577 ""); | 559 ""); |
578 EXPECT_FALSE(auth.HasPendingFetch()); | 560 EXPECT_FALSE(auth.HasPendingFetch()); |
579 } | 561 } |
OLD | NEW |