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

Unified Diff: chrome/browser/extensions/api/identity/account_tracker_unittest.cc

Issue 398573007: Cleanup: remove IdentityAccountTracker (replaced by gaia::AccountTracker) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to ToT Created 6 years, 5 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
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
deleted file mode 100644
index 216aa3e84f865423383128eb37e3c22cf16a0192..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
+++ /dev/null
@@ -1,729 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/extensions/api/identity/account_tracker.h"
-
-#include <algorithm>
-#include <vector>
-
-#include "base/strings/stringprintf.h"
-#include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
-#include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
-#include "chrome/browser/signin/fake_signin_manager.h"
-#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/test/base/testing_profile.h"
-#include "components/signin/core/browser/signin_manager_base.h"
-#include "content/public/test/test_browser_thread_bundle.h"
-#include "google_apis/gaia/gaia_oauth_client.h"
-#include "net/http/http_status_code.h"
-#include "net/url_request/test_url_fetcher_factory.h"
-#include "net/url_request/url_fetcher_delegate.h"
-#include "net/url_request/url_request_test_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// TODO(courage): Account removal really only applies to the primary account,
-// because that's the only account tracked by the SigninManager. Many of the
-// tests here remove non-primary accounts. They still properly test the account
-// state machine, but it may be confusing to readers. Update these tests to
-// avoid causing confusion.
-
-namespace {
-
-const char kPrimaryAccountKey[] = "primary_account@example.com";
-
-enum TrackingEventType {
- ADDED,
- REMOVED,
- SIGN_IN,
- SIGN_OUT
-};
-
-std::string AccountKeyToObfuscatedId(const std::string email) {
- return "obfid-" + email;
-}
-
-class TrackingEvent {
- public:
- TrackingEvent(TrackingEventType type,
- const std::string& account_key,
- const std::string& gaia_id)
- : type_(type),
- account_key_(account_key),
- gaia_id_(gaia_id) {}
-
- TrackingEvent(TrackingEventType type,
- const std::string& account_key)
- : type_(type),
- account_key_(account_key),
- gaia_id_(AccountKeyToObfuscatedId(account_key)) {}
-
- bool operator==(const TrackingEvent& event) const {
- return type_ == event.type_ && account_key_ == event.account_key_ &&
- gaia_id_ == event.gaia_id_;
- }
-
- std::string ToString() const {
- const char * typestr = "INVALID";
- switch (type_) {
- case ADDED:
- typestr = "ADD";
- break;
- case REMOVED:
- typestr = "REM";
- break;
- case SIGN_IN:
- typestr = " IN";
- break;
- case SIGN_OUT:
- typestr = "OUT";
- break;
- }
- return base::StringPrintf("{ type: %s, email: %s, gaia: %s }",
- typestr,
- account_key_.c_str(),
- gaia_id_.c_str());
- }
-
- private:
- friend bool CompareByUser(TrackingEvent a, TrackingEvent b);
-
- TrackingEventType type_;
- std::string account_key_;
- std::string gaia_id_;
-};
-
-bool CompareByUser(TrackingEvent a, TrackingEvent b) {
- return a.account_key_ < b.account_key_;
-}
-
-std::string Str(const std::vector<TrackingEvent>& events) {
- std::string str = "[";
- bool needs_comma = false;
- for (std::vector<TrackingEvent>::const_iterator it =
- events.begin(); it != events.end(); ++it) {
- if (needs_comma)
- str += ",\n ";
- needs_comma = true;
- str += it->ToString();
- }
- str += "]";
- return str;
-}
-
-} // namespace
-
-namespace extensions {
-
-class AccountTrackerObserver : public AccountTracker::Observer {
- public:
- AccountTrackerObserver() {}
- virtual ~AccountTrackerObserver() {}
-
- testing::AssertionResult CheckEvents();
- testing::AssertionResult CheckEvents(const TrackingEvent& e1);
- testing::AssertionResult CheckEvents(const TrackingEvent& e1,
- const TrackingEvent& e2);
- testing::AssertionResult CheckEvents(const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3);
- testing::AssertionResult CheckEvents(const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4);
- testing::AssertionResult CheckEvents(const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4,
- const TrackingEvent& e5);
- testing::AssertionResult CheckEvents(const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4,
- const TrackingEvent& e5,
- const TrackingEvent& e6);
- void Clear();
- void SortEventsByUser();
-
- // AccountTracker::Observer implementation
- virtual void OnAccountAdded(const AccountIds& ids) OVERRIDE;
- virtual void OnAccountRemoved(const AccountIds& ids) OVERRIDE;
- virtual void OnAccountSignInChanged(const AccountIds& ids, bool is_signed_in)
- OVERRIDE;
-
- private:
- testing::AssertionResult CheckEvents(
- const std::vector<TrackingEvent>& events);
-
- std::vector<TrackingEvent> events_;
-};
-
-void AccountTrackerObserver::OnAccountAdded(const AccountIds& ids) {
- events_.push_back(TrackingEvent(ADDED, ids.email, ids.gaia));
-}
-
-void AccountTrackerObserver::OnAccountRemoved(const AccountIds& ids) {
- events_.push_back(TrackingEvent(REMOVED, ids.email, ids.gaia));
-}
-
-void AccountTrackerObserver::OnAccountSignInChanged(const AccountIds& ids,
- bool is_signed_in) {
- events_.push_back(
- 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);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents() {
- std::vector<TrackingEvent> events;
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1,
- const TrackingEvent& e2) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- events.push_back(e2);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- events.push_back(e2);
- events.push_back(e3);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- events.push_back(e2);
- events.push_back(e3);
- events.push_back(e4);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4,
- const TrackingEvent& e5) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- events.push_back(e2);
- events.push_back(e3);
- events.push_back(e4);
- events.push_back(e5);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const TrackingEvent& e1,
- const TrackingEvent& e2,
- const TrackingEvent& e3,
- const TrackingEvent& e4,
- const TrackingEvent& e5,
- const TrackingEvent& e6) {
- std::vector<TrackingEvent> events;
- events.push_back(e1);
- events.push_back(e2);
- events.push_back(e3);
- events.push_back(e4);
- events.push_back(e5);
- events.push_back(e6);
- return CheckEvents(events);
-}
-
-testing::AssertionResult AccountTrackerObserver::CheckEvents(
- const std::vector<TrackingEvent>& events) {
- std::string maybe_newline = (events.size() + events_.size()) > 2 ? "\n" : "";
- testing::AssertionResult result(
- (events_ == events)
- ? testing::AssertionSuccess()
- : (testing::AssertionFailure()
- << "Expected " << maybe_newline << Str(events) << ", "
- << maybe_newline << "Got " << maybe_newline << Str(events_)));
- events_.clear();
- return result;
-}
-
-class IdentityAccountTrackerTest : public testing::Test {
- public:
- IdentityAccountTrackerTest() {}
-
- virtual ~IdentityAccountTrackerTest() {}
-
- virtual void SetUp() OVERRIDE {
- TestingProfile::Builder builder;
- builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
- BuildFakeProfileOAuth2TokenService);
- builder.AddTestingFactory(SigninManagerFactory::GetInstance(),
- FakeSigninManagerBase::Build);
-
- test_profile_ = builder.Build();
-
- fake_oauth2_token_service_ = static_cast<FakeProfileOAuth2TokenService*>(
- ProfileOAuth2TokenServiceFactory::GetForProfile(test_profile_.get()));
-
- 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 {
- account_tracker_->RemoveObserver(&observer_);
- account_tracker_->Shutdown();
- }
-
- Profile* profile() {
- return test_profile_.get();
- }
-
- AccountTrackerObserver* observer() {
- return &observer_;
- }
-
- AccountTracker* account_tracker() {
- return account_tracker_.get();
- }
-
- // Helpers to pass fake events to the tracker.
-
- void NotifyRemoveAccount(const std::string& username) {
-#if !defined(OS_CHROMEOS)
- if (username == kPrimaryAccountKey)
- fake_signin_manager_->SignOut(signin_metrics::SIGNOUT_TEST);
- else
- account_tracker()->GoogleSignedOut(username);
-#else
- account_tracker()->GoogleSignedOut(username);
-#endif
- }
-
- void NotifyTokenAvailable(const std::string& username) {
- fake_oauth2_token_service_->IssueRefreshTokenForUser(username,
- "refresh_token");
-#if !defined(OS_CHROMEOS)
- if (username == kPrimaryAccountKey)
- fake_signin_manager_->OnExternalSigninCompleted(username);
-#endif
- }
-
- void NotifyTokenRevoked(const std::string& username) {
- fake_oauth2_token_service_->IssueRefreshTokenForUser(username,
- std::string());
- }
-
- // Helpers to fake access token and user info fetching
- void IssueAccessToken(const std::string& username) {
- fake_oauth2_token_service_->IssueAllTokensForAccount(
- username, "access_token-" + username, base::Time::Max());
- }
-
- std::string GetValidTokenInfoResponse(const std::string account_key) {
- return std::string("{ \"id\": \"") + AccountKeyToObfuscatedId(account_key) +
- "\" }";
- }
-
- void ReturnOAuthUrlFetchResults(int fetcher_id,
- net::HttpStatusCode response_code,
- const std::string& response_string);
-
- void ReturnOAuthUrlFetchSuccess(const std::string& account_key);
- void ReturnOAuthUrlFetchFailure(const std::string& account_key);
-
- private:
- scoped_ptr<TestingProfile> test_profile_;
- net::TestURLFetcherFactory test_fetcher_factory_;
- FakeProfileOAuth2TokenService* fake_oauth2_token_service_;
- FakeSigninManagerForTesting* fake_signin_manager_;
- content::TestBrowserThreadBundle thread_bundle_;
-
- scoped_ptr<AccountTracker> account_tracker_;
- AccountTrackerObserver observer_;
-};
-
-void IdentityAccountTrackerTest::ReturnOAuthUrlFetchResults(
- int fetcher_id,
- net::HttpStatusCode response_code,
- const std::string& response_string) {
-
- net::TestURLFetcher* fetcher =
- test_fetcher_factory_.GetFetcherByID(fetcher_id);
- ASSERT_TRUE(fetcher);
- fetcher->set_response_code(response_code);
- fetcher->SetResponseString(response_string);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
-}
-
-void IdentityAccountTrackerTest::ReturnOAuthUrlFetchSuccess(
- const std::string& account_key) {
- IssueAccessToken(account_key);
- ReturnOAuthUrlFetchResults(gaia::GaiaOAuthClient::kUrlFetcherId,
- net::HTTP_OK,
- GetValidTokenInfoResponse(account_key));
-}
-
-void IdentityAccountTrackerTest::ReturnOAuthUrlFetchFailure(
- const std::string& account_key) {
- IssueAccessToken(account_key);
- ReturnOAuthUrlFetchResults(
- gaia::GaiaOAuthClient::kUrlFetcherId, net::HTTP_BAD_REQUEST, "");
-}
-
-TEST_F(IdentityAccountTrackerTest, Available) {
- NotifyTokenAvailable("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-
- ReturnOAuthUrlFetchSuccess("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "user@example.com"),
- TrackingEvent(SIGN_IN, "user@example.com")));
-}
-
-TEST_F(IdentityAccountTrackerTest, Revoke) {
- account_tracker()->OnRefreshTokenRevoked("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-}
-
-TEST_F(IdentityAccountTrackerTest, Remove) {
- NotifyRemoveAccount("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRemoveFetchCancelAvailable) {
- NotifyTokenAvailable("user@example.com");
- NotifyRemoveAccount("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "user@example.com"),
- TrackingEvent(SIGN_IN, "user@example.com")));
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRemoveAvailable) {
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- NotifyRemoveAccount("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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"),
- TrackingEvent(SIGN_IN, "user@example.com")));
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailable) {
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- NotifyTokenRevoked("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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")));
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRevokeAvailableWithPendingFetch) {
- NotifyTokenAvailable("user@example.com");
- NotifyTokenRevoked("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "user@example.com"),
- TrackingEvent(SIGN_IN, "user@example.com")));
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRevokeRemove) {
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- NotifyTokenRevoked("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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")));
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableRevokeRevoke) {
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- NotifyTokenRevoked("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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());
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableAvailable) {
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "user@example.com"),
- TrackingEvent(SIGN_IN, "user@example.com")));
-
- NotifyTokenAvailable("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-}
-
-TEST_F(IdentityAccountTrackerTest, TwoAccounts) {
- NotifyTokenAvailable("alpha@example.com");
- ReturnOAuthUrlFetchSuccess("alpha@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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"),
- TrackingEvent(SIGN_IN, "beta@example.com")));
-
- NotifyRemoveAccount("alpha@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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"),
- 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"),
- TrackingEvent(SIGN_IN, "alpha@example.com")));
- NotifyTokenAvailable("beta@example.com");
- ReturnOAuthUrlFetchSuccess("beta@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "beta@example.com"),
- TrackingEvent(SIGN_IN, "beta@example.com")));
-
- EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(),
- account_tracker()->GetAuthStatus());
-
- account_tracker()->ReportAuthError(
- "beta@example.com",
- GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED));
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(SIGN_OUT, "beta@example.com")));
- EXPECT_EQ(GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED),
- account_tracker()->GetAuthStatus());
-
- account_tracker()->ReportAuthError(
- "alpha@example.com",
- GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED));
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(SIGN_OUT, "alpha@example.com")));
- EXPECT_EQ(GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED),
- account_tracker()->GetAuthStatus());
-
- NotifyRemoveAccount("alpha@example.com");
- EXPECT_EQ(GoogleServiceAuthError(GoogleServiceAuthError::CONNECTION_FAILED),
- account_tracker()->GetAuthStatus());
-
- NotifyTokenAvailable("beta@example.com");
- EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(),
- account_tracker()->GetAuthStatus());
-}
-
-TEST_F(IdentityAccountTrackerTest, AvailableTokenFetchFailAvailable) {
- NotifyTokenAvailable("alpha@example.com");
- ReturnOAuthUrlFetchFailure("alpha@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-
- NotifyTokenAvailable("user@example.com");
- ReturnOAuthUrlFetchSuccess("user@example.com");
- EXPECT_TRUE(observer()->CheckEvents(
- 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) {
- NotifyRemoveAccount(kPrimaryAccountKey);
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(SIGN_OUT, kPrimaryAccountKey),
- TrackingEvent(REMOVED, kPrimaryAccountKey)));
-
- NotifyTokenAvailable(kPrimaryAccountKey);
- ReturnOAuthUrlFetchSuccess(kPrimaryAccountKey);
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, kPrimaryAccountKey),
- TrackingEvent(SIGN_IN, kPrimaryAccountKey)));
-}
-
-TEST_F(IdentityAccountTrackerTest, PrimarySignOutSignInTwoAccounts) {
- NotifyTokenAvailable("alpha@example.com");
- ReturnOAuthUrlFetchSuccess("alpha@example.com");
- NotifyTokenAvailable("beta@example.com");
- ReturnOAuthUrlFetchSuccess("beta@example.com");
-
- observer()->SortEventsByUser();
- EXPECT_TRUE(observer()->CheckEvents(
- TrackingEvent(ADDED, "alpha@example.com"),
- TrackingEvent(SIGN_IN, "alpha@example.com"),
- TrackingEvent(ADDED, "beta@example.com"),
- TrackingEvent(SIGN_IN, "beta@example.com")));
-
- NotifyRemoveAccount(kPrimaryAccountKey);
- observer()->SortEventsByUser();
- EXPECT_TRUE(observer()->CheckEvents(
- 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");
- NotifyTokenAvailable("gamma@example.com");
- EXPECT_TRUE(observer()->CheckEvents());
-
- // Signing the profile in again will resume tracking all accounts.
- NotifyTokenAvailable(kPrimaryAccountKey);
- ReturnOAuthUrlFetchSuccess("beta@example.com");
- ReturnOAuthUrlFetchSuccess("gamma@example.com");
- ReturnOAuthUrlFetchSuccess(kPrimaryAccountKey);
- observer()->SortEventsByUser();
- EXPECT_TRUE(observer()->CheckEvents(
- 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)));
-
- NotifyTokenAvailable(kPrimaryAccountKey);
- EXPECT_TRUE(observer()->CheckEvents(
- 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
« no previous file with comments | « chrome/browser/extensions/api/identity/account_tracker.cc ('k') | chrome/browser/extensions/api/identity/identity_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698