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

Unified Diff: chrome/browser/signin/account_reconcilor_unittest.cc

Issue 1075273002: Handle ListAccount fetches from within the GaiaCookieManagerService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a test post rebase Created 5 years, 8 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/signin/account_reconcilor_unittest.cc
diff --git a/chrome/browser/signin/account_reconcilor_unittest.cc b/chrome/browser/signin/account_reconcilor_unittest.cc
index 7d6e9c5ae21cf48615471cacc8611124dfd85688..73d79c1dea62085739e751db8fac4db71d1d0eec 100644
--- a/chrome/browser/signin/account_reconcilor_unittest.cc
+++ b/chrome/browser/signin/account_reconcilor_unittest.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/signin/account_reconcilor_factory.h"
#include "chrome/browser/signin/account_tracker_service_factory.h"
#include "chrome/browser/signin/chrome_signin_client_factory.h"
+#include "chrome/browser/signin/fake_gaia_cookie_manager_service.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"
@@ -88,6 +89,9 @@ class AccountReconcilorTest : public ::testing::TestWithParam<bool> {
FakeProfileOAuth2TokenService* token_service() { return token_service_; }
TestSigninClient* test_signin_client() { return test_signin_client_; }
AccountTrackerService* account_tracker() { return account_tracker_; }
+ FakeGaiaCookieManagerService* cookie_manager_service() {
+ return cookie_manager_service_;
+ }
base::HistogramTester* histogram_tester() { return &histogram_tester_; }
void SetFakeResponse(const std::string& url,
@@ -114,7 +118,6 @@ class AccountReconcilorTest : public ::testing::TestWithParam<bool> {
content_settings::Observer* observer,
const ContentSettingsPattern& primary_pattern);
- GURL list_accounts_url() { return list_accounts_url_; }
GURL get_check_connection_info_url() {
return get_check_connection_info_url_;
}
@@ -126,11 +129,11 @@ class AccountReconcilorTest : public ::testing::TestWithParam<bool> {
FakeProfileOAuth2TokenService* token_service_;
TestSigninClient* test_signin_client_;
AccountTrackerService* account_tracker_;
+ FakeGaiaCookieManagerService* cookie_manager_service_;
MockAccountReconcilor* mock_reconcilor_;
net::FakeURLFetcherFactory url_fetcher_factory_;
scoped_ptr<TestingProfileManager> testing_profile_manager_;
base::HistogramTester histogram_tester_;
- GURL list_accounts_url_;
GURL get_check_connection_info_url_;
DISALLOW_COPY_AND_ASSIGN(AccountReconcilorTest);
@@ -140,6 +143,7 @@ AccountReconcilorTest::AccountReconcilorTest()
: signin_manager_(NULL),
token_service_(NULL),
test_signin_client_(NULL),
+ cookie_manager_service_(NULL),
mock_reconcilor_(NULL),
url_fetcher_factory_(NULL) {}
@@ -151,16 +155,10 @@ void AccountReconcilorTest::SetUp() {
switches::kEnableNewProfileManagement);
}
- list_accounts_url_ = GaiaUrls::GetInstance()->ListAccountsURLWithSource(
- GaiaConstants::kReconcilorSource);
get_check_connection_info_url_ =
GaiaUrls::GetInstance()->GetCheckConnectionInfoURLWithSource(
GaiaConstants::kChromeSource);
- // Specific tests may set a response that includes specific accounts.
- SetFakeResponse(list_accounts_url().spec(), "",
- net::HTTP_NOT_FOUND, net::URLRequestStatus::SUCCESS);
-
testing_profile_manager_.reset(
new TestingProfileManager(TestingBrowserProcess::GetGlobal()));
ASSERT_TRUE(testing_profile_manager_.get()->SetUp());
@@ -171,6 +169,9 @@ void AccountReconcilorTest::SetUp() {
factories.push_back(std::make_pair(
ProfileOAuth2TokenServiceFactory::GetInstance(),
BuildFakeProfileOAuth2TokenService));
+ factories.push_back(std::make_pair(
+ GaiaCookieManagerServiceFactory::GetInstance(),
+ FakeGaiaCookieManagerService::Build));
factories.push_back(std::make_pair(SigninManagerFactory::GetInstance(),
FakeSigninManagerBase::Build));
factories.push_back(std::make_pair(AccountReconcilorFactory::GetInstance(),
@@ -195,6 +196,17 @@ void AccountReconcilorTest::SetUp() {
signin_manager_ =
static_cast<FakeSigninManagerForTesting*>(
SigninManagerFactory::GetForProfile(profile()));
+
+ test_signin_client_ =
+ static_cast<TestSigninClient*>(
+ ChromeSigninClientFactory::GetForProfile(profile()));
+
+ cookie_manager_service_ =
+ static_cast<FakeGaiaCookieManagerService*>(
+ GaiaCookieManagerServiceFactory::GetForProfile(profile()));
+ cookie_manager_service_->Init(&url_fetcher_factory_);
+
+ cookie_manager_service_->SetListAccountsResponseHttpNotFound();
}
MockAccountReconcilor* AccountReconcilorTest::GetMockReconcilor() {
@@ -303,41 +315,37 @@ TEST_F(AccountReconcilorTest, ProfileAlreadyConnected) {
TEST_F(AccountReconcilorTest, GetAccountsFromCookieSuccess) {
const std::string account_id =
ConnectProfileToAccount("12345", "user@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseOneAccountWithExpiry(
+ "user@gmail.com", true);
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id));
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 0]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
reconcilor->StartReconcile();
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
-
base::RunLoop().RunUntilIdle();
- ASSERT_TRUE(reconcilor->AreGaiaAccountsSet());
- const std::vector<std::pair<std::string, bool> >& accounts =
- reconcilor->GetGaiaAccountsForTesting();
+
+ std::vector<std::pair<std::string, bool> > accounts;
+ ASSERT_TRUE(cookie_manager_service()->ListAccounts(&accounts));
ASSERT_EQ(1u, accounts.size());
ASSERT_EQ(account_id, accounts[0].first);
}
TEST_F(AccountReconcilorTest, GetAccountsFromCookieFailure) {
ConnectProfileToAccount("12345", "user@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseHttpNotFound();
+
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(), "",
- net::HTTP_NOT_FOUND, net::URLRequestStatus::SUCCESS);
-
reconcilor->StartReconcile();
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
-
base::RunLoop().RunUntilIdle();
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
+
+ std::vector<std::pair<std::string, bool> > accounts;
+ ASSERT_FALSE(cookie_manager_service()->ListAccounts(&accounts));
+ ASSERT_EQ(0u, accounts.size());
}
TEST_P(AccountReconcilorTest, StartReconcileNoop) {
@@ -348,13 +356,10 @@ TEST_P(AccountReconcilorTest, StartReconcileNoop) {
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
+ cookie_manager_service()->SetListAccountsResponseOneAccount("user@gmail.com");
reconcilor->StartReconcile();
ASSERT_TRUE(reconcilor->is_reconcile_started_);
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
base::RunLoop().RunUntilIdle();
ASSERT_FALSE(reconcilor->is_reconcile_started_);
@@ -379,9 +384,11 @@ TEST_P(AccountReconcilorTest, StartReconcileCookiesDisabled) {
reconcilor->StartReconcile();
ASSERT_FALSE(reconcilor->is_reconcile_started_);
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
base::RunLoop().RunUntilIdle();
+ std::vector<std::pair<std::string, bool> > accounts;
+ // This will be the first call to ListAccounts.
+ ASSERT_FALSE(cookie_manager_service()->ListAccounts(&accounts));
ASSERT_FALSE(reconcilor->is_reconcile_started_);
}
@@ -468,17 +475,13 @@ TEST_P(AccountReconcilorTest, StartReconcileNoopWithDots) {
const std::string account_id =
ConnectProfileToAccount("12345", "Dot.S@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseOneAccount(
+ "dot.s@gmail.com");
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"dot.s@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
reconcilor->StartReconcile();
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
-
base::RunLoop().RunUntilIdle();
ASSERT_FALSE(reconcilor->is_reconcile_started_);
@@ -493,19 +496,15 @@ TEST_P(AccountReconcilorTest, StartReconcileNoopMultiple) {
ConnectProfileToAccount("12345", "user@gmail.com");
const std::string account_id2 =
PickAccountIdForAccount("67890", "other@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseTwoAccounts(
+ "user@gmail.com", "other@gmail.com");
token_service()->UpdateCredentials(account_id2, "refresh_token");
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1], "
- "[\"b\", 0, \"n\", \"other@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
reconcilor->StartReconcile();
- ASSERT_FALSE(reconcilor->AreGaiaAccountsSet());
base::RunLoop().RunUntilIdle();
ASSERT_FALSE(reconcilor->is_reconcile_started_);
@@ -521,6 +520,8 @@ TEST_P(AccountReconcilorTest, StartReconcileAddToCookie) {
const std::string account_id =
ConnectProfileToAccount("12345", "user@gmail.com");
token_service()->UpdateCredentials(account_id, "refresh_token");
+ cookie_manager_service()->SetListAccountsResponseOneAccount(
+ "user@gmail.com");
const std::string account_id2 =
PickAccountIdForAccount("67890", "other@gmail.com");
@@ -528,10 +529,6 @@ TEST_P(AccountReconcilorTest, StartReconcileAddToCookie) {
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id2));
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor = GetMockReconcilor();
reconcilor->StartReconcile();
@@ -555,15 +552,12 @@ TEST_P(AccountReconcilorTest, StartReconcileRemoveFromCookie) {
const std::string account_id =
ConnectProfileToAccount("12345", "user@gmail.com");
token_service()->UpdateCredentials(account_id, "refresh_token");
+ cookie_manager_service()->SetListAccountsResponseTwoAccounts(
+ "user@gmail.com", "other@gmail.com");
EXPECT_CALL(*GetMockReconcilor(), PerformLogoutAllAccountsAction());
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id));
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1], "
- "[\"b\", 0, \"n\", \"other@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor = GetMockReconcilor();
reconcilor->StartReconcile();
ASSERT_TRUE(reconcilor->is_reconcile_started_);
@@ -591,17 +585,13 @@ TEST_P(AccountReconcilorTest, StartReconcileAddToCookieTwice) {
const std::string account_id3 =
PickAccountIdForAccount("34567", "third@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseOneAccount(
+ "user@gmail.com");
token_service()->UpdateCredentials(account_id2, "refresh_token");
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id2));
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id3));
- SetFakeResponse(
- list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK,
- net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor = GetMockReconcilor();
reconcilor->StartReconcile();
@@ -621,13 +611,10 @@ TEST_P(AccountReconcilorTest, StartReconcileAddToCookieTwice) {
"Signin.Reconciler.RemovedFromCookieJar.FirstRun", 0, 1);
// Do another pass after I've added a third account to the token service
+ cookie_manager_service()->SetListAccountsResponseTwoAccounts(
+ "user@gmail.com", "other@gmail.com");
+ cookie_manager_service()->set_list_accounts_fetched_once_for_testing(false);
- SetFakeResponse(
- list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1], "
- "[\"b\", 0, \"n\", \"other@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK,
- net::URLRequestStatus::SUCCESS);
// This will cause the reconcilor to fire.
token_service()->UpdateCredentials(account_id3, "refresh_token");
base::RunLoop().RunUntilIdle();
@@ -662,16 +649,13 @@ TEST_P(AccountReconcilorTest, StartReconcileBadPrimary) {
PickAccountIdForAccount("67890", "other@gmail.com");
token_service()->UpdateCredentials(account_id2, "refresh_token");
+ cookie_manager_service()->SetListAccountsResponseTwoAccounts(
+ "other@gmail.com", "user@gmail.com");
EXPECT_CALL(*GetMockReconcilor(), PerformLogoutAllAccountsAction());
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id));
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id2));
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"other@gmail.com\", \"p\", 0, 0, 0, 0, 1], "
- "[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor = GetMockReconcilor();
reconcilor->StartReconcile();
@@ -697,15 +681,13 @@ TEST_P(AccountReconcilorTest, StartReconcileBadPrimary) {
TEST_P(AccountReconcilorTest, StartReconcileOnlyOnce) {
const std::string account_id =
ConnectProfileToAccount("12345", "user@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseOneAccount(
+ "user@gmail.com");
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
ASSERT_FALSE(reconcilor->is_reconcile_started_);
reconcilor->StartReconcile();
ASSERT_TRUE(reconcilor->is_reconcile_started_);
@@ -720,14 +702,11 @@ TEST_P(AccountReconcilorTest, StartReconcileWithSessionInfoExpiredDefault) {
const std::string account_id2 =
PickAccountIdForAccount("67890", "other@gmail.com");
token_service()->UpdateCredentials(account_id2, "refresh_token");
+ cookie_manager_service()->SetListAccountsResponseTwoAccountsWithExpiry(
+ "user@gmail.com", true, "other@gmail.com", false);
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id));
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 0],"
- "[\"b\", 0, \"n\", \"other@gmail.com\", \"p\", 0, 0, 0, 0, 1]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
@@ -745,13 +724,11 @@ TEST_P(AccountReconcilorTest, StartReconcileWithSessionInfoExpiredDefault) {
TEST_F(AccountReconcilorTest, AddAccountToCookieCompletedWithBogusAccount) {
const std::string account_id =
ConnectProfileToAccount("12345", "user@gmail.com");
+ cookie_manager_service()->SetListAccountsResponseOneAccountWithExpiry(
+ "user@gmail.com", true);
EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(account_id));
- SetFakeResponse(list_accounts_url().spec(),
- "[\"f\", [[\"b\", 0, \"n\", \"user@gmail.com\", \"p\", 0, 0, 0, 0, 0]]]",
- net::HTTP_OK, net::URLRequestStatus::SUCCESS);
-
AccountReconcilor* reconcilor =
AccountReconcilorFactory::GetForProfile(profile());
ASSERT_TRUE(reconcilor);
« no previous file with comments | « chrome/browser/signin/about_signin_internals_factory.cc ('k') | chrome/browser/signin/chrome_signin_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698