| Index: chrome/browser/extensions/api/identity/account_tracker_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/identity/account_tracker_unittest.cc b/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
|
| index 81d59ec4d5fe332ae20b9c0b2e7c996df970ede2..998462aeecae41e0d69cf219d9c11358160b537e 100644
|
| --- a/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
|
| +++ b/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
|
| @@ -32,7 +32,6 @@
|
| namespace {
|
|
|
| const char kPrimaryAccountKey[] = "primary_account@example.com";
|
| -const char kFakeGaiaId[] = "8675309";
|
|
|
| enum TrackingEventType {
|
| ADDED,
|
| @@ -41,6 +40,10 @@ enum TrackingEventType {
|
| SIGN_OUT
|
| };
|
|
|
| +std::string AccountKeyToObfuscatedId(const std::string email) {
|
| + return "obfid-" + email;
|
| +}
|
| +
|
| class TrackingEvent {
|
| public:
|
| TrackingEvent(TrackingEventType type,
|
| @@ -54,7 +57,7 @@ class TrackingEvent {
|
| const std::string& account_key)
|
| : type_(type),
|
| account_key_(account_key),
|
| - gaia_id_(kFakeGaiaId) {}
|
| + gaia_id_(AccountKeyToObfuscatedId(account_key)) {}
|
|
|
| bool operator==(const TrackingEvent& event) const {
|
| return type_ == event.type_ && account_key_ == event.account_key_ &&
|
| @@ -140,6 +143,7 @@ class AccountTrackerObserver : public AccountTracker::Observer {
|
| const TrackingEvent& e4,
|
| const TrackingEvent& e5,
|
| const TrackingEvent& e6);
|
| + void Clear();
|
| void SortEventsByUser();
|
|
|
| // AccountTracker::Observer implementation
|
| @@ -169,6 +173,10 @@ void AccountTrackerObserver::OnAccountSignInChanged(const AccountIds& ids,
|
| TrackingEvent(is_signed_in ? SIGN_IN : SIGN_OUT, ids.email, ids.gaia));
|
| }
|
|
|
| +void AccountTrackerObserver::Clear() {
|
| + events_.clear();
|
| +}
|
| +
|
| void AccountTrackerObserver::SortEventsByUser() {
|
| std::stable_sort(events_.begin(), events_.end(), CompareByUser);
|
| }
|
| @@ -283,10 +291,21 @@ class IdentityAccountTrackerTest : public testing::Test {
|
|
|
| fake_signin_manager_ = static_cast<FakeSigninManagerForTesting*>(
|
| SigninManagerFactory::GetForProfile(test_profile_.get()));
|
| +#if defined(OS_CHROMEOS)
|
| + // We don't sign the primary user in and out on ChromeOS, so set the
|
| + // username once in setup.
|
| fake_signin_manager_->SetAuthenticatedUsername(kPrimaryAccountKey);
|
| +#endif
|
|
|
| account_tracker_.reset(new AccountTracker(test_profile_.get()));
|
| account_tracker_->AddObserver(&observer_);
|
| +
|
| + // Start off signed into the primary account, because most tests need the
|
| + // profile to be signed in. Remove the initial sign-in events that the
|
| + // tests don't care about.
|
| + NotifyTokenAvailable(kPrimaryAccountKey);
|
| + ReturnOAuthUrlFetchSuccess(kPrimaryAccountKey);
|
| + observer()->Clear();
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| @@ -334,13 +353,14 @@ class IdentityAccountTrackerTest : public testing::Test {
|
| }
|
|
|
| // Helpers to fake access token and user info fetching
|
| - void IssueAccessToken() {
|
| - fake_oauth2_token_service_->IssueTokenForAllPendingRequests(
|
| - "access_token", base::Time::Max());
|
| + void IssueAccessToken(const std::string& username) {
|
| + fake_oauth2_token_service_->IssueAllTokensForAccount(
|
| + username, "access_token-" + username, base::Time::Max());
|
| }
|
|
|
| - std::string GetValidTokenInfoResponse(const std::string email) {
|
| - return std::string("{ \"id\": \"") + kFakeGaiaId + "\" }";
|
| + std::string GetValidTokenInfoResponse(const std::string account_key) {
|
| + return std::string("{ \"id\": \"") + AccountKeyToObfuscatedId(account_key) +
|
| + "\" }";
|
| }
|
|
|
| void ReturnOAuthUrlFetchResults(int fetcher_id,
|
| @@ -376,7 +396,7 @@ void IdentityAccountTrackerTest::ReturnOAuthUrlFetchResults(
|
|
|
| void IdentityAccountTrackerTest::ReturnOAuthUrlFetchSuccess(
|
| const std::string& account_key) {
|
| - IssueAccessToken();
|
| + IssueAccessToken(account_key);
|
| ReturnOAuthUrlFetchResults(gaia::GaiaOAuthClient::kUrlFetcherId,
|
| net::HTTP_OK,
|
| GetValidTokenInfoResponse(account_key));
|
| @@ -384,7 +404,7 @@ void IdentityAccountTrackerTest::ReturnOAuthUrlFetchSuccess(
|
|
|
| void IdentityAccountTrackerTest::ReturnOAuthUrlFetchFailure(
|
| const std::string& account_key) {
|
| - IssueAccessToken();
|
| + IssueAccessToken(account_key);
|
| ReturnOAuthUrlFetchResults(
|
| gaia::GaiaOAuthClient::kUrlFetcherId, net::HTTP_BAD_REQUEST, "");
|
| }
|
| @@ -395,8 +415,8 @@ TEST_F(IdentityAccountTrackerTest, Available) {
|
|
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, Revoke) {
|
| @@ -417,8 +437,8 @@ TEST_F(IdentityAccountTrackerTest, AvailableRemoveFetchCancelAvailable) {
|
| NotifyTokenAvailable("user@example.com");
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, AvailableRemoveAvailable) {
|
| @@ -426,16 +446,16 @@ TEST_F(IdentityAccountTrackerTest, AvailableRemoveAvailable) {
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| NotifyRemoveAccount("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_OUT, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(REMOVED, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com"),
|
| + TrackingEvent(SIGN_OUT, "user@example.com"),
|
| + TrackingEvent(REMOVED, "user@example.com")));
|
|
|
| NotifyTokenAvailable("user@example.com");
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailable) {
|
| @@ -443,13 +463,13 @@ TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailable) {
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| NotifyTokenRevoked("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_OUT, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com"),
|
| + TrackingEvent(SIGN_OUT, "user@example.com")));
|
|
|
| NotifyTokenAvailable("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailableWithPendingFetch) {
|
| @@ -460,8 +480,8 @@ TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailableWithPendingFetch) {
|
| NotifyTokenAvailable("user@example.com");
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, AvailableRevokeRemove) {
|
| @@ -469,13 +489,13 @@ TEST_F(IdentityAccountTrackerTest, AvailableRevokeRemove) {
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| NotifyTokenRevoked("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_OUT, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com"),
|
| + TrackingEvent(SIGN_OUT, "user@example.com")));
|
|
|
| NotifyRemoveAccount("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(REMOVED, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(REMOVED, "user@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, AvailableRevokeRevoke) {
|
| @@ -483,9 +503,9 @@ TEST_F(IdentityAccountTrackerTest, AvailableRevokeRevoke) {
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| NotifyTokenRevoked("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_OUT, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com"),
|
| + TrackingEvent(SIGN_OUT, "user@example.com")));
|
|
|
| NotifyTokenRevoked("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents());
|
| @@ -495,8 +515,8 @@ TEST_F(IdentityAccountTrackerTest, AvailableAvailable) {
|
| NotifyTokenAvailable("user@example.com");
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
|
|
| NotifyTokenAvailable("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents());
|
| @@ -506,37 +526,37 @@ TEST_F(IdentityAccountTrackerTest, TwoAccounts) {
|
| NotifyTokenAvailable("alpha@example.com");
|
| ReturnOAuthUrlFetchSuccess("alpha@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "alpha@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "alpha@example.com"),
|
| + TrackingEvent(SIGN_IN, "alpha@example.com")));
|
|
|
| NotifyTokenAvailable("beta@example.com");
|
| ReturnOAuthUrlFetchSuccess("beta@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "beta@example.com"),
|
| + TrackingEvent(SIGN_IN, "beta@example.com")));
|
|
|
| NotifyRemoveAccount("alpha@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(REMOVED, "alpha@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, "alpha@example.com"),
|
| + TrackingEvent(REMOVED, "alpha@example.com")));
|
|
|
| NotifyRemoveAccount("beta@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(REMOVED, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, "beta@example.com"),
|
| + TrackingEvent(REMOVED, "beta@example.com")));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, GlobalErrors) {
|
| NotifyTokenAvailable("alpha@example.com");
|
| ReturnOAuthUrlFetchSuccess("alpha@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "alpha@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "alpha@example.com"),
|
| + TrackingEvent(SIGN_IN, "alpha@example.com")));
|
| NotifyTokenAvailable("beta@example.com");
|
| ReturnOAuthUrlFetchSuccess("beta@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "beta@example.com"),
|
| + TrackingEvent(SIGN_IN, "beta@example.com")));
|
|
|
| EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(),
|
| account_tracker()->GetAuthStatus());
|
| @@ -545,7 +565,7 @@ TEST_F(IdentityAccountTrackerTest, GlobalErrors) {
|
| "beta@example.com",
|
| GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED));
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, "beta@example.com")));
|
| EXPECT_EQ(GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED),
|
| account_tracker()->GetAuthStatus());
|
|
|
| @@ -553,7 +573,7 @@ TEST_F(IdentityAccountTrackerTest, GlobalErrors) {
|
| "alpha@example.com",
|
| GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED));
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, "alpha@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, "alpha@example.com")));
|
| EXPECT_EQ(GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED),
|
| account_tracker()->GetAuthStatus());
|
|
|
| @@ -574,28 +594,24 @@ TEST_F(IdentityAccountTrackerTest, AvailableTokenFetchFailAvailable) {
|
| NotifyTokenAvailable("user@example.com");
|
| ReturnOAuthUrlFetchSuccess("user@example.com");
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "user@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "user@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "user@example.com"),
|
| + TrackingEvent(SIGN_IN, "user@example.com")));
|
| }
|
|
|
| // The Chrome OS fake sign-in manager doesn't do sign-in or sign-out.
|
| #if !defined(OS_CHROMEOS)
|
|
|
| TEST_F(IdentityAccountTrackerTest, PrimarySignOutSignIn) {
|
| - // Initial sign-in wasn't tracked due to test set-up, so there are no events.
|
| NotifyRemoveAccount(kPrimaryAccountKey);
|
| - EXPECT_TRUE(observer()->CheckEvents());
|
| + EXPECT_TRUE(observer()->CheckEvents(
|
| + TrackingEvent(SIGN_OUT, kPrimaryAccountKey),
|
| + TrackingEvent(REMOVED, kPrimaryAccountKey)));
|
|
|
| NotifyTokenAvailable(kPrimaryAccountKey);
|
| ReturnOAuthUrlFetchSuccess(kPrimaryAccountKey);
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, kPrimaryAccountKey, kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, kPrimaryAccountKey, kFakeGaiaId)));
|
| -
|
| - NotifyRemoveAccount(kPrimaryAccountKey);
|
| - EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, kPrimaryAccountKey, kFakeGaiaId),
|
| - TrackingEvent(REMOVED, kPrimaryAccountKey, kFakeGaiaId)));
|
| + TrackingEvent(ADDED, kPrimaryAccountKey),
|
| + TrackingEvent(SIGN_IN, kPrimaryAccountKey)));
|
| }
|
|
|
| TEST_F(IdentityAccountTrackerTest, PrimarySignOutSignInTwoAccounts) {
|
| @@ -606,20 +622,20 @@ TEST_F(IdentityAccountTrackerTest, PrimarySignOutSignInTwoAccounts) {
|
|
|
| observer()->SortEventsByUser();
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(ADDED, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "alpha@example.com"),
|
| + TrackingEvent(SIGN_IN, "alpha@example.com"),
|
| + TrackingEvent(ADDED, "beta@example.com"),
|
| + TrackingEvent(SIGN_IN, "beta@example.com")));
|
|
|
| - // Initial sign-in wasn't tracked due to test set-up, so there are no events
|
| - // for that account yet.
|
| NotifyRemoveAccount(kPrimaryAccountKey);
|
| observer()->SortEventsByUser();
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(REMOVED, "alpha@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_OUT, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(REMOVED, "beta@example.com", kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, "alpha@example.com"),
|
| + TrackingEvent(REMOVED, "alpha@example.com"),
|
| + TrackingEvent(SIGN_OUT, "beta@example.com"),
|
| + TrackingEvent(REMOVED, "beta@example.com"),
|
| + TrackingEvent(SIGN_OUT, kPrimaryAccountKey),
|
| + TrackingEvent(REMOVED, kPrimaryAccountKey)));
|
|
|
| // No events fire at all while profile is signed out.
|
| NotifyTokenRevoked("alpha@example.com");
|
| @@ -633,23 +649,81 @@ TEST_F(IdentityAccountTrackerTest, PrimarySignOutSignInTwoAccounts) {
|
| ReturnOAuthUrlFetchSuccess(kPrimaryAccountKey);
|
| observer()->SortEventsByUser();
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(ADDED, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "beta@example.com", kFakeGaiaId),
|
| - TrackingEvent(ADDED, "gamma@example.com", kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, "gamma@example.com", kFakeGaiaId),
|
| - TrackingEvent(ADDED, kPrimaryAccountKey, kFakeGaiaId),
|
| - TrackingEvent(SIGN_IN, kPrimaryAccountKey, kFakeGaiaId)));
|
| + TrackingEvent(ADDED, "beta@example.com"),
|
| + TrackingEvent(SIGN_IN, "beta@example.com"),
|
| + TrackingEvent(ADDED, "gamma@example.com"),
|
| + TrackingEvent(SIGN_IN, "gamma@example.com"),
|
| + TrackingEvent(ADDED, kPrimaryAccountKey),
|
| + TrackingEvent(SIGN_IN, kPrimaryAccountKey)));
|
|
|
| // Revoking the primary token does not affect other accounts.
|
| NotifyTokenRevoked(kPrimaryAccountKey);
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_OUT, kPrimaryAccountKey, kFakeGaiaId)));
|
| + TrackingEvent(SIGN_OUT, kPrimaryAccountKey)));
|
|
|
| NotifyTokenAvailable(kPrimaryAccountKey);
|
| EXPECT_TRUE(observer()->CheckEvents(
|
| - TrackingEvent(SIGN_IN, kPrimaryAccountKey, kFakeGaiaId)));
|
| + TrackingEvent(SIGN_IN, kPrimaryAccountKey)));
|
| }
|
|
|
| #endif // !defined(OS_CHROMEOS)
|
|
|
| +TEST_F(IdentityAccountTrackerTest, GetAccountsPrimary) {
|
| + std::vector<AccountIds> ids = account_tracker()->GetAccounts();
|
| + EXPECT_EQ(1ul, ids.size());
|
| + EXPECT_EQ(kPrimaryAccountKey, ids[0].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId(kPrimaryAccountKey), ids[0].gaia);
|
| +}
|
| +
|
| +TEST_F(IdentityAccountTrackerTest, GetAccountsSignedOut) {
|
| + NotifyTokenRevoked(kPrimaryAccountKey);
|
| +
|
| + std::vector<AccountIds> ids = account_tracker()->GetAccounts();
|
| + EXPECT_EQ(0ul, ids.size());
|
| +}
|
| +
|
| +TEST_F(IdentityAccountTrackerTest, GetAccountsOnlyReturnAccountsWithTokens) {
|
| + NotifyTokenAvailable("alpha@example.com");
|
| + NotifyTokenAvailable("beta@example.com");
|
| + ReturnOAuthUrlFetchSuccess("beta@example.com");
|
| +
|
| + std::vector<AccountIds> ids = account_tracker()->GetAccounts();
|
| + EXPECT_EQ(2ul, ids.size());
|
| + EXPECT_EQ(kPrimaryAccountKey, ids[0].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId(kPrimaryAccountKey), ids[0].gaia);
|
| + EXPECT_EQ("beta@example.com", ids[1].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId("beta@example.com"), ids[1].gaia);
|
| +}
|
| +
|
| +TEST_F(IdentityAccountTrackerTest, GetAccountsSortOrder) {
|
| + NotifyTokenAvailable("zeta@example.com");
|
| + ReturnOAuthUrlFetchSuccess("zeta@example.com");
|
| + NotifyTokenAvailable("alpha@example.com");
|
| + ReturnOAuthUrlFetchSuccess("alpha@example.com");
|
| +
|
| + // The primary account will be first in the vector. Remaining accounts
|
| + // will be sorted by gaia ID.
|
| + std::vector<AccountIds> ids = account_tracker()->GetAccounts();
|
| + EXPECT_EQ(3ul, ids.size());
|
| + EXPECT_EQ(kPrimaryAccountKey, ids[0].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId(kPrimaryAccountKey), ids[0].gaia);
|
| + EXPECT_EQ("alpha@example.com", ids[1].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId("alpha@example.com"), ids[1].gaia);
|
| + EXPECT_EQ("zeta@example.com", ids[2].account_key);
|
| + EXPECT_EQ(AccountKeyToObfuscatedId("zeta@example.com"), ids[2].gaia);
|
| +}
|
| +
|
| +TEST_F(IdentityAccountTrackerTest,
|
| + GetAccountsReturnNothingWhenPrimarySignedOut) {
|
| + NotifyTokenAvailable("zeta@example.com");
|
| + ReturnOAuthUrlFetchSuccess("zeta@example.com");
|
| + NotifyTokenAvailable("alpha@example.com");
|
| + ReturnOAuthUrlFetchSuccess("alpha@example.com");
|
| +
|
| + NotifyTokenRevoked(kPrimaryAccountKey);
|
| +
|
| + std::vector<AccountIds> ids = account_tracker()->GetAccounts();
|
| + EXPECT_EQ(0ul, ids.size());
|
| +}
|
| +
|
| } // namespace extensions
|
|
|