Index: chrome/browser/net/gaia/token_service_unittest.cc |
=================================================================== |
--- chrome/browser/net/gaia/token_service_unittest.cc (revision 111499) |
+++ chrome/browser/net/gaia/token_service_unittest.cc (working copy) |
@@ -111,6 +111,25 @@ |
service_.UpdateCredentials(credentials_); |
service_.UpdateOAuthCredentials(oauth_token_, oauth_secret_); |
} |
+ protected: |
+ void TestLoadSingleToken( |
+ std::map<std::string, std::string>* db_tokens, |
+ std::map<std::string, std::string>* memory_tokens, |
+ const std::string& service) { |
+ std::string token = service + "_token"; |
+ (*db_tokens)[service] = token; |
+ size_t prev_success_size = success_tracker_.size(); |
+ service_.LoadTokensIntoMemory(*db_tokens, memory_tokens); |
+ |
+ // Check notification. |
+ EXPECT_EQ(prev_success_size + 1, success_tracker_.size()); |
+ TokenService::TokenAvailableDetails details = success_tracker_.details(); |
+ EXPECT_EQ(details.service(), service); |
+ EXPECT_EQ(details.token(), token); |
+ // Check memory tokens. |
+ EXPECT_EQ(1U, memory_tokens->count(service)); |
+ EXPECT_EQ((*memory_tokens)[service], token); |
+ } |
}; |
TEST_F(TokenServiceTest, SanityCheck) { |
@@ -140,6 +159,20 @@ |
EXPECT_EQ(details.token(), "token"); |
} |
+TEST_F(TokenServiceTest, NotificationOAuthLoginTokenSuccess) { |
+ EXPECT_EQ(0U, success_tracker_.size()); |
+ EXPECT_EQ(0U, failure_tracker_.size()); |
+ service_.OnOAuthLoginTokenSuccess("rt1", "at1", 3600); |
+ EXPECT_EQ(1U, success_tracker_.size()); |
+ EXPECT_EQ(0U, failure_tracker_.size()); |
+ |
+ TokenService::TokenAvailableDetails details = success_tracker_.details(); |
+ // MSVC doesn't like this comparison as EQ. |
+ EXPECT_TRUE(details.service() == |
+ GaiaConstants::kGaiaOAuth2LoginRefreshToken); |
+ EXPECT_EQ(details.token(), "rt1"); |
+} |
+ |
TEST_F(TokenServiceTest, NotificationSuccessOAuth) { |
EXPECT_EQ(0U, success_tracker_.size()); |
EXPECT_EQ(0U, failure_tracker_.size()); |
@@ -169,6 +202,22 @@ |
EXPECT_TRUE(details.error() == error); // Struct has no print function. |
} |
+TEST_F(TokenServiceTest, NotificationOAuthLoginTokenFailed) { |
+ EXPECT_EQ(0U, success_tracker_.size()); |
+ EXPECT_EQ(0U, failure_tracker_.size()); |
+ GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
+ service_.OnOAuthLoginTokenFailure(error); |
+ EXPECT_EQ(0U, success_tracker_.size()); |
+ EXPECT_EQ(1U, failure_tracker_.size()); |
+ |
+ TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); |
+ |
+ // MSVC doesn't like this comparison as EQ. |
+ EXPECT_TRUE(details.service() == |
+ GaiaConstants::kGaiaOAuth2LoginRefreshToken); |
+ EXPECT_TRUE(details.error() == error); // Struct has no print function. |
+} |
+ |
TEST_F(TokenServiceTest, NotificationFailedOAuth) { |
EXPECT_EQ(0U, success_tracker_.size()); |
EXPECT_EQ(0U, failure_tracker_.size()); |
@@ -198,6 +247,21 @@ |
EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), ""); |
} |
+TEST_F(TokenServiceTest, OnOAuth2LoginTokenSuccessUpdate) { |
+ std::string service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; |
+ service_.OnOAuthLoginTokenSuccess("rt1", "at1", 3600); |
+ EXPECT_TRUE(service_.HasOAuthLoginToken()); |
+ EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt1"); |
+ |
+ service_.OnOAuthLoginTokenSuccess("rt2", "at2", 3600); |
+ EXPECT_TRUE(service_.HasOAuthLoginToken()); |
+ EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt2"); |
+ |
+ service_.OnOAuthLoginTokenSuccess("rt3", "at3", 3600); |
+ EXPECT_TRUE(service_.HasOAuthLoginToken()); |
+ EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt3"); |
+} |
+ |
TEST_F(TokenServiceTest, OnTokenSuccess) { |
// Don't "start fetching", just go ahead and issue the callback. |
service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
@@ -374,16 +438,20 @@ |
EXPECT_TRUE(memory_tokens.empty()); |
EXPECT_EQ(0U, success_tracker_.size()); |
- db_tokens[GaiaConstants::kSyncServiceOAuth] = "token"; |
- service_.LoadTokensIntoMemory(db_tokens, &memory_tokens); |
- EXPECT_EQ(1U, success_tracker_.size()); |
- |
- TokenService::TokenAvailableDetails details = success_tracker_.details(); |
- // MSVC doesn't like this comparison as EQ. |
- EXPECT_TRUE(details.service() == GaiaConstants::kSyncServiceOAuth); |
- EXPECT_EQ(details.token(), "token"); |
- EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncServiceOAuth)); |
- EXPECT_EQ(memory_tokens[GaiaConstants::kSyncServiceOAuth], "token"); |
+ std::string service; |
+ std::string token; |
+ for (int i = 0; i < TokenService::kNumServices; ++i) { |
+ service = TokenService::kServices[i]; |
+ TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
+ } |
+ for (int i = 0; i < TokenService::kNumOAuthServices; ++i) { |
+ service = TokenService::kOAuthServices[i]; |
+ TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
+ } |
+ service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; |
+ TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
+ service = GaiaConstants::kGaiaOAuth2LoginAccessToken; |
+ TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
} |
TEST_F(TokenServiceTest, LoadTokensIntoMemoryAdvanced) { |