Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(580)

Side by Side Diff: components/signin/core/browser/account_tracker_service_unittest.cc

Issue 1380103004: Delay fetching account info until OnRefreshTokensLoaded(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix iOs Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/prefs/pref_registry_simple.h" 8 #include "base/prefs/pref_registry_simple.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/prefs/testing_pref_service.h" 10 #include "base/prefs/testing_pref_service.h"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 signin_client_.reset(new TestSigninClient(&pref_service_)); 264 signin_client_.reset(new TestSigninClient(&pref_service_));
265 signin_client_.get()->SetURLRequestContext( 265 signin_client_.get()->SetURLRequestContext(
266 new net::TestURLRequestContextGetter(message_loop_.task_runner())); 266 new net::TestURLRequestContextGetter(message_loop_.task_runner()));
267 267
268 account_tracker_.reset(new AccountTrackerService()); 268 account_tracker_.reset(new AccountTrackerService());
269 account_tracker_->Initialize(signin_client_.get()); 269 account_tracker_->Initialize(signin_client_.get());
270 270
271 account_fetcher_.reset(new AccountFetcherService()); 271 account_fetcher_.reset(new AccountFetcherService());
272 account_fetcher_->Initialize(signin_client_.get(), 272 account_fetcher_->Initialize(signin_client_.get(),
273 fake_oauth2_token_service_.get(), 273 fake_oauth2_token_service_.get(),
274 account_tracker_.get(), nullptr); 274 account_tracker_.get());
275 275
276 account_fetcher_->EnableNetworkFetches(); 276 account_fetcher_->OnRefreshTokensLoaded();
277 } 277 }
278 278
279 void TearDown() override { 279 void TearDown() override {
280 account_fetcher_->Shutdown(); 280 account_fetcher_->Shutdown();
281 account_tracker_->Shutdown(); 281 account_tracker_->Shutdown();
282 } 282 }
283 283
284 void SimulateTokenAvailable(const std::string& account_id) { 284 void SimulateTokenAvailable(const std::string& account_id) {
285 fake_oauth2_token_service_->AddAccount(account_id); 285 fake_oauth2_token_service_->AddAccount(account_id);
286 } 286 }
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 446
447 TEST_F(AccountTrackerServiceTest, TokenAlreadyExists) { 447 TEST_F(AccountTrackerServiceTest, TokenAlreadyExists) {
448 SimulateTokenAvailable("alpha"); 448 SimulateTokenAvailable("alpha");
449 AccountTrackerService tracker; 449 AccountTrackerService tracker;
450 AccountTrackerObserver observer; 450 AccountTrackerObserver observer;
451 AccountFetcherService fetcher; 451 AccountFetcherService fetcher;
452 452
453 tracker.AddObserver(&observer); 453 tracker.AddObserver(&observer);
454 tracker.Initialize(signin_client()); 454 tracker.Initialize(signin_client());
455 455
456 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 456 fetcher.Initialize(signin_client(), token_service(), &tracker);
457 fetcher.EnableNetworkFetches(); 457 fetcher.OnRefreshTokensLoaded();
458 ASSERT_FALSE(fetcher.IsAllUserInfoFetched()); 458 ASSERT_FALSE(fetcher.IsAllUserInfoFetched());
459 ASSERT_TRUE(observer.CheckEvents()); 459 ASSERT_TRUE(observer.CheckEvents());
460 tracker.RemoveObserver(&observer); 460 tracker.RemoveObserver(&observer);
461 tracker.Shutdown(); 461 tracker.Shutdown();
462 fetcher.Shutdown(); 462 fetcher.Shutdown();
463 } 463 }
464 464
465 TEST_F(AccountTrackerServiceTest, TwoTokenAvailable_TwoUserInfo) { 465 TEST_F(AccountTrackerServiceTest, TwoTokenAvailable_TwoUserInfo) {
466 AccountTrackerObserver observer; 466 AccountTrackerObserver observer;
467 account_tracker()->AddObserver(&observer); 467 account_tracker()->AddObserver(&observer);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 TEST_F(AccountTrackerServiceTest, GetAccountInfo_TokenAvailable_EnableNetwork) { 528 TEST_F(AccountTrackerServiceTest, GetAccountInfo_TokenAvailable_EnableNetwork) {
529 // Shutdown the network-enabled tracker built into the test case. 529 // Shutdown the network-enabled tracker built into the test case.
530 TearDown(); 530 TearDown();
531 531
532 // Create an account tracker and an account fetcher service but do not enable 532 // Create an account tracker and an account fetcher service but do not enable
533 // network fetches. 533 // network fetches.
534 AccountTrackerService tracker; 534 AccountTrackerService tracker;
535 tracker.Initialize(signin_client()); 535 tracker.Initialize(signin_client());
536 536
537 AccountFetcherService fetcher_service; 537 AccountFetcherService fetcher_service;
538 fetcher_service.Initialize(signin_client(), token_service(), &tracker, 538 fetcher_service.Initialize(signin_client(), token_service(), &tracker);
539 nullptr);
540 539
541 SimulateTokenAvailable("alpha"); 540 SimulateTokenAvailable("alpha");
542 IssueAccessToken("alpha"); 541 IssueAccessToken("alpha");
543 // No fetcher has been created yet. 542 // No fetcher has been created yet.
544 net::TestURLFetcher* fetcher = test_fetcher_factory()->GetFetcherByID( 543 net::TestURLFetcher* fetcher = test_fetcher_factory()->GetFetcherByID(
545 gaia::GaiaOAuthClient::kUrlFetcherId); 544 gaia::GaiaOAuthClient::kUrlFetcherId);
546 ASSERT_FALSE(fetcher); 545 ASSERT_FALSE(fetcher);
547 546
548 // Enable the network to create the fetcher then issue the access token. 547 // Enable the network fetches and refresh invalid accounts information.
549 fetcher_service.EnableNetworkFetches(); 548 fetcher_service.OnRefreshTokensLoaded();
550 549
551 // Fetcher was created and executes properly. 550 // Fetcher was created and executes properly.
552 ReturnOAuthUrlFetchSuccess("alpha"); 551 ReturnOAuthUrlFetchSuccess("alpha");
553 552
554 AccountInfo info = tracker.GetAccountInfo("alpha"); 553 AccountInfo info = tracker.GetAccountInfo("alpha");
555 CheckAccountDetails("alpha", info); 554 CheckAccountDetails("alpha", info);
556 fetcher_service.Shutdown(); 555 fetcher_service.Shutdown();
557 tracker.Shutdown(); 556 tracker.Shutdown();
558 } 557 }
559 558
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, "alpha"), 615 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, "alpha"),
617 TrackingEvent(UPDATED, "beta"))); 616 TrackingEvent(UPDATED, "beta")));
618 tracker.RemoveObserver(&observer); 617 tracker.RemoveObserver(&observer);
619 618
620 std::vector<AccountInfo> infos = tracker.GetAccounts(); 619 std::vector<AccountInfo> infos = tracker.GetAccounts();
621 ASSERT_EQ(2u, infos.size()); 620 ASSERT_EQ(2u, infos.size());
622 CheckAccountDetails("alpha", infos[0]); 621 CheckAccountDetails("alpha", infos[0]);
623 CheckAccountDetails("beta", infos[1]); 622 CheckAccountDetails("beta", infos[1]);
624 623
625 FakeAccountFetcherService fetcher; 624 FakeAccountFetcherService fetcher;
626 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 625 fetcher.Initialize(signin_client(), token_service(), &tracker);
627 fetcher.EnableNetworkFetches(); 626 fetcher.OnRefreshTokensLoaded();
628 // Remove an account. 627 // Remove an account.
629 // This will allow testing removal as well as child accounts which is only 628 // This will allow testing removal as well as child accounts which is only
630 // allowed for a single account. 629 // allowed for a single account.
631 SimulateTokenRevoked("alpha"); 630 SimulateTokenRevoked("alpha");
632 fetcher.FakeSetIsChildAccount("beta", true); 631 fetcher.FakeSetIsChildAccount("beta", true);
633 632
634 fetcher.Shutdown(); 633 fetcher.Shutdown();
635 tracker.Shutdown(); 634 tracker.Shutdown();
636 } 635 }
637 636
(...skipping 28 matching lines...) Expand all
666 EXPECT_EQ(email, infos[0].email); 665 EXPECT_EQ(email, infos[0].email);
667 } 666 }
668 667
669 TEST_F(AccountTrackerServiceTest, UpgradeToFullAccountInfo) { 668 TEST_F(AccountTrackerServiceTest, UpgradeToFullAccountInfo) {
670 // Start by simulating an incomplete account info and let it be saved to 669 // Start by simulating an incomplete account info and let it be saved to
671 // prefs. 670 // prefs.
672 { 671 {
673 AccountTrackerService tracker; 672 AccountTrackerService tracker;
674 tracker.Initialize(signin_client()); 673 tracker.Initialize(signin_client());
675 AccountFetcherService fetcher; 674 AccountFetcherService fetcher;
676 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 675 fetcher.Initialize(signin_client(), token_service(), &tracker);
677 fetcher.EnableNetworkFetches(); 676 fetcher.OnRefreshTokensLoaded();
678 SimulateTokenAvailable("incomplete"); 677 SimulateTokenAvailable("incomplete");
679 ReturnOAuthUrlFetchSuccessIncomplete("incomplete"); 678 ReturnOAuthUrlFetchSuccessIncomplete("incomplete");
680 tracker.Shutdown(); 679 tracker.Shutdown();
681 fetcher.Shutdown(); 680 fetcher.Shutdown();
682 } 681 }
683 682
684 { 683 {
685 AccountTrackerService tracker; 684 AccountTrackerService tracker;
686 tracker.Initialize(signin_client()); 685 tracker.Initialize(signin_client());
687 AccountFetcherService fetcher; 686 AccountFetcherService fetcher;
688 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 687 fetcher.Initialize(signin_client(), token_service(), &tracker);
688 fetcher.OnRefreshTokensLoaded();
689 // Validate that the loaded AccountInfo from prefs is considered invalid. 689 // Validate that the loaded AccountInfo from prefs is considered invalid.
690 std::vector<AccountInfo> infos = tracker.GetAccounts(); 690 std::vector<AccountInfo> infos = tracker.GetAccounts();
691 ASSERT_EQ(1u, infos.size()); 691 ASSERT_EQ(1u, infos.size());
692 ASSERT_FALSE(infos[0].IsValid()); 692 ASSERT_FALSE(infos[0].IsValid());
693 693
694 // Enable network fetches and simulate the same account getting a refresh 694 // Simulate the same account getting a refresh token with all the info.
695 // token containing all the info.
696 fetcher.EnableNetworkFetches();
697 SimulateTokenAvailable("incomplete"); 695 SimulateTokenAvailable("incomplete");
698 ReturnOAuthUrlFetchSuccess("incomplete"); 696 ReturnOAuthUrlFetchSuccess("incomplete");
699 697
700 // Validate that the account is now considered valid. 698 // Validate that the account is now considered valid.
701 infos = tracker.GetAccounts(); 699 infos = tracker.GetAccounts();
702 ASSERT_EQ(1u, infos.size()); 700 ASSERT_EQ(1u, infos.size());
703 ASSERT_TRUE(infos[0].IsValid()); 701 ASSERT_TRUE(infos[0].IsValid());
704 702
705 tracker.Shutdown(); 703 tracker.Shutdown();
706 fetcher.Shutdown(); 704 fetcher.Shutdown();
707 } 705 }
708 706
709 // Reinstantiate a tracker to validate that the AccountInfo saved to prefs is 707 // Reinstantiate a tracker to validate that the AccountInfo saved to prefs is
710 // now the upgraded one, considered valid. 708 // now the upgraded one, considered valid.
711 { 709 {
712 AccountTrackerService tracker; 710 AccountTrackerService tracker;
713 AccountTrackerObserver observer; 711 AccountTrackerObserver observer;
714 tracker.AddObserver(&observer); 712 tracker.AddObserver(&observer);
715 tracker.Initialize(signin_client()); 713 tracker.Initialize(signin_client());
716 AccountFetcherService fetcher; 714 AccountFetcherService fetcher;
717 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 715 fetcher.Initialize(signin_client(), token_service(), &tracker);
718 716
719 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, "incomplete"))); 717 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, "incomplete")));
720 // Enabling network fetches shouldn't cause any actual fetch since the 718 // Enabling network fetches shouldn't cause any actual fetch since the
721 // AccountInfos loaded from prefs should be valid. 719 // AccountInfos loaded from prefs should be valid.
722 fetcher.EnableNetworkFetches(); 720 fetcher.OnRefreshTokensLoaded();
723 721
724 std::vector<AccountInfo> infos = tracker.GetAccounts(); 722 std::vector<AccountInfo> infos = tracker.GetAccounts();
725 ASSERT_EQ(1u, infos.size()); 723 ASSERT_EQ(1u, infos.size());
726 ASSERT_TRUE(infos[0].IsValid()); 724 ASSERT_TRUE(infos[0].IsValid());
727 // Check that no network fetches were made. 725 // Check that no network fetches were made.
728 ASSERT_TRUE(observer.CheckEvents()); 726 ASSERT_TRUE(observer.CheckEvents());
729 727
730 tracker.RemoveObserver(&observer); 728 tracker.RemoveObserver(&observer);
731 tracker.Shutdown(); 729 tracker.Shutdown();
732 fetcher.Shutdown(); 730 fetcher.Shutdown();
733 } 731 }
734 } 732 }
735 733
736 TEST_F(AccountTrackerServiceTest, TimerRefresh) { 734 TEST_F(AccountTrackerServiceTest, TimerRefresh) {
737 // Start by creating a tracker and adding a couple accounts to be persisted to 735 // Start by creating a tracker and adding a couple accounts to be persisted to
738 // prefs. 736 // prefs.
739 { 737 {
740 AccountTrackerService tracker; 738 AccountTrackerService tracker;
741 tracker.Initialize(signin_client()); 739 tracker.Initialize(signin_client());
742 AccountFetcherService fetcher; 740 AccountFetcherService fetcher;
743 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 741 fetcher.Initialize(signin_client(), token_service(), &tracker);
744 fetcher.EnableNetworkFetches(); 742 fetcher.OnRefreshTokensLoaded();
745 SimulateTokenAvailable("alpha"); 743 SimulateTokenAvailable("alpha");
746 ReturnOAuthUrlFetchSuccess("alpha"); 744 ReturnOAuthUrlFetchSuccess("alpha");
747 SimulateTokenAvailable("beta"); 745 SimulateTokenAvailable("beta");
748 ReturnOAuthUrlFetchSuccess("beta"); 746 ReturnOAuthUrlFetchSuccess("beta");
749 tracker.Shutdown(); 747 tracker.Shutdown();
750 fetcher.Shutdown(); 748 fetcher.Shutdown();
751 } 749 }
752 750
753 // Rewind the time by half a day, which shouldn't be enough to trigger a 751 // Rewind the time by half a day, which shouldn't be enough to trigger a
754 // network refresh. 752 // network refresh.
755 base::Time fake_update = base::Time::Now() - base::TimeDelta::FromHours(12); 753 base::Time fake_update = base::Time::Now() - base::TimeDelta::FromHours(12);
756 signin_client()->GetPrefs()->SetInt64( 754 signin_client()->GetPrefs()->SetInt64(
757 AccountFetcherService::kLastUpdatePref, 755 AccountFetcherService::kLastUpdatePref,
758 fake_update.ToInternalValue()); 756 fake_update.ToInternalValue());
759 757
760 // Instantiate a new ATS, making sure the persisted accounts are still there 758 // Instantiate a new ATS, making sure the persisted accounts are still there
761 // and that no network fetches happen. 759 // and that no network fetches happen.
762 { 760 {
763 AccountTrackerService tracker; 761 AccountTrackerService tracker;
764 tracker.Initialize(signin_client()); 762 tracker.Initialize(signin_client());
765 AccountFetcherService fetcher; 763 AccountFetcherService fetcher;
766 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 764 fetcher.Initialize(signin_client(), token_service(), &tracker);
767 765
768 ASSERT_TRUE(fetcher.IsAllUserInfoFetched()); 766 ASSERT_TRUE(fetcher.IsAllUserInfoFetched());
769 std::vector<AccountInfo> infos = tracker.GetAccounts(); 767 std::vector<AccountInfo> infos = tracker.GetAccounts();
770 ASSERT_EQ(2u, infos.size()); 768 ASSERT_EQ(2u, infos.size());
771 ASSERT_TRUE(infos[0].IsValid()); 769 ASSERT_TRUE(infos[0].IsValid());
772 ASSERT_TRUE(infos[1].IsValid()); 770 ASSERT_TRUE(infos[1].IsValid());
773 771
774 fetcher.EnableNetworkFetches(); 772 fetcher.OnRefreshTokensLoaded();
775 ASSERT_TRUE(fetcher.IsAllUserInfoFetched()); 773 ASSERT_TRUE(fetcher.IsAllUserInfoFetched());
776 tracker.Shutdown(); 774 tracker.Shutdown();
777 fetcher.Shutdown(); 775 fetcher.Shutdown();
778 } 776 }
779 777
780 // Rewind the last updated time enough to trigger a network refresh. 778 // Rewind the last updated time enough to trigger a network refresh.
781 fake_update = base::Time::Now() - base::TimeDelta::FromHours(25); 779 fake_update = base::Time::Now() - base::TimeDelta::FromHours(25);
782 signin_client()->GetPrefs()->SetInt64( 780 signin_client()->GetPrefs()->SetInt64(
783 AccountFetcherService::kLastUpdatePref, 781 AccountFetcherService::kLastUpdatePref,
784 fake_update.ToInternalValue()); 782 fake_update.ToInternalValue());
785 783
786 // Instantiate a new tracker and validate that even though the AccountInfos 784 // Instantiate a new tracker and validate that even though the AccountInfos
787 // are still valid, the network fetches are started. 785 // are still valid, the network fetches are started.
788 { 786 {
789 AccountTrackerService tracker; 787 AccountTrackerService tracker;
790 tracker.Initialize(signin_client()); 788 tracker.Initialize(signin_client());
791 AccountFetcherService fetcher; 789 AccountFetcherService fetcher;
792 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 790 fetcher.Initialize(signin_client(), token_service(), &tracker);
793 791
794 ASSERT_TRUE(fetcher.IsAllUserInfoFetched()); 792 ASSERT_TRUE(fetcher.IsAllUserInfoFetched());
795 std::vector<AccountInfo> infos = tracker.GetAccounts(); 793 std::vector<AccountInfo> infos = tracker.GetAccounts();
796 ASSERT_EQ(2u, infos.size()); 794 ASSERT_EQ(2u, infos.size());
797 ASSERT_TRUE(infos[0].IsValid()); 795 ASSERT_TRUE(infos[0].IsValid());
798 ASSERT_TRUE(infos[1].IsValid()); 796 ASSERT_TRUE(infos[1].IsValid());
799 797
800 fetcher.EnableNetworkFetches(); 798 fetcher.OnRefreshTokensLoaded();
801 ASSERT_FALSE(fetcher.IsAllUserInfoFetched()); 799 ASSERT_FALSE(fetcher.IsAllUserInfoFetched());
802 tracker.Shutdown(); 800 tracker.Shutdown();
803 fetcher.Shutdown(); 801 fetcher.Shutdown();
804 } 802 }
805 } 803 }
806 804
807 TEST_F(AccountTrackerServiceTest, LegacyDottedAccountIds) { 805 TEST_F(AccountTrackerServiceTest, LegacyDottedAccountIds) {
808 // Start by creating a tracker and adding an account with a dotted account id 806 // Start by creating a tracker and adding an account with a dotted account id
809 // because of an old bug in token service. The token service would also add 807 // because of an old bug in token service. The token service would also add
810 // a correct non-dotted account id for the same account. 808 // a correct non-dotted account id for the same account.
811 { 809 {
812 AccountTrackerService tracker; 810 AccountTrackerService tracker;
813 tracker.Initialize(signin_client()); 811 tracker.Initialize(signin_client());
814 AccountFetcherService fetcher; 812 AccountFetcherService fetcher;
815 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 813 fetcher.Initialize(signin_client(), token_service(), &tracker);
816 fetcher.EnableNetworkFetches(); 814 fetcher.OnRefreshTokensLoaded();
817 SimulateTokenAvailable("foo.bar@gmail.com"); 815 SimulateTokenAvailable("foo.bar@gmail.com");
818 SimulateTokenAvailable("foobar@gmail.com"); 816 SimulateTokenAvailable("foobar@gmail.com");
819 ReturnOAuthUrlFetchSuccess("foo.bar@gmail.com"); 817 ReturnOAuthUrlFetchSuccess("foo.bar@gmail.com");
820 ReturnOAuthUrlFetchSuccess("foobar@gmail.com"); 818 ReturnOAuthUrlFetchSuccess("foobar@gmail.com");
821 tracker.Shutdown(); 819 tracker.Shutdown();
822 fetcher.Shutdown(); 820 fetcher.Shutdown();
823 } 821 }
824 822
825 // Remove the bad account now from the token service to simulate that it 823 // Remove the bad account now from the token service to simulate that it
826 // has been "fixed". 824 // has been "fixed".
827 SimulateTokenRevoked("foo.bar@gmail.com"); 825 SimulateTokenRevoked("foo.bar@gmail.com");
828 826
829 // Instantiate a new tracker and validate that it has only one account, and 827 // Instantiate a new tracker and validate that it has only one account, and
830 // it is the correct non dotted one. 828 // it is the correct non dotted one.
831 { 829 {
832 AccountTrackerService tracker; 830 AccountTrackerService tracker;
833 tracker.Initialize(signin_client()); 831 tracker.Initialize(signin_client());
834 AccountFetcherService fetcher; 832 AccountFetcherService fetcher;
835 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 833 fetcher.Initialize(signin_client(), token_service(), &tracker);
836 834
837 ASSERT_TRUE(fetcher.IsAllUserInfoFetched()); 835 ASSERT_TRUE(fetcher.IsAllUserInfoFetched());
838 std::vector<AccountInfo> infos = tracker.GetAccounts(); 836 std::vector<AccountInfo> infos = tracker.GetAccounts();
839 ASSERT_EQ(1u, infos.size()); 837 ASSERT_EQ(1u, infos.size());
840 ASSERT_STREQ("foobar@gmail.com", infos[0].account_id.c_str()); 838 ASSERT_STREQ("foobar@gmail.com", infos[0].account_id.c_str());
841 tracker.Shutdown(); 839 tracker.Shutdown();
842 fetcher.Shutdown(); 840 fetcher.Shutdown();
843 } 841 }
844 } 842 }
845 843
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 accounts.clear(); 1023 accounts.clear();
1026 accounts = tracker.GetAccounts(); 1024 accounts = tracker.GetAccounts();
1027 ASSERT_EQ(2u, accounts.size()); 1025 ASSERT_EQ(2u, accounts.size());
1028 } 1026 }
1029 } 1027 }
1030 1028
1031 TEST_F(AccountTrackerServiceTest, ChildAccountBasic) { 1029 TEST_F(AccountTrackerServiceTest, ChildAccountBasic) {
1032 AccountTrackerService tracker; 1030 AccountTrackerService tracker;
1033 tracker.Initialize(signin_client()); 1031 tracker.Initialize(signin_client());
1034 FakeAccountFetcherService fetcher; 1032 FakeAccountFetcherService fetcher;
1035 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 1033 fetcher.Initialize(signin_client(), token_service(), &tracker);
1036 fetcher.EnableNetworkFetches(); 1034 fetcher.OnRefreshTokensLoaded();
1037 AccountTrackerObserver observer; 1035 AccountTrackerObserver observer;
1038 tracker.AddObserver(&observer); 1036 tracker.AddObserver(&observer);
1039 std::string child_id("child"); 1037 std::string child_id("child");
1040 { 1038 {
1041 // Responses are processed iff there is a single account with a valid token 1039 // Responses are processed iff there is a single account with a valid token
1042 // and the response is for that account. 1040 // and the response is for that account.
1043 fetcher.FakeSetIsChildAccount(child_id, true); 1041 fetcher.FakeSetIsChildAccount(child_id, true);
1044 ASSERT_TRUE(observer.CheckEvents()); 1042 ASSERT_TRUE(observer.CheckEvents());
1045 } 1043 }
1046 { 1044 {
1047 SimulateTokenAvailable(child_id); 1045 SimulateTokenAvailable(child_id);
1048 IssueAccessToken(child_id); 1046 IssueAccessToken(child_id);
1049 fetcher.FakeSetIsChildAccount(child_id, true); 1047 fetcher.FakeSetIsChildAccount(child_id, true);
1050 // Response was processed but observer is not notified as the account state 1048 // Response was processed but observer is not notified as the account state
1051 // is invalid. 1049 // is invalid.
1052 ASSERT_TRUE(observer.CheckEvents()); 1050 ASSERT_TRUE(observer.CheckEvents());
1053 AccountInfo info = tracker.GetAccountInfo(child_id); 1051 AccountInfo info = tracker.GetAccountInfo(child_id);
1054 ASSERT_TRUE(info.is_child_account); 1052 ASSERT_TRUE(info.is_child_account);
1055 SimulateTokenRevoked(child_id); 1053 SimulateTokenRevoked(child_id);
1056 } 1054 }
1057 tracker.RemoveObserver(&observer); 1055 tracker.RemoveObserver(&observer);
1058 fetcher.Shutdown(); 1056 fetcher.Shutdown();
1059 tracker.Shutdown(); 1057 tracker.Shutdown();
1060 } 1058 }
1061 1059
1062 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedAndRevoked) { 1060 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedAndRevoked) {
1063 AccountTrackerService tracker; 1061 AccountTrackerService tracker;
1064 tracker.Initialize(signin_client()); 1062 tracker.Initialize(signin_client());
1065 FakeAccountFetcherService fetcher; 1063 FakeAccountFetcherService fetcher;
1066 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 1064 fetcher.Initialize(signin_client(), token_service(), &tracker);
1067 fetcher.EnableNetworkFetches(); 1065 fetcher.OnRefreshTokensLoaded();
1068 AccountTrackerObserver observer; 1066 AccountTrackerObserver observer;
1069 tracker.AddObserver(&observer); 1067 tracker.AddObserver(&observer);
1070 std::string child_id("child"); 1068 std::string child_id("child");
1071 1069
1072 SimulateTokenAvailable(child_id); 1070 SimulateTokenAvailable(child_id);
1073 IssueAccessToken(child_id); 1071 IssueAccessToken(child_id);
1074 fetcher.FakeSetIsChildAccount(child_id, false); 1072 fetcher.FakeSetIsChildAccount(child_id, false);
1075 FakeUserInfoFetchSuccess(&fetcher, child_id); 1073 FakeUserInfoFetchSuccess(&fetcher, child_id);
1076 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id))); 1074 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id)));
1077 AccountInfo info = tracker.GetAccountInfo(child_id); 1075 AccountInfo info = tracker.GetAccountInfo(child_id);
1078 ASSERT_FALSE(info.is_child_account); 1076 ASSERT_FALSE(info.is_child_account);
1079 SimulateTokenRevoked(child_id); 1077 SimulateTokenRevoked(child_id);
1080 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(REMOVED, child_id))); 1078 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(REMOVED, child_id)));
1081 1079
1082 tracker.RemoveObserver(&observer); 1080 tracker.RemoveObserver(&observer);
1083 fetcher.Shutdown(); 1081 fetcher.Shutdown();
1084 tracker.Shutdown(); 1082 tracker.Shutdown();
1085 } 1083 }
1086 1084
1087 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedAndRevokedWithUpdate) { 1085 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedAndRevokedWithUpdate) {
1088 AccountTrackerService tracker; 1086 AccountTrackerService tracker;
1089 tracker.Initialize(signin_client()); 1087 tracker.Initialize(signin_client());
1090 FakeAccountFetcherService fetcher; 1088 FakeAccountFetcherService fetcher;
1091 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 1089 fetcher.Initialize(signin_client(), token_service(), &tracker);
1092 fetcher.EnableNetworkFetches(); 1090 fetcher.OnRefreshTokensLoaded();
1093 AccountTrackerObserver observer; 1091 AccountTrackerObserver observer;
1094 tracker.AddObserver(&observer); 1092 tracker.AddObserver(&observer);
1095 std::string child_id("child"); 1093 std::string child_id("child");
1096 1094
1097 SimulateTokenAvailable(child_id); 1095 SimulateTokenAvailable(child_id);
1098 IssueAccessToken(child_id); 1096 IssueAccessToken(child_id);
1099 fetcher.FakeSetIsChildAccount(child_id, true); 1097 fetcher.FakeSetIsChildAccount(child_id, true);
1100 FakeUserInfoFetchSuccess(&fetcher, child_id); 1098 FakeUserInfoFetchSuccess(&fetcher, child_id);
1101 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id))); 1099 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id)));
1102 AccountInfo info = tracker.GetAccountInfo(child_id); 1100 AccountInfo info = tracker.GetAccountInfo(child_id);
1103 ASSERT_TRUE(info.is_child_account); 1101 ASSERT_TRUE(info.is_child_account);
1104 SimulateTokenRevoked(child_id); 1102 SimulateTokenRevoked(child_id);
1105 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id), 1103 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id),
1106 TrackingEvent(REMOVED, child_id))); 1104 TrackingEvent(REMOVED, child_id)));
1107 1105
1108 tracker.RemoveObserver(&observer); 1106 tracker.RemoveObserver(&observer);
1109 fetcher.Shutdown(); 1107 fetcher.Shutdown();
1110 tracker.Shutdown(); 1108 tracker.Shutdown();
1111 } 1109 }
1112 1110
1113 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedTwiceThenRevoked) { 1111 TEST_F(AccountTrackerServiceTest, ChildAccountUpdatedTwiceThenRevoked) {
1114 AccountTrackerService tracker; 1112 AccountTrackerService tracker;
1115 tracker.Initialize(signin_client()); 1113 tracker.Initialize(signin_client());
1116 FakeAccountFetcherService fetcher; 1114 FakeAccountFetcherService fetcher;
1117 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 1115 fetcher.Initialize(signin_client(), token_service(), &tracker);
1118 fetcher.EnableNetworkFetches(); 1116 fetcher.OnRefreshTokensLoaded();
1119 AccountTrackerObserver observer; 1117 AccountTrackerObserver observer;
1120 tracker.AddObserver(&observer); 1118 tracker.AddObserver(&observer);
1121 std::string child_id("child"); 1119 std::string child_id("child");
1122 1120
1123 SimulateTokenAvailable(child_id); 1121 SimulateTokenAvailable(child_id);
1124 IssueAccessToken(child_id); 1122 IssueAccessToken(child_id);
1125 // Observers notified the first time. 1123 // Observers notified the first time.
1126 FakeUserInfoFetchSuccess(&fetcher, child_id); 1124 FakeUserInfoFetchSuccess(&fetcher, child_id);
1127 // Since the account state is already valid, this will notify the 1125 // Since the account state is already valid, this will notify the
1128 // observers for the second time. 1126 // observers for the second time.
1129 fetcher.FakeSetIsChildAccount(child_id, true); 1127 fetcher.FakeSetIsChildAccount(child_id, true);
1130 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id), 1128 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id),
1131 TrackingEvent(UPDATED, child_id))); 1129 TrackingEvent(UPDATED, child_id)));
1132 SimulateTokenRevoked(child_id); 1130 SimulateTokenRevoked(child_id);
1133 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id), 1131 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id),
1134 TrackingEvent(REMOVED, child_id))); 1132 TrackingEvent(REMOVED, child_id)));
1135 1133
1136 tracker.RemoveObserver(&observer); 1134 tracker.RemoveObserver(&observer);
1137 fetcher.Shutdown(); 1135 fetcher.Shutdown();
1138 tracker.Shutdown(); 1136 tracker.Shutdown();
1139 } 1137 }
1140 1138
1141 TEST_F(AccountTrackerServiceTest, ChildAccountGraduation) { 1139 TEST_F(AccountTrackerServiceTest, ChildAccountGraduation) {
1142 AccountTrackerService tracker; 1140 AccountTrackerService tracker;
1143 tracker.Initialize(signin_client()); 1141 tracker.Initialize(signin_client());
1144 FakeAccountFetcherService fetcher; 1142 FakeAccountFetcherService fetcher;
1145 fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr); 1143 fetcher.Initialize(signin_client(), token_service(), &tracker);
1146 fetcher.EnableNetworkFetches(); 1144 fetcher.OnRefreshTokensLoaded();
1147 AccountTrackerObserver observer; 1145 AccountTrackerObserver observer;
1148 tracker.AddObserver(&observer); 1146 tracker.AddObserver(&observer);
1149 std::string child_id("child"); 1147 std::string child_id("child");
1150 1148
1151 SimulateTokenAvailable(child_id); 1149 SimulateTokenAvailable(child_id);
1152 IssueAccessToken(child_id); 1150 IssueAccessToken(child_id);
1153 1151
1154 // Set and verify this is a child account. 1152 // Set and verify this is a child account.
1155 fetcher.FakeSetIsChildAccount(child_id, true); 1153 fetcher.FakeSetIsChildAccount(child_id, true);
1156 AccountInfo info = tracker.GetAccountInfo(child_id); 1154 AccountInfo info = tracker.GetAccountInfo(child_id);
1157 ASSERT_TRUE(info.is_child_account); 1155 ASSERT_TRUE(info.is_child_account);
1158 FakeUserInfoFetchSuccess(&fetcher, child_id); 1156 FakeUserInfoFetchSuccess(&fetcher, child_id);
1159 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id))); 1157 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id)));
1160 1158
1161 // Now simulate child account graduation. 1159 // Now simulate child account graduation.
1162 fetcher.FakeSetIsChildAccount(child_id, false); 1160 fetcher.FakeSetIsChildAccount(child_id, false);
1163 info = tracker.GetAccountInfo(child_id); 1161 info = tracker.GetAccountInfo(child_id);
1164 ASSERT_FALSE(info.is_child_account); 1162 ASSERT_FALSE(info.is_child_account);
1165 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id))); 1163 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(UPDATED, child_id)));
1166 1164
1167 SimulateTokenRevoked(child_id); 1165 SimulateTokenRevoked(child_id);
1168 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(REMOVED, child_id))); 1166 ASSERT_TRUE(observer.CheckEvents(TrackingEvent(REMOVED, child_id)));
1169 1167
1170 tracker.RemoveObserver(&observer); 1168 tracker.RemoveObserver(&observer);
1171 fetcher.Shutdown(); 1169 fetcher.Shutdown();
1172 tracker.Shutdown(); 1170 tracker.Shutdown();
1173 } 1171 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698