| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file defines a unit test for the profile's token service. | 5 // This file defines a unit test for the profile's token service. |
| 6 | 6 |
| 7 #include "chrome/browser/signin/token_service_unittest.h" | 7 #include "chrome/browser/signin/token_service_unittest.h" |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 credentials_.token = "token"; | 66 credentials_.token = "token"; |
| 67 credentials_.data = "data"; | 67 credentials_.data = "data"; |
| 68 oauth_token_ = "oauth"; | 68 oauth_token_ = "oauth"; |
| 69 oauth_secret_ = "secret"; | 69 oauth_secret_ = "secret"; |
| 70 | 70 |
| 71 ASSERT_TRUE(db_thread_.Start()); | 71 ASSERT_TRUE(db_thread_.Start()); |
| 72 | 72 |
| 73 profile_.reset(new TestingProfile()); | 73 profile_.reset(new TestingProfile()); |
| 74 profile_->CreateWebDataService(false); | 74 profile_->CreateWebDataService(false); |
| 75 WaitForDBLoadCompletion(); | 75 WaitForDBLoadCompletion(); |
| 76 service_ = profile_->GetTokenService(); |
| 76 | 77 |
| 77 success_tracker_.ListenFor(chrome::NOTIFICATION_TOKEN_AVAILABLE, | 78 success_tracker_.ListenFor(chrome::NOTIFICATION_TOKEN_AVAILABLE, |
| 78 content::Source<TokenService>(&service_)); | 79 content::Source<TokenService>(service_)); |
| 79 failure_tracker_.ListenFor(chrome::NOTIFICATION_TOKEN_REQUEST_FAILED, | 80 failure_tracker_.ListenFor(chrome::NOTIFICATION_TOKEN_REQUEST_FAILED, |
| 80 content::Source<TokenService>(&service_)); | 81 content::Source<TokenService>(service_)); |
| 81 | 82 |
| 82 service_.Initialize("test", profile_.get()); | 83 service_->Initialize("test", profile_.get()); |
| 83 } | 84 } |
| 84 | 85 |
| 85 void TokenServiceTestHarness::TearDown() { | 86 void TokenServiceTestHarness::TearDown() { |
| 86 // You have to destroy the profile before the db_thread_ stops. | 87 // You have to destroy the profile before the db_thread_ stops. |
| 87 if (profile_.get()) { | 88 if (profile_.get()) { |
| 88 profile_.reset(NULL); | 89 profile_.reset(NULL); |
| 89 } | 90 } |
| 90 | 91 |
| 91 db_thread_.Stop(); | 92 db_thread_.Stop(); |
| 92 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); | 93 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 105 done.Wait(); | 106 done.Wait(); |
| 106 | 107 |
| 107 // Notifications should be returned from the DB thread onto the UI thread. | 108 // Notifications should be returned from the DB thread onto the UI thread. |
| 108 message_loop_.RunAllPending(); | 109 message_loop_.RunAllPending(); |
| 109 } | 110 } |
| 110 | 111 |
| 111 class TokenServiceTest : public TokenServiceTestHarness { | 112 class TokenServiceTest : public TokenServiceTestHarness { |
| 112 public: | 113 public: |
| 113 virtual void SetUp() { | 114 virtual void SetUp() { |
| 114 TokenServiceTestHarness::SetUp(); | 115 TokenServiceTestHarness::SetUp(); |
| 115 service_.UpdateCredentials(credentials_); | 116 service_->UpdateCredentials(credentials_); |
| 116 service_.UpdateOAuthCredentials(oauth_token_, oauth_secret_); | 117 service_->UpdateOAuthCredentials(oauth_token_, oauth_secret_); |
| 117 } | 118 } |
| 118 protected: | 119 protected: |
| 119 void TestLoadSingleToken( | 120 void TestLoadSingleToken( |
| 120 std::map<std::string, std::string>* db_tokens, | 121 std::map<std::string, std::string>* db_tokens, |
| 121 std::map<std::string, std::string>* memory_tokens, | 122 std::map<std::string, std::string>* memory_tokens, |
| 122 const std::string& service) { | 123 const std::string& service) { |
| 123 std::string token = service + "_token"; | 124 std::string token = service + "_token"; |
| 124 (*db_tokens)[service] = token; | 125 (*db_tokens)[service] = token; |
| 125 size_t prev_success_size = success_tracker_.size(); | 126 size_t prev_success_size = success_tracker_.size(); |
| 126 service_.LoadTokensIntoMemory(*db_tokens, memory_tokens); | 127 service_->LoadTokensIntoMemory(*db_tokens, memory_tokens); |
| 127 | 128 |
| 128 // Check notification. | 129 // Check notification. |
| 129 EXPECT_EQ(prev_success_size + 1, success_tracker_.size()); | 130 EXPECT_EQ(prev_success_size + 1, success_tracker_.size()); |
| 130 TokenService::TokenAvailableDetails details = success_tracker_.details(); | 131 TokenService::TokenAvailableDetails details = success_tracker_.details(); |
| 131 EXPECT_EQ(details.service(), service); | 132 EXPECT_EQ(details.service(), service); |
| 132 EXPECT_EQ(details.token(), token); | 133 EXPECT_EQ(details.token(), token); |
| 133 // Check memory tokens. | 134 // Check memory tokens. |
| 134 EXPECT_EQ(1U, memory_tokens->count(service)); | 135 EXPECT_EQ(1U, memory_tokens->count(service)); |
| 135 EXPECT_EQ((*memory_tokens)[service], token); | 136 EXPECT_EQ((*memory_tokens)[service], token); |
| 136 } | 137 } |
| 137 }; | 138 }; |
| 138 | 139 |
| 139 TEST_F(TokenServiceTest, SanityCheck) { | 140 TEST_F(TokenServiceTest, SanityCheck) { |
| 140 EXPECT_TRUE(service_.HasLsid()); | 141 EXPECT_TRUE(service_->HasLsid()); |
| 141 EXPECT_EQ(service_.GetLsid(), "lsid"); | 142 EXPECT_EQ(service_->GetLsid(), "lsid"); |
| 142 EXPECT_FALSE(service_.HasTokenForService("nonexistent service")); | 143 EXPECT_FALSE(service_->HasTokenForService("nonexistent service")); |
| 143 EXPECT_TRUE(service_.HasOAuthCredentials()); | 144 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 144 EXPECT_EQ(service_.GetOAuthToken(), "oauth"); | 145 EXPECT_EQ(service_->GetOAuthToken(), "oauth"); |
| 145 EXPECT_EQ(service_.GetOAuthSecret(), "secret"); | 146 EXPECT_EQ(service_->GetOAuthSecret(), "secret"); |
| 146 } | 147 } |
| 147 | 148 |
| 148 TEST_F(TokenServiceTest, NoToken) { | 149 TEST_F(TokenServiceTest, NoToken) { |
| 149 EXPECT_FALSE(service_.HasTokenForService("nonexistent service")); | 150 EXPECT_FALSE(service_->HasTokenForService("nonexistent service")); |
| 150 EXPECT_EQ(service_.GetTokenForService("nonexistent service"), std::string()); | 151 EXPECT_EQ(service_->GetTokenForService("nonexistent service"), std::string()); |
| 151 } | 152 } |
| 152 | 153 |
| 153 TEST_F(TokenServiceTest, NotificationSuccess) { | 154 TEST_F(TokenServiceTest, NotificationSuccess) { |
| 154 EXPECT_EQ(0U, success_tracker_.size()); | 155 EXPECT_EQ(0U, success_tracker_.size()); |
| 155 EXPECT_EQ(0U, failure_tracker_.size()); | 156 EXPECT_EQ(0U, failure_tracker_.size()); |
| 156 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 157 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 157 EXPECT_EQ(1U, success_tracker_.size()); | 158 EXPECT_EQ(1U, success_tracker_.size()); |
| 158 EXPECT_EQ(0U, failure_tracker_.size()); | 159 EXPECT_EQ(0U, failure_tracker_.size()); |
| 159 | 160 |
| 160 TokenService::TokenAvailableDetails details = success_tracker_.details(); | 161 TokenService::TokenAvailableDetails details = success_tracker_.details(); |
| 161 // MSVC doesn't like this comparison as EQ. | 162 // MSVC doesn't like this comparison as EQ. |
| 162 EXPECT_TRUE(details.service() == GaiaConstants::kSyncService); | 163 EXPECT_TRUE(details.service() == GaiaConstants::kSyncService); |
| 163 EXPECT_EQ(details.token(), "token"); | 164 EXPECT_EQ(details.token(), "token"); |
| 164 } | 165 } |
| 165 | 166 |
| 166 TEST_F(TokenServiceTest, NotificationOAuthLoginTokenSuccess) { | 167 TEST_F(TokenServiceTest, NotificationOAuthLoginTokenSuccess) { |
| 167 EXPECT_EQ(0U, success_tracker_.size()); | 168 EXPECT_EQ(0U, success_tracker_.size()); |
| 168 EXPECT_EQ(0U, failure_tracker_.size()); | 169 EXPECT_EQ(0U, failure_tracker_.size()); |
| 169 service_.OnOAuthLoginTokenSuccess("rt1", "at1", 3600); | 170 service_->OnOAuthLoginTokenSuccess("rt1", "at1", 3600); |
| 170 EXPECT_EQ(1U, success_tracker_.size()); | 171 EXPECT_EQ(1U, success_tracker_.size()); |
| 171 EXPECT_EQ(0U, failure_tracker_.size()); | 172 EXPECT_EQ(0U, failure_tracker_.size()); |
| 172 | 173 |
| 173 TokenService::TokenAvailableDetails details = success_tracker_.details(); | 174 TokenService::TokenAvailableDetails details = success_tracker_.details(); |
| 174 // MSVC doesn't like this comparison as EQ. | 175 // MSVC doesn't like this comparison as EQ. |
| 175 EXPECT_TRUE(details.service() == | 176 EXPECT_TRUE(details.service() == |
| 176 GaiaConstants::kGaiaOAuth2LoginRefreshToken); | 177 GaiaConstants::kGaiaOAuth2LoginRefreshToken); |
| 177 EXPECT_EQ(details.token(), "rt1"); | 178 EXPECT_EQ(details.token(), "rt1"); |
| 178 } | 179 } |
| 179 | 180 |
| 180 TEST_F(TokenServiceTest, NotificationSuccessOAuth) { | 181 TEST_F(TokenServiceTest, NotificationSuccessOAuth) { |
| 181 EXPECT_EQ(0U, success_tracker_.size()); | 182 EXPECT_EQ(0U, success_tracker_.size()); |
| 182 EXPECT_EQ(0U, failure_tracker_.size()); | 183 EXPECT_EQ(0U, failure_tracker_.size()); |
| 183 service_.OnOAuthWrapBridgeSuccess( | 184 service_->OnOAuthWrapBridgeSuccess( |
| 184 GaiaConstants::kSyncServiceOAuth, "token", "3600"); | 185 GaiaConstants::kSyncServiceOAuth, "token", "3600"); |
| 185 EXPECT_EQ(1U, success_tracker_.size()); | 186 EXPECT_EQ(1U, success_tracker_.size()); |
| 186 EXPECT_EQ(0U, failure_tracker_.size()); | 187 EXPECT_EQ(0U, failure_tracker_.size()); |
| 187 | 188 |
| 188 TokenService::TokenAvailableDetails details = success_tracker_.details(); | 189 TokenService::TokenAvailableDetails details = success_tracker_.details(); |
| 189 // MSVC doesn't like this comparison as EQ. | 190 // MSVC doesn't like this comparison as EQ. |
| 190 EXPECT_TRUE(details.service() == GaiaConstants::kSyncServiceOAuth); | 191 EXPECT_TRUE(details.service() == GaiaConstants::kSyncServiceOAuth); |
| 191 EXPECT_EQ(details.token(), "token"); | 192 EXPECT_EQ(details.token(), "token"); |
| 192 } | 193 } |
| 193 | 194 |
| 194 TEST_F(TokenServiceTest, NotificationFailed) { | 195 TEST_F(TokenServiceTest, NotificationFailed) { |
| 195 EXPECT_EQ(0U, success_tracker_.size()); | 196 EXPECT_EQ(0U, success_tracker_.size()); |
| 196 EXPECT_EQ(0U, failure_tracker_.size()); | 197 EXPECT_EQ(0U, failure_tracker_.size()); |
| 197 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 198 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
| 198 service_.OnIssueAuthTokenFailure(GaiaConstants::kSyncService, error); | 199 service_->OnIssueAuthTokenFailure(GaiaConstants::kSyncService, error); |
| 199 EXPECT_EQ(0U, success_tracker_.size()); | 200 EXPECT_EQ(0U, success_tracker_.size()); |
| 200 EXPECT_EQ(1U, failure_tracker_.size()); | 201 EXPECT_EQ(1U, failure_tracker_.size()); |
| 201 | 202 |
| 202 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); | 203 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); |
| 203 | 204 |
| 204 // MSVC doesn't like this comparison as EQ. | 205 // MSVC doesn't like this comparison as EQ. |
| 205 EXPECT_TRUE(details.service() == GaiaConstants::kSyncService); | 206 EXPECT_TRUE(details.service() == GaiaConstants::kSyncService); |
| 206 EXPECT_TRUE(details.error() == error); // Struct has no print function. | 207 EXPECT_TRUE(details.error() == error); // Struct has no print function. |
| 207 } | 208 } |
| 208 | 209 |
| 209 TEST_F(TokenServiceTest, NotificationOAuthLoginTokenFailed) { | 210 TEST_F(TokenServiceTest, NotificationOAuthLoginTokenFailed) { |
| 210 EXPECT_EQ(0U, success_tracker_.size()); | 211 EXPECT_EQ(0U, success_tracker_.size()); |
| 211 EXPECT_EQ(0U, failure_tracker_.size()); | 212 EXPECT_EQ(0U, failure_tracker_.size()); |
| 212 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 213 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
| 213 service_.OnOAuthLoginTokenFailure(error); | 214 service_->OnOAuthLoginTokenFailure(error); |
| 214 EXPECT_EQ(0U, success_tracker_.size()); | 215 EXPECT_EQ(0U, success_tracker_.size()); |
| 215 EXPECT_EQ(1U, failure_tracker_.size()); | 216 EXPECT_EQ(1U, failure_tracker_.size()); |
| 216 | 217 |
| 217 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); | 218 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); |
| 218 | 219 |
| 219 // MSVC doesn't like this comparison as EQ. | 220 // MSVC doesn't like this comparison as EQ. |
| 220 EXPECT_TRUE(details.service() == | 221 EXPECT_TRUE(details.service() == |
| 221 GaiaConstants::kGaiaOAuth2LoginRefreshToken); | 222 GaiaConstants::kGaiaOAuth2LoginRefreshToken); |
| 222 EXPECT_TRUE(details.error() == error); // Struct has no print function. | 223 EXPECT_TRUE(details.error() == error); // Struct has no print function. |
| 223 } | 224 } |
| 224 | 225 |
| 225 TEST_F(TokenServiceTest, NotificationFailedOAuth) { | 226 TEST_F(TokenServiceTest, NotificationFailedOAuth) { |
| 226 EXPECT_EQ(0U, success_tracker_.size()); | 227 EXPECT_EQ(0U, success_tracker_.size()); |
| 227 EXPECT_EQ(0U, failure_tracker_.size()); | 228 EXPECT_EQ(0U, failure_tracker_.size()); |
| 228 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 229 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
| 229 service_.OnOAuthWrapBridgeFailure(GaiaConstants::kSyncServiceOAuth, error); | 230 service_->OnOAuthWrapBridgeFailure(GaiaConstants::kSyncServiceOAuth, error); |
| 230 EXPECT_EQ(0U, success_tracker_.size()); | 231 EXPECT_EQ(0U, success_tracker_.size()); |
| 231 EXPECT_EQ(1U, failure_tracker_.size()); | 232 EXPECT_EQ(1U, failure_tracker_.size()); |
| 232 | 233 |
| 233 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); | 234 TokenService::TokenRequestFailedDetails details = failure_tracker_.details(); |
| 234 | 235 |
| 235 // MSVC doesn't like this comparison as EQ. | 236 // MSVC doesn't like this comparison as EQ. |
| 236 EXPECT_TRUE(details.service() == GaiaConstants::kSyncServiceOAuth); | 237 EXPECT_TRUE(details.service() == GaiaConstants::kSyncServiceOAuth); |
| 237 EXPECT_TRUE(details.error() == error); // Struct has no print function. | 238 EXPECT_TRUE(details.error() == error); // Struct has no print function. |
| 238 } | 239 } |
| 239 | 240 |
| 240 TEST_F(TokenServiceTest, OnTokenSuccessUpdate) { | 241 TEST_F(TokenServiceTest, OnTokenSuccessUpdate) { |
| 241 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 242 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 242 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 243 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 243 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), "token"); | 244 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), "token"); |
| 244 | 245 |
| 245 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token2"); | 246 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token2"); |
| 246 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 247 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 247 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), "token2"); | 248 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), |
| 249 "token2"); |
| 248 | 250 |
| 249 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, ""); | 251 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, ""); |
| 250 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 252 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 251 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), ""); | 253 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), ""); |
| 252 } | 254 } |
| 253 | 255 |
| 254 TEST_F(TokenServiceTest, OnOAuth2LoginTokenSuccessUpdate) { | 256 TEST_F(TokenServiceTest, OnOAuth2LoginTokenSuccessUpdate) { |
| 255 std::string service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; | 257 std::string service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; |
| 256 service_.OnOAuthLoginTokenSuccess("rt1", "at1", 3600); | 258 service_->OnOAuthLoginTokenSuccess("rt1", "at1", 3600); |
| 257 EXPECT_TRUE(service_.HasOAuthLoginToken()); | 259 EXPECT_TRUE(service_->HasOAuthLoginToken()); |
| 258 EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt1"); | 260 EXPECT_EQ(service_->GetOAuth2LoginRefreshToken(), "rt1"); |
| 259 | 261 |
| 260 service_.OnOAuthLoginTokenSuccess("rt2", "at2", 3600); | 262 service_->OnOAuthLoginTokenSuccess("rt2", "at2", 3600); |
| 261 EXPECT_TRUE(service_.HasOAuthLoginToken()); | 263 EXPECT_TRUE(service_->HasOAuthLoginToken()); |
| 262 EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt2"); | 264 EXPECT_EQ(service_->GetOAuth2LoginRefreshToken(), "rt2"); |
| 263 | 265 |
| 264 service_.OnOAuthLoginTokenSuccess("rt3", "at3", 3600); | 266 service_->OnOAuthLoginTokenSuccess("rt3", "at3", 3600); |
| 265 EXPECT_TRUE(service_.HasOAuthLoginToken()); | 267 EXPECT_TRUE(service_->HasOAuthLoginToken()); |
| 266 EXPECT_EQ(service_.GetOAuth2LoginRefreshToken(), "rt3"); | 268 EXPECT_EQ(service_->GetOAuth2LoginRefreshToken(), "rt3"); |
| 267 } | 269 } |
| 268 | 270 |
| 269 TEST_F(TokenServiceTest, OnTokenSuccess) { | 271 TEST_F(TokenServiceTest, OnTokenSuccess) { |
| 270 // Don't "start fetching", just go ahead and issue the callback. | 272 // Don't "start fetching", just go ahead and issue the callback. |
| 271 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 273 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 272 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 274 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 273 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 275 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 274 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 276 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 275 // Gaia returns the entire result as the token so while this is a shared | 277 // Gaia returns the entire result as the token so while this is a shared |
| 276 // result with ClientLogin, it doesn't matter, we should still get it back. | 278 // result with ClientLogin, it doesn't matter, we should still get it back. |
| 277 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), "token"); | 279 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), "token"); |
| 278 | 280 |
| 279 // Try the OAuth service. | 281 // Try the OAuth service. |
| 280 service_.OnOAuthWrapBridgeSuccess( | 282 service_->OnOAuthWrapBridgeSuccess( |
| 281 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); | 283 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); |
| 282 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 284 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 283 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncServiceOAuth), | 285 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncServiceOAuth), |
| 284 "token2"); | 286 "token2"); |
| 285 | 287 |
| 286 // First didn't change. | 288 // First didn't change. |
| 287 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), "token"); | 289 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), "token"); |
| 288 } | 290 } |
| 289 | 291 |
| 290 TEST_F(TokenServiceTest, ResetSimple) { | 292 TEST_F(TokenServiceTest, ResetSimple) { |
| 291 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 293 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 292 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 294 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 293 EXPECT_TRUE(service_.HasLsid()); | 295 EXPECT_TRUE(service_->HasLsid()); |
| 294 service_.OnOAuthGetAccessTokenSuccess("token2", "secret"); | 296 service_->OnOAuthGetAccessTokenSuccess("token2", "secret"); |
| 295 service_.OnOAuthWrapBridgeSuccess( | 297 service_->OnOAuthWrapBridgeSuccess( |
| 296 GaiaConstants::kSyncServiceOAuth, "token3", "4321"); | 298 GaiaConstants::kSyncServiceOAuth, "token3", "4321"); |
| 297 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 299 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 298 EXPECT_TRUE(service_.HasOAuthCredentials()); | 300 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 299 | 301 |
| 300 service_.ResetCredentialsInMemory(); | 302 service_->ResetCredentialsInMemory(); |
| 301 | 303 |
| 302 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 304 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 303 EXPECT_FALSE(service_.HasLsid()); | 305 EXPECT_FALSE(service_->HasLsid()); |
| 304 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 306 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 305 EXPECT_FALSE(service_.HasOAuthCredentials()); | 307 EXPECT_FALSE(service_->HasOAuthCredentials()); |
| 306 } | 308 } |
| 307 | 309 |
| 308 TEST_F(TokenServiceTest, ResetComplex) { | 310 TEST_F(TokenServiceTest, ResetComplex) { |
| 309 TestURLFetcherFactory factory; | 311 TestURLFetcherFactory factory; |
| 310 service_.StartFetchingTokens(); | 312 service_->StartFetchingTokens(); |
| 311 // You have to call delegates by hand with the test fetcher, | 313 // You have to call delegates by hand with the test fetcher, |
| 312 // Let's pretend only one returned. | 314 // Let's pretend only one returned. |
| 313 | 315 |
| 314 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "eraseme"); | 316 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "eraseme"); |
| 315 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 317 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 316 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), | 318 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), |
| 317 "eraseme"); | 319 "eraseme"); |
| 318 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 320 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 319 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 321 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 320 | 322 |
| 321 service_.OnOAuthWrapBridgeSuccess( | 323 service_->OnOAuthWrapBridgeSuccess( |
| 322 GaiaConstants::kSyncServiceOAuth, "erasemetoo", "1234"); | 324 GaiaConstants::kSyncServiceOAuth, "erasemetoo", "1234"); |
| 323 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 325 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 324 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), | 326 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), |
| 325 "eraseme"); | 327 "eraseme"); |
| 326 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 328 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 327 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncServiceOAuth), | 329 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncServiceOAuth), |
| 328 "erasemetoo"); | 330 "erasemetoo"); |
| 329 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 331 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 330 | 332 |
| 331 service_.ResetCredentialsInMemory(); | 333 service_->ResetCredentialsInMemory(); |
| 332 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 334 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 333 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 335 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 334 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 336 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 335 EXPECT_FALSE(service_.HasLsid()); | 337 EXPECT_FALSE(service_->HasLsid()); |
| 336 EXPECT_FALSE(service_.HasOAuthCredentials()); | 338 EXPECT_FALSE(service_->HasOAuthCredentials()); |
| 337 | 339 |
| 338 // Now start using it again. | 340 // Now start using it again. |
| 339 service_.UpdateCredentials(credentials_); | 341 service_->UpdateCredentials(credentials_); |
| 340 EXPECT_TRUE(service_.HasLsid()); | 342 EXPECT_TRUE(service_->HasLsid()); |
| 341 service_.StartFetchingTokens(); | 343 service_->StartFetchingTokens(); |
| 342 service_.UpdateOAuthCredentials(oauth_token_, oauth_secret_); | 344 service_->UpdateOAuthCredentials(oauth_token_, oauth_secret_); |
| 343 EXPECT_TRUE(service_.HasOAuthCredentials()); | 345 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 344 service_.StartFetchingOAuthTokens(); | 346 service_->StartFetchingOAuthTokens(); |
| 345 | 347 |
| 346 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 348 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 347 service_.OnOAuthWrapBridgeSuccess( | 349 service_->OnOAuthWrapBridgeSuccess( |
| 348 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); | 350 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); |
| 349 service_.OnIssueAuthTokenSuccess(GaiaConstants::kTalkService, "token3"); | 351 service_->OnIssueAuthTokenSuccess(GaiaConstants::kTalkService, "token3"); |
| 350 | 352 |
| 351 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), "token"); | 353 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), "token"); |
| 352 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncServiceOAuth), | 354 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncServiceOAuth), |
| 353 "token2"); | 355 "token2"); |
| 354 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kTalkService), "token3"); | 356 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kTalkService), |
| 357 "token3"); |
| 355 } | 358 } |
| 356 | 359 |
| 357 TEST_F(TokenServiceTest, FullIntegration) { | 360 TEST_F(TokenServiceTest, FullIntegration) { |
| 358 std::string result = "SID=sid\nLSID=lsid\nAuth=auth\n"; | 361 std::string result = "SID=sid\nLSID=lsid\nAuth=auth\n"; |
| 359 | 362 |
| 360 { | 363 { |
| 361 MockFactory<MockFetcher> factory; | 364 MockFactory<MockFetcher> factory; |
| 362 factory.set_results(result); | 365 factory.set_results(result); |
| 363 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 366 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 364 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 367 EXPECT_FALSE(service_->HasTokenForService( |
| 365 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 368 GaiaConstants::kSyncServiceOAuth)); |
| 366 service_.StartFetchingTokens(); | 369 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 370 service_->StartFetchingTokens(); |
| 367 } | 371 } |
| 368 | 372 |
| 369 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 373 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 370 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 374 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 371 // Gaia returns the entire result as the token so while this is a shared | 375 // Gaia returns the entire result as the token so while this is a shared |
| 372 // result with ClientLogin, it doesn't matter, we should still get it back. | 376 // result with ClientLogin, it doesn't matter, we should still get it back. |
| 373 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kSyncService), result); | 377 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kSyncService), result); |
| 374 EXPECT_EQ(service_.GetTokenForService(GaiaConstants::kTalkService), result); | 378 EXPECT_EQ(service_->GetTokenForService(GaiaConstants::kTalkService), result); |
| 375 | 379 |
| 376 service_.ResetCredentialsInMemory(); | 380 service_->ResetCredentialsInMemory(); |
| 377 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 381 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 378 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 382 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 379 } | 383 } |
| 380 | 384 |
| 381 TEST_F(TokenServiceTest, LoadTokensIntoMemoryBasic) { | 385 TEST_F(TokenServiceTest, LoadTokensIntoMemoryBasic) { |
| 382 // Validate that the method sets proper data in notifications and map. | 386 // Validate that the method sets proper data in notifications and map. |
| 383 std::map<std::string, std::string> db_tokens; | 387 std::map<std::string, std::string> db_tokens; |
| 384 std::map<std::string, std::string> memory_tokens; | 388 std::map<std::string, std::string> memory_tokens; |
| 385 | 389 |
| 386 service_.LoadTokensIntoMemory(db_tokens, &memory_tokens); | 390 service_->LoadTokensIntoMemory(db_tokens, &memory_tokens); |
| 387 EXPECT_TRUE(db_tokens.empty()); | 391 EXPECT_TRUE(db_tokens.empty()); |
| 388 EXPECT_TRUE(memory_tokens.empty()); | 392 EXPECT_TRUE(memory_tokens.empty()); |
| 389 EXPECT_EQ(0U, success_tracker_.size()); | 393 EXPECT_EQ(0U, success_tracker_.size()); |
| 390 | 394 |
| 391 std::string service; | 395 std::string service; |
| 392 std::string token; | 396 std::string token; |
| 393 for (int i = 0; i < TokenService::kNumServices; ++i) { | 397 for (int i = 0; i < TokenService::kNumServices; ++i) { |
| 394 service = TokenService::kServices[i]; | 398 service = TokenService::kServices[i]; |
| 395 TestLoadSingleToken(&db_tokens, &memory_tokens, service); | 399 TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
| 396 } | 400 } |
| 397 for (int i = 0; i < TokenService::kNumOAuthServices; ++i) { | 401 for (int i = 0; i < TokenService::kNumOAuthServices; ++i) { |
| 398 service = TokenService::kOAuthServices[i]; | 402 service = TokenService::kOAuthServices[i]; |
| 399 TestLoadSingleToken(&db_tokens, &memory_tokens, service); | 403 TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
| 400 } | 404 } |
| 401 service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; | 405 service = GaiaConstants::kGaiaOAuth2LoginRefreshToken; |
| 402 TestLoadSingleToken(&db_tokens, &memory_tokens, service); | 406 TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
| 403 service = GaiaConstants::kGaiaOAuth2LoginAccessToken; | 407 service = GaiaConstants::kGaiaOAuth2LoginAccessToken; |
| 404 TestLoadSingleToken(&db_tokens, &memory_tokens, service); | 408 TestLoadSingleToken(&db_tokens, &memory_tokens, service); |
| 405 } | 409 } |
| 406 | 410 |
| 407 TEST_F(TokenServiceTest, LoadTokensIntoMemoryAdvanced) { | 411 TEST_F(TokenServiceTest, LoadTokensIntoMemoryAdvanced) { |
| 408 // LoadTokensIntoMemory should avoid setting tokens already in the | 412 // LoadTokensIntoMemory should avoid setting tokens already in the |
| 409 // token map. | 413 // token map. |
| 410 std::map<std::string, std::string> db_tokens; | 414 std::map<std::string, std::string> db_tokens; |
| 411 std::map<std::string, std::string> memory_tokens; | 415 std::map<std::string, std::string> memory_tokens; |
| 412 | 416 |
| 413 db_tokens["ignore"] = "token"; | 417 db_tokens["ignore"] = "token"; |
| 414 | 418 |
| 415 service_.LoadTokensIntoMemory(db_tokens, &memory_tokens); | 419 service_->LoadTokensIntoMemory(db_tokens, &memory_tokens); |
| 416 EXPECT_TRUE(memory_tokens.empty()); | 420 EXPECT_TRUE(memory_tokens.empty()); |
| 417 db_tokens[GaiaConstants::kSyncService] = "pepper"; | 421 db_tokens[GaiaConstants::kSyncService] = "pepper"; |
| 418 | 422 |
| 419 service_.LoadTokensIntoMemory(db_tokens, &memory_tokens); | 423 service_->LoadTokensIntoMemory(db_tokens, &memory_tokens); |
| 420 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncService)); | 424 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncService)); |
| 421 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncService], "pepper"); | 425 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncService], "pepper"); |
| 422 EXPECT_EQ(1U, success_tracker_.size()); | 426 EXPECT_EQ(1U, success_tracker_.size()); |
| 423 success_tracker_.Reset(); | 427 success_tracker_.Reset(); |
| 424 | 428 |
| 425 // SyncService token is already in memory. Pretend we got it off | 429 // SyncService token is already in memory. Pretend we got it off |
| 426 // the disk as well, but an older token. | 430 // the disk as well, but an older token. |
| 427 db_tokens[GaiaConstants::kSyncService] = "ignoreme"; | 431 db_tokens[GaiaConstants::kSyncService] = "ignoreme"; |
| 428 db_tokens[GaiaConstants::kSyncServiceOAuth] = "tomato"; | 432 db_tokens[GaiaConstants::kSyncServiceOAuth] = "tomato"; |
| 429 service_.LoadTokensIntoMemory(db_tokens, &memory_tokens); | 433 service_->LoadTokensIntoMemory(db_tokens, &memory_tokens); |
| 430 | 434 |
| 431 EXPECT_EQ(2U, memory_tokens.size()); | 435 EXPECT_EQ(2U, memory_tokens.size()); |
| 432 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncServiceOAuth)); | 436 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncServiceOAuth)); |
| 433 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncServiceOAuth], "tomato"); | 437 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncServiceOAuth], "tomato"); |
| 434 EXPECT_EQ(1U, success_tracker_.size()); | 438 EXPECT_EQ(1U, success_tracker_.size()); |
| 435 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncService)); | 439 EXPECT_EQ(1U, memory_tokens.count(GaiaConstants::kSyncService)); |
| 436 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncService], "pepper"); | 440 EXPECT_EQ(memory_tokens[GaiaConstants::kSyncService], "pepper"); |
| 437 } | 441 } |
| 438 | 442 |
| 439 TEST_F(TokenServiceTest, WebDBLoadIntegration) { | 443 TEST_F(TokenServiceTest, WebDBLoadIntegration) { |
| 440 service_.LoadTokensFromDB(); | 444 service_->LoadTokensFromDB(); |
| 441 WaitForDBLoadCompletion(); | 445 WaitForDBLoadCompletion(); |
| 442 EXPECT_EQ(0U, success_tracker_.size()); | 446 EXPECT_EQ(0U, success_tracker_.size()); |
| 443 | 447 |
| 444 // Should result in DB write. | 448 // Should result in DB write. |
| 445 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 449 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 446 EXPECT_EQ(1U, success_tracker_.size()); | 450 EXPECT_EQ(1U, success_tracker_.size()); |
| 447 service_.OnOAuthGetAccessTokenSuccess("token1", "secret"); | 451 service_->OnOAuthGetAccessTokenSuccess("token1", "secret"); |
| 448 service_.OnOAuthWrapBridgeSuccess( | 452 service_->OnOAuthWrapBridgeSuccess( |
| 449 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); | 453 GaiaConstants::kSyncServiceOAuth, "token2", "3600"); |
| 450 EXPECT_EQ(2U, success_tracker_.size()); | 454 EXPECT_EQ(2U, success_tracker_.size()); |
| 451 | 455 |
| 452 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 456 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 453 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 457 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 454 // Clean slate. | 458 // Clean slate. |
| 455 service_.ResetCredentialsInMemory(); | 459 service_->ResetCredentialsInMemory(); |
| 456 success_tracker_.Reset(); | 460 success_tracker_.Reset(); |
| 457 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 461 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 458 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 462 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 459 | 463 |
| 460 service_.LoadTokensFromDB(); | 464 service_->LoadTokensFromDB(); |
| 461 WaitForDBLoadCompletion(); | 465 WaitForDBLoadCompletion(); |
| 462 | 466 |
| 463 EXPECT_EQ(2U, success_tracker_.size()); | 467 EXPECT_EQ(2U, success_tracker_.size()); |
| 464 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 468 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 465 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 469 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 466 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 470 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 467 EXPECT_TRUE(service_.HasLsid()); | 471 EXPECT_TRUE(service_->HasLsid()); |
| 468 EXPECT_TRUE(service_.HasOAuthCredentials()); | 472 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 469 } | 473 } |
| 470 | 474 |
| 471 TEST_F(TokenServiceTest, MultipleLoadResetIntegration) { | 475 TEST_F(TokenServiceTest, MultipleLoadResetIntegration) { |
| 472 // Should result in DB write. | 476 // Should result in DB write. |
| 473 service_.OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); | 477 service_->OnIssueAuthTokenSuccess(GaiaConstants::kSyncService, "token"); |
| 474 service_.ResetCredentialsInMemory(); | 478 service_->ResetCredentialsInMemory(); |
| 475 success_tracker_.Reset(); | 479 success_tracker_.Reset(); |
| 476 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 480 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 477 EXPECT_FALSE(service_.HasLsid()); | 481 EXPECT_FALSE(service_->HasLsid()); |
| 478 | 482 |
| 479 service_.OnOAuthGetAccessTokenSuccess("token2", "secret"); | 483 service_->OnOAuthGetAccessTokenSuccess("token2", "secret"); |
| 480 service_.OnOAuthWrapBridgeSuccess( | 484 service_->OnOAuthWrapBridgeSuccess( |
| 481 GaiaConstants::kSyncServiceOAuth, "token3", "3600"); | 485 GaiaConstants::kSyncServiceOAuth, "token3", "3600"); |
| 482 service_.ResetCredentialsInMemory(); | 486 service_->ResetCredentialsInMemory(); |
| 483 success_tracker_.Reset(); | 487 success_tracker_.Reset(); |
| 484 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 488 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 485 EXPECT_FALSE(service_.HasOAuthCredentials()); | 489 EXPECT_FALSE(service_->HasOAuthCredentials()); |
| 486 | 490 |
| 487 service_.LoadTokensFromDB(); | 491 service_->LoadTokensFromDB(); |
| 488 WaitForDBLoadCompletion(); | 492 WaitForDBLoadCompletion(); |
| 489 | 493 |
| 490 service_.LoadTokensFromDB(); // Should do nothing. | 494 service_->LoadTokensFromDB(); // Should do nothing. |
| 491 WaitForDBLoadCompletion(); | 495 WaitForDBLoadCompletion(); |
| 492 | 496 |
| 493 EXPECT_EQ(2U, success_tracker_.size()); | 497 EXPECT_EQ(2U, success_tracker_.size()); |
| 494 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 498 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 495 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 499 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 496 EXPECT_FALSE(service_.HasTokenForService(GaiaConstants::kTalkService)); | 500 EXPECT_FALSE(service_->HasTokenForService(GaiaConstants::kTalkService)); |
| 497 EXPECT_TRUE(service_.HasLsid()); | 501 EXPECT_TRUE(service_->HasLsid()); |
| 498 EXPECT_TRUE(service_.HasOAuthCredentials()); | 502 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 499 | 503 |
| 500 // Reset it one more time so there's no surprises. | 504 // Reset it one more time so there's no surprises. |
| 501 service_.ResetCredentialsInMemory(); | 505 service_->ResetCredentialsInMemory(); |
| 502 success_tracker_.Reset(); | 506 success_tracker_.Reset(); |
| 503 | 507 |
| 504 service_.LoadTokensFromDB(); | 508 service_->LoadTokensFromDB(); |
| 505 WaitForDBLoadCompletion(); | 509 WaitForDBLoadCompletion(); |
| 506 | 510 |
| 507 EXPECT_EQ(2U, success_tracker_.size()); | 511 EXPECT_EQ(2U, success_tracker_.size()); |
| 508 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncService)); | 512 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncService)); |
| 509 EXPECT_TRUE(service_.HasTokenForService(GaiaConstants::kSyncServiceOAuth)); | 513 EXPECT_TRUE(service_->HasTokenForService(GaiaConstants::kSyncServiceOAuth)); |
| 510 EXPECT_TRUE(service_.HasLsid()); | 514 EXPECT_TRUE(service_->HasLsid()); |
| 511 EXPECT_TRUE(service_.HasOAuthCredentials()); | 515 EXPECT_TRUE(service_->HasOAuthCredentials()); |
| 512 } | 516 } |
| 513 | 517 |
| 514 #ifndef NDEBUG | 518 #ifndef NDEBUG |
| 515 class TokenServiceCommandLineTest : public TokenServiceTestHarness { | 519 class TokenServiceCommandLineTest : public TokenServiceTestHarness { |
| 516 public: | 520 public: |
| 517 virtual void SetUp() { | 521 virtual void SetUp() { |
| 518 CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 522 CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
| 519 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 523 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 520 switches::kSetToken, "my_service:my_value"); | 524 switches::kSetToken, "my_service:my_value"); |
| 521 TokenServiceTestHarness::SetUp(); | 525 TokenServiceTestHarness::SetUp(); |
| 522 service_.UpdateCredentials(credentials_); | 526 service_->UpdateCredentials(credentials_); |
| 523 service_.UpdateOAuthCredentials(oauth_token_, oauth_secret_); | 527 service_->UpdateOAuthCredentials(oauth_token_, oauth_secret_); |
| 524 | 528 |
| 525 *CommandLine::ForCurrentProcess() = original_cl; | 529 *CommandLine::ForCurrentProcess() = original_cl; |
| 526 } | 530 } |
| 527 }; | 531 }; |
| 528 | 532 |
| 529 TEST_F(TokenServiceCommandLineTest, TestValueOverride) { | 533 TEST_F(TokenServiceCommandLineTest, TestValueOverride) { |
| 530 EXPECT_TRUE(service_.HasTokenForService("my_service")); | 534 EXPECT_TRUE(service_->HasTokenForService("my_service")); |
| 531 EXPECT_EQ("my_value", service_.GetTokenForService("my_service")); | 535 EXPECT_EQ("my_value", service_->GetTokenForService("my_service")); |
| 532 } | 536 } |
| 533 #endif // ifndef NDEBUG | 537 #endif // ifndef NDEBUG |
| OLD | NEW |