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

Unified Diff: components/signin/core/browser/account_tracker_service_unittest.cc

Issue 1376933005: Reflect email address changes in the Avatar Menu. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/signin/core/browser/account_fetcher_service.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/signin/core/browser/account_tracker_service_unittest.cc
diff --git a/components/signin/core/browser/account_tracker_service_unittest.cc b/components/signin/core/browser/account_tracker_service_unittest.cc
index eb6751cb46cea84a464a142692c53630c918978e..8cc4e920771e1b4bd34ee7c6866fa486862df1a3 100644
--- a/components/signin/core/browser/account_tracker_service_unittest.cc
+++ b/components/signin/core/browser/account_tracker_service_unittest.cc
@@ -245,6 +245,29 @@ testing::AssertionResult AccountTrackerObserver::CheckEvents(
} // namespace
+class InfoMutatingFakeAccountFetcherService : public FakeAccountFetcherService {
+ public:
+ InfoMutatingFakeAccountFetcherService(AccountInfo new_info)
+ : info_(new_info) {}
+
+ void StartFetchingUserInfo(const std::string& account_id) override {
+ // It would make no sense to return an AccountInfo with a different ID.
+ EXPECT_EQ(info_.account_id, account_id);
+ // Immediately fake a response with the provided |info_|.
+ FakeUserInfoFetchSuccess(account_id,
+ info_.email,
+ info_.gaia,
+ info_.hosted_domain,
+ info_.full_name,
+ info_.given_name,
+ info_.locale,
+ info_.picture_url);
+ }
+
+ private:
+ AccountInfo info_;
+};
+
class AccountTrackerServiceTest : public testing::Test {
public:
AccountTrackerServiceTest() {}
@@ -326,6 +349,7 @@ class AccountTrackerServiceTest : public testing::Test {
return fake_oauth2_token_service_.get();
}
SigninClient* signin_client() { return signin_client_.get(); }
+ PrefService* pref_service() { return &pref_service_; }
private:
void ReturnOAuthUrlFetchResults(int fetcher_id,
@@ -1171,3 +1195,55 @@ TEST_F(AccountTrackerServiceTest, ChildAccountGraduation) {
fetcher.Shutdown();
tracker.Shutdown();
}
+
+TEST_F(AccountTrackerServiceTest, RefreshOnTokensLoadedWhenNeeded) {
+ std::string account_id("account_id");
+ AccountInfo info;
+ {
+ AccountTrackerService tracker;
+ tracker.Initialize(signin_client());
+ FakeAccountFetcherService fetcher;
+ fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr);
+ fetcher.EnableNetworkFetches();
+ fetcher.FakeUserInfoFetchSuccess(account_id,
+ "original@example.com",
+ account_id,
+ "",
+ "first",
+ "fi",
+ "en-US",
+ "");
+ info = tracker.GetAccountInfo(account_id);
+ EXPECT_TRUE(info.IsValid());
+ EXPECT_EQ("original@example.com", info.email);
+ }
+
+ // Set the last update to a long time ago to trigger a refresh when the AFS
+ // starts.
+ pref_service()->SetInt64(AccountFetcherService::kLastUpdatePref, 0);
+
+ {
+ // Prepare the new account info that will be fetched for |account_id|.
+ info.email = "mutated@example.com";
+ AccountTrackerService tracker;
+ tracker.Initialize(signin_client());
+ InfoMutatingFakeAccountFetcherService fetcher(info);
+ fetcher.Initialize(signin_client(), token_service(), &tracker, nullptr);
+ fetcher.EnableNetworkFetches();
+
+ info = tracker.GetAccountInfo(account_id);
+ // The persisted info should be returned since the refresh tokens aren't
+ // loaded yet.
+ EXPECT_TRUE(info.IsValid());
+ EXPECT_EQ("original@example.com", info.email);
+
+ // Trigger a OnRefreshTokensLoaded() notification.
+ static_cast<FakeOAuth2TokenService*>(token_service())->
+ GetFakeOAuth2TokenServiceDelegate()->LoadCredentials(account_id);
+
+ info = tracker.GetAccountInfo(account_id);
+ EXPECT_TRUE(info.IsValid());
+ EXPECT_EQ("mutated@example.com", info.email);
+ }
+}
+
« no previous file with comments | « components/signin/core/browser/account_fetcher_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698