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

Unified Diff: google_apis/gaia/oauth2_token_service_unittest.cc

Issue 1143323005: Refactor AO2TS to make it easier to componentize. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address final comments Created 5 years, 6 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 | « google_apis/gaia/oauth2_token_service_request_unittest.cc ('k') | google_apis/gaia/ubertoken_fetcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gaia/oauth2_token_service_unittest.cc
diff --git a/google_apis/gaia/oauth2_token_service_unittest.cc b/google_apis/gaia/oauth2_token_service_unittest.cc
index 138ba86ba3b5d3cbd1ffca8fc00df28326ed38c2..924ae4cd0ee0a5d4f7195b1fefa241c7fad130e6 100644
--- a/google_apis/gaia/oauth2_token_service_unittest.cc
+++ b/google_apis/gaia/oauth2_token_service_unittest.cc
@@ -6,6 +6,7 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
+#include "google_apis/gaia/fake_oauth2_token_service_delegate.h"
#include "google_apis/gaia/gaia_constants.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "google_apis/gaia/oauth2_access_token_consumer.h"
@@ -43,9 +44,8 @@ class RetryingTestingOAuth2TokenServiceConsumer
class TestOAuth2TokenService : public OAuth2TokenService {
public:
- explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter)
- : request_context_getter_(getter) {
- }
+ explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate)
+ : OAuth2TokenService(delegate) {}
void CancelAllRequestsForTest() { CancelAllRequests(); }
@@ -53,49 +53,17 @@ class TestOAuth2TokenService : public OAuth2TokenService {
CancelRequestsForAccount(account_id);
}
- // For testing: set the refresh token to be used.
- void set_refresh_token(const std::string& account_id,
- const std::string& refresh_token) {
- if (refresh_token.empty())
- refresh_tokens_.erase(account_id);
- else
- refresh_tokens_[account_id] = refresh_token;
- }
-
- bool RefreshTokenIsAvailable(const std::string& account_id) const override {
- std::map<std::string, std::string>::const_iterator it =
- refresh_tokens_.find(account_id);
-
- return it != refresh_tokens_.end();
- };
-
- private:
- // OAuth2TokenService implementation.
- net::URLRequestContextGetter* GetRequestContext() override {
- return request_context_getter_.get();
+ FakeOAuth2TokenServiceDelegate* GetFakeOAuth2TokenServiceDelegate() {
+ return static_cast<FakeOAuth2TokenServiceDelegate*>(GetDelegate());
}
-
- OAuth2AccessTokenFetcher* CreateAccessTokenFetcher(
- const std::string& account_id,
- net::URLRequestContextGetter* getter,
- OAuth2AccessTokenConsumer* consumer) override {
- std::map<std::string, std::string>::const_iterator it =
- refresh_tokens_.find(account_id);
- DCHECK(it != refresh_tokens_.end());
- std::string refresh_token(it->second);
- return new OAuth2AccessTokenFetcherImpl(consumer, getter, refresh_token);
- };
-
- std::map<std::string, std::string> refresh_tokens_;
- scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
};
class OAuth2TokenServiceTest : public testing::Test {
public:
void SetUp() override {
- oauth2_service_.reset(
- new TestOAuth2TokenService(new net::TestURLRequestContextGetter(
- message_loop_.task_runner())));
+ oauth2_service_.reset(new TestOAuth2TokenService(
+ new FakeOAuth2TokenServiceDelegate(new net::TestURLRequestContextGetter(
+ message_loop_.task_runner()))));
account_id_ = "test_user@gmail.com";
}
@@ -123,7 +91,8 @@ TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
}
TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(
oauth2_service_->StartRequest(account_id_,
OAuth2TokenService::ScopeSet(),
@@ -143,7 +112,8 @@ TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
}
TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(
oauth2_service_->StartRequest(account_id_,
OAuth2TokenService::ScopeSet(),
@@ -172,7 +142,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
OAuth2TokenService::ScopeSet scopes2;
scopes2.insert("s3");
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
// First request.
scoped_ptr<OAuth2TokenService::Request> request(
@@ -218,7 +189,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
}
TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
// First request.
scoped_ptr<OAuth2TokenService::Request> request(
@@ -257,7 +229,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
}
TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
// First request.
scoped_ptr<OAuth2TokenService::Request> request(
@@ -296,7 +269,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
}
TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(
oauth2_service_->StartRequest(account_id_,
@@ -318,7 +292,8 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
}
TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
@@ -340,7 +315,8 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
}
TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
@@ -363,7 +339,8 @@ TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
// We have a valid refresh token; the first request is successful.
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
base::RunLoop().RunUntilIdle();
@@ -377,7 +354,8 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
EXPECT_EQ("token", consumer_.last_token_);
// The refresh token is no longer available; subsequent requests fail.
- oauth2_service_->set_refresh_token(account_id_, "");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "");
request = oauth2_service_->StartRequest(account_id_,
OAuth2TokenService::ScopeSet(), &consumer_);
base::RunLoop().RunUntilIdle();
@@ -387,7 +365,8 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
TEST_F(OAuth2TokenServiceTest,
ChangedRefreshTokenDoesNotAffectInFlightRequests) {
- oauth2_service_->set_refresh_token(account_id_, "first refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "first refreshToken");
OAuth2TokenService::ScopeSet scopes;
scopes.insert("s1");
scopes.insert("s2");
@@ -402,7 +381,8 @@ TEST_F(OAuth2TokenServiceTest,
ASSERT_TRUE(fetcher1);
// Note |request| is still pending when the refresh token changes.
- oauth2_service_->set_refresh_token(account_id_, "second refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "second refreshToken");
// A 2nd request (using the new refresh token) that occurs and completes
// while the 1st request is in flight is successful.
@@ -428,7 +408,8 @@ TEST_F(OAuth2TokenServiceTest,
}
TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
base::RunLoop().RunUntilIdle();
@@ -443,7 +424,8 @@ TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
}
TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
account_id_);
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
@@ -471,7 +453,8 @@ TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
OAuth2TokenService::ScopeSet scopes;
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
// First request.
scoped_ptr<OAuth2TokenService::Request> request(
@@ -501,7 +484,8 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
EXPECT_EQ("token", consumer_.last_token_);
// Invalidating the token should return a new token on the next request.
- oauth2_service_->InvalidateToken(account_id_, scopes, consumer_.last_token_);
+ oauth2_service_->InvalidateAccessToken(account_id_, scopes,
+ consumer_.last_token_);
scoped_ptr<OAuth2TokenService::Request> request3(
oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
base::RunLoop().RunUntilIdle();
@@ -518,12 +502,14 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
}
TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request(
oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
&consumer_));
- oauth2_service_->set_refresh_token("account_id_2", "refreshToken2");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ "account_id_2", "refreshToken2");
scoped_ptr<OAuth2TokenService::Request> request2(
oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
&consumer_));
@@ -546,14 +532,16 @@ TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) {
scope_set_1.end());
scope_set_2.insert("scope3");
- oauth2_service_->set_refresh_token(account_id_, "refreshToken");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, "refreshToken");
scoped_ptr<OAuth2TokenService::Request> request1(
oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
scoped_ptr<OAuth2TokenService::Request> request2(
oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
std::string account_id_2("account_id_2");
- oauth2_service_->set_refresh_token(account_id_2, "refreshToken2");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_2, "refreshToken2");
scoped_ptr<OAuth2TokenService::Request> request3(
oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_));
@@ -582,7 +570,8 @@ TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
scope_set.insert("scope2");
std::string refresh_token("refreshToken");
- oauth2_service_->set_refresh_token(account_id_, refresh_token);
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ account_id_, refresh_token);
scoped_ptr<OAuth2TokenService::Request> request1(
oauth2_service_->StartRequestForClient(account_id_,
@@ -648,3 +637,41 @@ TEST_F(OAuth2TokenServiceTest, RequestParametersOrderTest) {
}
}
}
+
+TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) {
+ std::string kEmail = "test@gmail.com";
+ std::set<std::string> scope_list;
+ scope_list.insert("scope");
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ kEmail, "refreshToken");
+ scoped_ptr<OAuth2TokenService::Request> request(
+ oauth2_service_->StartRequest(kEmail, scope_list, &consumer_));
+ base::RunLoop().RunUntilIdle();
+ net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+ fetcher->set_response_code(net::HTTP_OK);
+ fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+ EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
+ EXPECT_EQ(0, consumer_.number_of_errors_);
+ EXPECT_EQ("token", consumer_.last_token_);
+ EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size());
+
+ // Signs out and signs in
+ oauth2_service_->RevokeAllCredentials();
+
+ EXPECT_EQ(0, (int)oauth2_service_->token_cache_.size());
+ oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
+ kEmail, "refreshToken");
+ request = oauth2_service_->StartRequest(kEmail, scope_list, &consumer_);
+ base::RunLoop().RunUntilIdle();
+ fetcher = factory_.GetFetcherByID(0);
+ // ASSERT_TRUE(fetcher);
+ fetcher->set_response_code(net::HTTP_OK);
+ fetcher->SetResponseString(GetValidTokenResponse("another token", 3600));
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+ EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
+ EXPECT_EQ(0, consumer_.number_of_errors_);
+ EXPECT_EQ("another token", consumer_.last_token_);
+ EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size());
+}
« no previous file with comments | « google_apis/gaia/oauth2_token_service_request_unittest.cc ('k') | google_apis/gaia/ubertoken_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698