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

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

Issue 1110743002: Handle transient LogOut errors with retry and backoff. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rogerta's comments 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
« no previous file with comments | « components/signin/core/browser/gaia_cookie_manager_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/gaia_cookie_manager_service_unittest.cc
diff --git a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
index 170a17abc1bd0ab00fd24bbf75dcca38a8435f13..4975e81cdfc0ce390bcfc07a30f09950be606258 100644
--- a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
+++ b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
@@ -14,6 +14,7 @@
#include "components/signin/core/browser/test_signin_client.h"
#include "google_apis/gaia/fake_oauth2_token_service.h"
#include "google_apis/gaia/gaia_constants.h"
+#include "google_apis/gaia/gaia_urls.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -68,13 +69,27 @@ class InstrumentedGaiaCookieManagerService : public GaiaCookieManagerService {
DISALLOW_COPY_AND_ASSIGN(InstrumentedGaiaCookieManagerService);
};
-class GaiaCookieManagerServiceTest : public testing::Test {
+class GaiaCookieManagerServiceTest : public testing::Test,
+ public net::URLFetcherDelegate {
public:
GaiaCookieManagerServiceTest()
: no_error_(GoogleServiceAuthError::NONE),
error_(GoogleServiceAuthError::SERVICE_ERROR),
canceled_(GoogleServiceAuthError::REQUEST_CANCELED) {}
+ void SetUp() override {
+ GURL logout_url(GaiaUrls::GetInstance()->service_logout_url().Resolve(
+ base::StringPrintf("?source=%s", GaiaConstants::kChromeSource)));
+
+ successful_fetcher_.reset(new net::TestURLFetcher(0, logout_url, this));
+ successful_fetcher_->set_status(net::URLRequestStatus());
+ successful_fetcher_->set_response_code(200);
+
+ failed_fetcher_.reset(new net::TestURLFetcher(0, logout_url, this));
+ failed_fetcher_->set_status(net::URLRequestStatus());
+ failed_fetcher_->set_response_code(500);
+ }
+
OAuth2TokenService* token_service() { return &token_service_; }
TestSigninClient* signin_client() { return &signin_client_; }
@@ -103,8 +118,9 @@ class GaiaCookieManagerServiceTest : public testing::Test {
consumer->OnListAccountsSuccess(data);
}
- void SimulateLogoutSuccess(net::URLFetcherDelegate* consumer) {
- consumer->OnURLFetchComplete(NULL);
+ void SimulateLogoutComplete(net::URLFetcherDelegate* consumer,
+ net::URLFetcher* fetcher) {
+ consumer->OnURLFetchComplete(fetcher);
}
void SimulateGetCheckConnctionInfoSuccess(net::TestURLFetcher* fetcher,
@@ -125,9 +141,13 @@ class GaiaCookieManagerServiceTest : public testing::Test {
test_fetcher->delegate()->OnURLFetchComplete(fetcher);
}
+ void OnURLFetchComplete(const net::URLFetcher* source) override {}
+
const GoogleServiceAuthError& no_error() { return no_error_; }
const GoogleServiceAuthError& error() { return error_; }
const GoogleServiceAuthError& canceled() { return canceled_; }
+ net::URLFetcher* successful_fetcher() { return successful_fetcher_.get(); }
+ net::URLFetcher* failed_fetcher() { return failed_fetcher_.get(); }
net::TestURLFetcherFactory* factory() { return &factory_; }
@@ -139,6 +159,8 @@ class GaiaCookieManagerServiceTest : public testing::Test {
GoogleServiceAuthError error_;
GoogleServiceAuthError canceled_;
TestSigninClient signin_client_;
+ scoped_ptr<net::TestURLFetcher> successful_fetcher_;
+ scoped_ptr<net::TestURLFetcher> failed_fetcher_;
};
} // namespace
@@ -329,7 +351,26 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsNoQueue) {
SimulateMergeSessionSuccess(&helper, "token1");
helper.LogOutAllAccounts();
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
+ ASSERT_FALSE(helper.is_running());
+}
+
+TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsFails) {
+ InstrumentedGaiaCookieManagerService helper(token_service(), signin_client());
+ MockObserver observer(&helper);
+
+ EXPECT_CALL(helper, StartFetchingUbertoken());
+ EXPECT_CALL(observer, OnAddAccountToCookieCompleted("acc2@gmail.com",
+ no_error()));
+ EXPECT_CALL(helper, StartLogOutUrlFetch());
+
+ helper.AddAccountToCookie("acc2@gmail.com");
+ SimulateMergeSessionSuccess(&helper, "token1");
+
+ helper.LogOutAllAccounts();
+ SimulateLogoutComplete(&helper, failed_fetcher());
+ // CookieManagerService is still running; it is retrying the failed logout.
+ ASSERT_TRUE(helper.is_running());
}
TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsAfterOneAddInQueue) {
@@ -345,7 +386,7 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsAfterOneAddInQueue) {
helper.LogOutAllAccounts();
SimulateMergeSessionSuccess(&helper, "token1");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
}
TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsAfterTwoAddsInQueue) {
@@ -365,7 +406,7 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsAfterTwoAddsInQueue) {
helper.LogOutAllAccounts();
SimulateMergeSessionSuccess(&helper, "token1");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
}
TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsTwice) {
@@ -383,7 +424,7 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsTwice) {
helper.LogOutAllAccounts();
// Only one LogOut will be fetched.
helper.LogOutAllAccounts();
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
}
TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsBeforeAdd) {
@@ -402,7 +443,7 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsBeforeAdd) {
helper.LogOutAllAccounts();
helper.AddAccountToCookie("acc3@gmail.com");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
// After LogOut the MergeSession should be fetched.
SimulateMergeSessionSuccess(&helper, "token2");
}
@@ -427,7 +468,7 @@ TEST_F(GaiaCookieManagerServiceTest, LogOutAllAccountsBeforeLogoutAndAdd) {
helper.LogOutAllAccounts();
helper.AddAccountToCookie("acc3@gmail.com");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
// After LogOut the MergeSession should be fetched.
SimulateMergeSessionSuccess(&helper, "token2");
}
@@ -452,7 +493,7 @@ TEST_F(GaiaCookieManagerServiceTest, PendingSigninThenSignout) {
helper.LogOutAllAccounts();
SimulateMergeSessionSuccess(&helper, "token1");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
helper.AddAccountToCookie("acc3@gmail.com");
SimulateMergeSessionSuccess(&helper, "token3");
@@ -474,7 +515,7 @@ TEST_F(GaiaCookieManagerServiceTest, CancelSignIn) {
helper.LogOutAllAccounts();
SimulateMergeSessionSuccess(&helper, "token1");
- SimulateLogoutSuccess(&helper);
+ SimulateLogoutComplete(&helper, successful_fetcher());
}
TEST_F(GaiaCookieManagerServiceTest, ListAccountsFirstReturnsEmpty) {
« no previous file with comments | « components/signin/core/browser/gaia_cookie_manager_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698