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 979b6166d05e34494cbd75c2add32ac653d9543d..f7999acba00592867e171f0e8b7d7c0c632870b4 100644 |
--- a/google_apis/gaia/oauth2_token_service_unittest.cc |
+++ b/google_apis/gaia/oauth2_token_service_unittest.cc |
@@ -23,18 +23,21 @@ class RetryingTestingOAuth2TokenServiceConsumer |
: public TestingOAuth2TokenServiceConsumer { |
public: |
RetryingTestingOAuth2TokenServiceConsumer( |
- OAuth2TokenService* oauth2_service) |
- : oauth2_service_(oauth2_service) {} |
+ OAuth2TokenService* oauth2_service, |
+ const std::string& account_id) |
+ : oauth2_service_(oauth2_service), |
+ account_id_(account_id) {} |
virtual ~RetryingTestingOAuth2TokenServiceConsumer() {} |
virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, |
const GoogleServiceAuthError& error) OVERRIDE { |
TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); |
request_.reset(oauth2_service_->StartRequest( |
- std::set<std::string>(), this).release()); |
+ account_id_, OAuth2TokenService::ScopeSet(), this).release()); |
} |
OAuth2TokenService* oauth2_service_; |
+ std::string account_id_; |
scoped_ptr<OAuth2TokenService::Request> request_; |
}; |
@@ -56,7 +59,10 @@ class TestOAuth2TokenService : public OAuth2TokenService { |
} |
protected: |
- virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; } |
+ virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE { |
+ // account_id explicitly ignored. |
+ return refresh_token_; |
+ } |
private: |
// OAuth2TokenService implementation. |
@@ -74,6 +80,7 @@ class OAuth2TokenServiceTest : public testing::Test { |
oauth2_service_.reset( |
new TestOAuth2TokenService(new net::TestURLRequestContextGetter( |
message_loop_.message_loop_proxy()))); |
+ account_id_ = "test_user@gmail.com"; |
} |
virtual void TearDown() OVERRIDE { |
@@ -85,12 +92,14 @@ class OAuth2TokenServiceTest : public testing::Test { |
base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. |
net::TestURLFetcherFactory factory_; |
scoped_ptr<TestOAuth2TokenService> oauth2_service_; |
+ std::string account_id_; |
TestingOAuth2TokenServiceConsumer consumer_; |
}; |
TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
scoped_ptr<OAuth2TokenService::Request> request( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -100,7 +109,8 @@ TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -118,7 +128,8 @@ TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -134,20 +145,20 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
} |
TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
- std::set<std::string> scopes1; |
+ OAuth2TokenService::ScopeSet scopes1; |
scopes1.insert("s1"); |
scopes1.insert("s2"); |
- std::set<std::string> scopes1_same; |
+ OAuth2TokenService::ScopeSet scopes1_same; |
scopes1_same.insert("s2"); |
scopes1_same.insert("s1"); |
- std::set<std::string> scopes2; |
+ OAuth2TokenService::ScopeSet scopes2; |
scopes2.insert("s3"); |
oauth2_service_->set_refresh_token("refreshToken"); |
// First request. |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- scopes1, &consumer_)); |
+ account_id_, scopes1, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -164,7 +175,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
// Second request to the same set of scopes, should return the same token |
// without needing a network request. |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(scopes1_same, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
// No new network fetcher. |
@@ -174,7 +185,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
// Third request to a new set of scopes, should return another token. |
scoped_ptr<OAuth2TokenService::Request> request3( |
- oauth2_service_->StartRequest(scopes2, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -193,7 +204,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
// First request. |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -208,7 +219,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
// Second request must try to access the network as the token has expired. |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -228,7 +240,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
// First request. |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -243,7 +255,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
// Second request must try to access the network as the token has expired. |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -262,7 +275,7 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -282,7 +295,7 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
ASSERT_TRUE(fetcher); |
@@ -304,10 +317,11 @@ TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
request.reset(); |
@@ -325,7 +339,7 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
// We have a valid refresh token; the first request is successful. |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
ASSERT_TRUE(fetcher); |
@@ -338,7 +352,8 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
// The refresh token is no longer available; subsequent requests fail. |
oauth2_service_->set_refresh_token(""); |
- request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); |
+ request = oauth2_service_->StartRequest(account_id_, |
+ OAuth2TokenService::ScopeSet(), &consumer_); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(1, consumer_.number_of_errors_); |
@@ -347,12 +362,12 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
TEST_F(OAuth2TokenServiceTest, |
ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
oauth2_service_->set_refresh_token("first refreshToken"); |
- std::set<std::string> scopes; |
+ OAuth2TokenService::ScopeSet scopes; |
scopes.insert("s1"); |
scopes.insert("s2"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- scopes, &consumer_)); |
+ account_id_, scopes, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
ASSERT_TRUE(fetcher1); |
@@ -364,7 +379,7 @@ TEST_F(OAuth2TokenServiceTest, |
// while the 1st request is in flight is successful. |
TestingOAuth2TokenServiceConsumer consumer2; |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(scopes, &consumer2)); |
+ oauth2_service_->StartRequest(account_id_, scopes, &consumer2)); |
base::RunLoop().RunUntilIdle(); |
net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
@@ -386,7 +401,7 @@ TEST_F(OAuth2TokenServiceTest, |
TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer_)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -400,9 +415,10 @@ TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
oauth2_service_->set_refresh_token("refreshToken"); |
- RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); |
+ RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), |
+ account_id_); |
scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
- std::set<std::string>(), &consumer)); |
+ account_id_, OAuth2TokenService::ScopeSet(), &consumer)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer.number_of_errors_); |
@@ -425,12 +441,12 @@ TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
} |
TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
- std::set<std::string> scopes; |
+ OAuth2TokenService::ScopeSet scopes; |
oauth2_service_->set_refresh_token("refreshToken"); |
// First request. |
scoped_ptr<OAuth2TokenService::Request> request( |
- oauth2_service_->StartRequest(scopes, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -447,7 +463,7 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
// Second request, should return the same token without needing a network |
// request. |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(scopes, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
// No new network fetcher. |
@@ -456,9 +472,9 @@ 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(scopes, consumer_.last_token_); |
+ oauth2_service_->InvalidateToken(account_id_, scopes, consumer_.last_token_); |
scoped_ptr<OAuth2TokenService::Request> request3( |
- oauth2_service_->StartRequest(scopes, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
EXPECT_EQ(0, consumer_.number_of_errors_); |
@@ -475,11 +491,13 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
oauth2_service_->set_refresh_token("refreshToken2"); |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
+ &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -492,21 +510,22 @@ TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
} |
TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { |
- std::set<std::string> scope_set_1; |
+ OAuth2TokenService::ScopeSet scope_set_1; |
scope_set_1.insert("scope1"); |
scope_set_1.insert("scope2"); |
- std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); |
+ OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), |
+ scope_set_1.end()); |
scope_set_2.insert("scope3"); |
oauth2_service_->set_refresh_token("refreshToken"); |
scoped_ptr<OAuth2TokenService::Request> request1( |
- oauth2_service_->StartRequest(scope_set_1, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequest(scope_set_2, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); |
oauth2_service_->set_refresh_token("refreshToken2"); |
scoped_ptr<OAuth2TokenService::Request> request3( |
- oauth2_service_->StartRequest(scope_set_1, &consumer_)); |
+ oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
@@ -536,18 +555,21 @@ TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { |
oauth2_service_->set_refresh_token(refresh_token); |
scoped_ptr<OAuth2TokenService::Request> request1( |
- oauth2_service_->StartRequestForClient(client_id_1, |
+ oauth2_service_->StartRequestForClient(account_id_, |
+ client_id_1, |
client_secret_1, |
scope_set, |
&consumer_)); |
scoped_ptr<OAuth2TokenService::Request> request2( |
- oauth2_service_->StartRequestForClient(client_id_2, |
+ oauth2_service_->StartRequestForClient(account_id_, |
+ client_id_2, |
client_secret_2, |
scope_set, |
&consumer_)); |
// Start a request that should be duplicate of |request1|. |
scoped_ptr<OAuth2TokenService::Request> request3( |
- oauth2_service_->StartRequestForClient(client_id_1, |
+ oauth2_service_->StartRequestForClient(account_id_, |
+ client_id_1, |
client_secret_1, |
scope_set, |
&consumer_)); |
@@ -565,48 +587,20 @@ TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { |
scope_set)); |
} |
-TEST_F(OAuth2TokenServiceTest, ClientScopeSetOrderTest) { |
- OAuth2TokenService::ScopeSet set_0; |
- OAuth2TokenService::ScopeSet set_1; |
- set_1.insert("1"); |
- |
- OAuth2TokenService::ClientScopeSet sets[] = { |
- OAuth2TokenService::ClientScopeSet("0", set_0), |
- OAuth2TokenService::ClientScopeSet("0", set_1), |
- OAuth2TokenService::ClientScopeSet("1", set_0), |
- OAuth2TokenService::ClientScopeSet("1", set_1), |
- }; |
- |
- for (size_t i = 0; i < arraysize(sets); i++) { |
- for (size_t j = 0; j < arraysize(sets); j++) { |
- if (i == j) { |
- EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; |
- EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; |
- } else if (i < j) { |
- EXPECT_TRUE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; |
- EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; |
- } else { |
- EXPECT_TRUE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; |
- EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; |
- } |
- } |
- } |
-} |
- |
-TEST_F(OAuth2TokenServiceTest, FetchParametersOrderTest) { |
+TEST_F(OAuth2TokenServiceTest, RequestParametersOrderTest) { |
OAuth2TokenService::ScopeSet set_0; |
OAuth2TokenService::ScopeSet set_1; |
set_1.insert("1"); |
- OAuth2TokenService::FetchParameters params[] = { |
- OAuth2TokenService::FetchParameters("0", "0", set_0), |
- OAuth2TokenService::FetchParameters("0", "0", set_1), |
- OAuth2TokenService::FetchParameters("0", "1", set_0), |
- OAuth2TokenService::FetchParameters("0", "1", set_1), |
- OAuth2TokenService::FetchParameters("1", "0", set_0), |
- OAuth2TokenService::FetchParameters("1", "0", set_1), |
- OAuth2TokenService::FetchParameters("1", "1", set_0), |
- OAuth2TokenService::FetchParameters("1", "1", set_1), |
+ OAuth2TokenService::RequestParameters params[] = { |
+ OAuth2TokenService::RequestParameters("0", "0", set_0), |
+ OAuth2TokenService::RequestParameters("0", "0", set_1), |
+ OAuth2TokenService::RequestParameters("0", "1", set_0), |
+ OAuth2TokenService::RequestParameters("0", "1", set_1), |
+ OAuth2TokenService::RequestParameters("1", "0", set_0), |
+ OAuth2TokenService::RequestParameters("1", "0", set_1), |
+ OAuth2TokenService::RequestParameters("1", "1", set_0), |
+ OAuth2TokenService::RequestParameters("1", "1", set_1), |
}; |
for (size_t i = 0; i < arraysize(params); i++) { |