| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 | 35 |
| 36 void OnGetTokenFailure(const OAuth2TokenService::Request* request, | 36 void OnGetTokenFailure(const OAuth2TokenService::Request* request, |
| 37 const GoogleServiceAuthError& error) override { | 37 const GoogleServiceAuthError& error) override { |
| 38 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); | 38 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); |
| 39 request_.reset(oauth2_service_->StartRequest( | 39 request_.reset(oauth2_service_->StartRequest( |
| 40 account_id_, OAuth2TokenService::ScopeSet(), this).release()); | 40 account_id_, OAuth2TokenService::ScopeSet(), this).release()); |
| 41 } | 41 } |
| 42 | 42 |
| 43 OAuth2TokenService* oauth2_service_; | 43 OAuth2TokenService* oauth2_service_; |
| 44 std::string account_id_; | 44 std::string account_id_; |
| 45 scoped_ptr<OAuth2TokenService::Request> request_; | 45 std::unique_ptr<OAuth2TokenService::Request> request_; |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 class TestOAuth2TokenService : public OAuth2TokenService { | 48 class TestOAuth2TokenService : public OAuth2TokenService { |
| 49 public: | 49 public: |
| 50 explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate) | 50 explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate) |
| 51 : OAuth2TokenService(delegate) {} | 51 : OAuth2TokenService(delegate) {} |
| 52 | 52 |
| 53 void CancelAllRequestsForTest() { CancelAllRequests(); } | 53 void CancelAllRequestsForTest() { CancelAllRequests(); } |
| 54 | 54 |
| 55 void CancelRequestsForAccountForTest(const std::string& account_id) { | 55 void CancelRequestsForAccountForTest(const std::string& account_id) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 71 } | 71 } |
| 72 | 72 |
| 73 void TearDown() override { | 73 void TearDown() override { |
| 74 // Makes sure that all the clean up tasks are run. | 74 // Makes sure that all the clean up tasks are run. |
| 75 base::RunLoop().RunUntilIdle(); | 75 base::RunLoop().RunUntilIdle(); |
| 76 } | 76 } |
| 77 | 77 |
| 78 protected: | 78 protected: |
| 79 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. | 79 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. |
| 80 net::TestURLFetcherFactory factory_; | 80 net::TestURLFetcherFactory factory_; |
| 81 scoped_ptr<TestOAuth2TokenService> oauth2_service_; | 81 std::unique_ptr<TestOAuth2TokenService> oauth2_service_; |
| 82 std::string account_id_; | 82 std::string account_id_; |
| 83 TestingOAuth2TokenServiceConsumer consumer_; | 83 TestingOAuth2TokenServiceConsumer consumer_; |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { | 86 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
| 87 scoped_ptr<OAuth2TokenService::Request> request( | 87 std::unique_ptr<OAuth2TokenService::Request> request( |
| 88 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 88 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 89 &consumer_)); | 89 &consumer_)); |
| 90 base::RunLoop().RunUntilIdle(); | 90 base::RunLoop().RunUntilIdle(); |
| 91 | 91 |
| 92 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 92 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 93 EXPECT_EQ(1, consumer_.number_of_errors_); | 93 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 94 } | 94 } |
| 95 | 95 |
| 96 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { | 96 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
| 97 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 97 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 98 account_id_, "refreshToken"); | 98 account_id_, "refreshToken"); |
| 99 scoped_ptr<OAuth2TokenService::Request> request( | 99 std::unique_ptr<OAuth2TokenService::Request> request( |
| 100 oauth2_service_->StartRequest(account_id_, | 100 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 101 OAuth2TokenService::ScopeSet(), | |
| 102 &consumer_)); | 101 &consumer_)); |
| 103 base::RunLoop().RunUntilIdle(); | 102 base::RunLoop().RunUntilIdle(); |
| 104 | 103 |
| 105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 104 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 106 EXPECT_EQ(0, consumer_.number_of_errors_); | 105 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 106 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 108 ASSERT_TRUE(fetcher); | 107 ASSERT_TRUE(fetcher); |
| 109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 108 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 110 fetcher->SetResponseString(std::string()); | 109 fetcher->SetResponseString(std::string()); |
| 111 fetcher->delegate()->OnURLFetchComplete(fetcher); | 110 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 111 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 113 EXPECT_EQ(1, consumer_.number_of_errors_); | 112 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 113 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 115 } | 114 } |
| 116 | 115 |
| 117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { | 116 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
| 118 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 117 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 119 account_id_, "refreshToken"); | 118 account_id_, "refreshToken"); |
| 120 scoped_ptr<OAuth2TokenService::Request> request( | 119 std::unique_ptr<OAuth2TokenService::Request> request( |
| 121 oauth2_service_->StartRequest(account_id_, | 120 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 122 OAuth2TokenService::ScopeSet(), | |
| 123 &consumer_)); | 121 &consumer_)); |
| 124 base::RunLoop().RunUntilIdle(); | 122 base::RunLoop().RunUntilIdle(); |
| 125 | 123 |
| 126 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 124 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 127 EXPECT_EQ(0, consumer_.number_of_errors_); | 125 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 128 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 126 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 129 ASSERT_TRUE(fetcher); | 127 ASSERT_TRUE(fetcher); |
| 130 fetcher->set_response_code(net::HTTP_OK); | 128 fetcher->set_response_code(net::HTTP_OK); |
| 131 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 129 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 132 fetcher->delegate()->OnURLFetchComplete(fetcher); | 130 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 133 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 131 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 134 EXPECT_EQ(0, consumer_.number_of_errors_); | 132 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 135 EXPECT_EQ("token", consumer_.last_token_); | 133 EXPECT_EQ("token", consumer_.last_token_); |
| 136 } | 134 } |
| 137 | 135 |
| 138 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { | 136 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
| 139 OAuth2TokenService::ScopeSet scopes1; | 137 OAuth2TokenService::ScopeSet scopes1; |
| 140 scopes1.insert("s1"); | 138 scopes1.insert("s1"); |
| 141 scopes1.insert("s2"); | 139 scopes1.insert("s2"); |
| 142 OAuth2TokenService::ScopeSet scopes1_same; | 140 OAuth2TokenService::ScopeSet scopes1_same; |
| 143 scopes1_same.insert("s2"); | 141 scopes1_same.insert("s2"); |
| 144 scopes1_same.insert("s1"); | 142 scopes1_same.insert("s1"); |
| 145 OAuth2TokenService::ScopeSet scopes2; | 143 OAuth2TokenService::ScopeSet scopes2; |
| 146 scopes2.insert("s3"); | 144 scopes2.insert("s3"); |
| 147 | 145 |
| 148 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 146 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 149 account_id_, "refreshToken"); | 147 account_id_, "refreshToken"); |
| 150 | 148 |
| 151 // First request. | 149 // First request. |
| 152 scoped_ptr<OAuth2TokenService::Request> request( | 150 std::unique_ptr<OAuth2TokenService::Request> request( |
| 153 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_)); | 151 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_)); |
| 154 base::RunLoop().RunUntilIdle(); | 152 base::RunLoop().RunUntilIdle(); |
| 155 | 153 |
| 156 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 154 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 157 EXPECT_EQ(0, consumer_.number_of_errors_); | 155 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 158 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 156 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 159 ASSERT_TRUE(fetcher); | 157 ASSERT_TRUE(fetcher); |
| 160 fetcher->set_response_code(net::HTTP_OK); | 158 fetcher->set_response_code(net::HTTP_OK); |
| 161 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 159 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 162 fetcher->delegate()->OnURLFetchComplete(fetcher); | 160 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 163 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 161 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 164 EXPECT_EQ(0, consumer_.number_of_errors_); | 162 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 165 EXPECT_EQ("token", consumer_.last_token_); | 163 EXPECT_EQ("token", consumer_.last_token_); |
| 166 | 164 |
| 167 // Second request to the same set of scopes, should return the same token | 165 // Second request to the same set of scopes, should return the same token |
| 168 // without needing a network request. | 166 // without needing a network request. |
| 169 scoped_ptr<OAuth2TokenService::Request> request2( | 167 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 170 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); | 168 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); |
| 171 base::RunLoop().RunUntilIdle(); | 169 base::RunLoop().RunUntilIdle(); |
| 172 | 170 |
| 173 // No new network fetcher. | 171 // No new network fetcher. |
| 174 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 172 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 175 EXPECT_EQ(0, consumer_.number_of_errors_); | 173 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 176 EXPECT_EQ("token", consumer_.last_token_); | 174 EXPECT_EQ("token", consumer_.last_token_); |
| 177 | 175 |
| 178 // Third request to a new set of scopes, should return another token. | 176 // Third request to a new set of scopes, should return another token. |
| 179 scoped_ptr<OAuth2TokenService::Request> request3( | 177 std::unique_ptr<OAuth2TokenService::Request> request3( |
| 180 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); | 178 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); |
| 181 base::RunLoop().RunUntilIdle(); | 179 base::RunLoop().RunUntilIdle(); |
| 182 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 180 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 183 EXPECT_EQ(0, consumer_.number_of_errors_); | 181 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 184 fetcher = factory_.GetFetcherByID(0); | 182 fetcher = factory_.GetFetcherByID(0); |
| 185 ASSERT_TRUE(fetcher); | 183 ASSERT_TRUE(fetcher); |
| 186 fetcher->set_response_code(net::HTTP_OK); | 184 fetcher->set_response_code(net::HTTP_OK); |
| 187 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 185 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 188 fetcher->delegate()->OnURLFetchComplete(fetcher); | 186 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 189 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 187 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 190 EXPECT_EQ(0, consumer_.number_of_errors_); | 188 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 191 EXPECT_EQ("token2", consumer_.last_token_); | 189 EXPECT_EQ("token2", consumer_.last_token_); |
| 192 } | 190 } |
| 193 | 191 |
| 194 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { | 192 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
| 195 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 193 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 196 account_id_, "refreshToken"); | 194 account_id_, "refreshToken"); |
| 197 | 195 |
| 198 // First request. | 196 // First request. |
| 199 scoped_ptr<OAuth2TokenService::Request> request( | 197 std::unique_ptr<OAuth2TokenService::Request> request( |
| 200 oauth2_service_->StartRequest(account_id_, | 198 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 201 OAuth2TokenService::ScopeSet(), | |
| 202 &consumer_)); | 199 &consumer_)); |
| 203 base::RunLoop().RunUntilIdle(); | 200 base::RunLoop().RunUntilIdle(); |
| 204 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 201 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 205 EXPECT_EQ(0, consumer_.number_of_errors_); | 202 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 206 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 203 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 207 ASSERT_TRUE(fetcher); | 204 ASSERT_TRUE(fetcher); |
| 208 fetcher->set_response_code(net::HTTP_OK); | 205 fetcher->set_response_code(net::HTTP_OK); |
| 209 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 206 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 210 fetcher->delegate()->OnURLFetchComplete(fetcher); | 207 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 211 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 208 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 212 EXPECT_EQ(0, consumer_.number_of_errors_); | 209 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 213 EXPECT_EQ("token", consumer_.last_token_); | 210 EXPECT_EQ("token", consumer_.last_token_); |
| 214 | 211 |
| 215 // Second request must try to access the network as the token has expired. | 212 // Second request must try to access the network as the token has expired. |
| 216 scoped_ptr<OAuth2TokenService::Request> request2( | 213 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 217 oauth2_service_->StartRequest(account_id_, | 214 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 218 OAuth2TokenService::ScopeSet(), | |
| 219 &consumer_)); | 215 &consumer_)); |
| 220 base::RunLoop().RunUntilIdle(); | 216 base::RunLoop().RunUntilIdle(); |
| 221 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 217 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 222 EXPECT_EQ(0, consumer_.number_of_errors_); | 218 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 223 | 219 |
| 224 // Network failure. | 220 // Network failure. |
| 225 fetcher = factory_.GetFetcherByID(0); | 221 fetcher = factory_.GetFetcherByID(0); |
| 226 ASSERT_TRUE(fetcher); | 222 ASSERT_TRUE(fetcher); |
| 227 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 223 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 228 fetcher->SetResponseString(std::string()); | 224 fetcher->SetResponseString(std::string()); |
| 229 fetcher->delegate()->OnURLFetchComplete(fetcher); | 225 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 230 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 226 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 231 EXPECT_EQ(1, consumer_.number_of_errors_); | 227 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 232 } | 228 } |
| 233 | 229 |
| 234 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { | 230 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
| 235 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 231 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 236 account_id_, "refreshToken"); | 232 account_id_, "refreshToken"); |
| 237 | 233 |
| 238 // First request. | 234 // First request. |
| 239 scoped_ptr<OAuth2TokenService::Request> request( | 235 std::unique_ptr<OAuth2TokenService::Request> request( |
| 240 oauth2_service_->StartRequest(account_id_, | 236 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 241 OAuth2TokenService::ScopeSet(), | |
| 242 &consumer_)); | 237 &consumer_)); |
| 243 base::RunLoop().RunUntilIdle(); | 238 base::RunLoop().RunUntilIdle(); |
| 244 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 239 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 245 EXPECT_EQ(0, consumer_.number_of_errors_); | 240 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 246 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 241 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 247 ASSERT_TRUE(fetcher); | 242 ASSERT_TRUE(fetcher); |
| 248 fetcher->set_response_code(net::HTTP_OK); | 243 fetcher->set_response_code(net::HTTP_OK); |
| 249 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 244 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 250 fetcher->delegate()->OnURLFetchComplete(fetcher); | 245 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 251 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 246 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 252 EXPECT_EQ(0, consumer_.number_of_errors_); | 247 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 253 EXPECT_EQ("token", consumer_.last_token_); | 248 EXPECT_EQ("token", consumer_.last_token_); |
| 254 | 249 |
| 255 // Second request must try to access the network as the token has expired. | 250 // Second request must try to access the network as the token has expired. |
| 256 scoped_ptr<OAuth2TokenService::Request> request2( | 251 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 257 oauth2_service_->StartRequest(account_id_, | 252 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 258 OAuth2TokenService::ScopeSet(), | |
| 259 &consumer_)); | 253 &consumer_)); |
| 260 base::RunLoop().RunUntilIdle(); | 254 base::RunLoop().RunUntilIdle(); |
| 261 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 255 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 262 EXPECT_EQ(0, consumer_.number_of_errors_); | 256 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 263 | 257 |
| 264 fetcher = factory_.GetFetcherByID(0); | 258 fetcher = factory_.GetFetcherByID(0); |
| 265 ASSERT_TRUE(fetcher); | 259 ASSERT_TRUE(fetcher); |
| 266 fetcher->set_response_code(net::HTTP_OK); | 260 fetcher->set_response_code(net::HTTP_OK); |
| 267 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); | 261 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); |
| 268 fetcher->delegate()->OnURLFetchComplete(fetcher); | 262 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 269 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 263 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 270 EXPECT_EQ(0, consumer_.number_of_errors_); | 264 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 271 EXPECT_EQ("another token", consumer_.last_token_); | 265 EXPECT_EQ("another token", consumer_.last_token_); |
| 272 } | 266 } |
| 273 | 267 |
| 274 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { | 268 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
| 275 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 269 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 276 account_id_, "refreshToken"); | 270 account_id_, "refreshToken"); |
| 277 | 271 |
| 278 scoped_ptr<OAuth2TokenService::Request> request( | 272 std::unique_ptr<OAuth2TokenService::Request> request( |
| 279 oauth2_service_->StartRequest(account_id_, | 273 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 280 OAuth2TokenService::ScopeSet(), | |
| 281 &consumer_)); | 274 &consumer_)); |
| 282 base::RunLoop().RunUntilIdle(); | 275 base::RunLoop().RunUntilIdle(); |
| 283 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 276 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 284 EXPECT_EQ(0, consumer_.number_of_errors_); | 277 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 285 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 278 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 286 ASSERT_TRUE(fetcher); | 279 ASSERT_TRUE(fetcher); |
| 287 | 280 |
| 288 request.reset(); | 281 request.reset(); |
| 289 | 282 |
| 290 fetcher->set_response_code(net::HTTP_OK); | 283 fetcher->set_response_code(net::HTTP_OK); |
| 291 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 284 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 292 fetcher->delegate()->OnURLFetchComplete(fetcher); | 285 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 293 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 286 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 294 EXPECT_EQ(0, consumer_.number_of_errors_); | 287 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 295 } | 288 } |
| 296 | 289 |
| 297 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { | 290 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
| 298 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 291 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 299 account_id_, "refreshToken"); | 292 account_id_, "refreshToken"); |
| 300 | 293 |
| 301 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 294 std::unique_ptr<OAuth2TokenService::Request> request( |
| 302 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 295 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 296 &consumer_)); |
| 303 base::RunLoop().RunUntilIdle(); | 297 base::RunLoop().RunUntilIdle(); |
| 304 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 298 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 305 ASSERT_TRUE(fetcher); | 299 ASSERT_TRUE(fetcher); |
| 306 fetcher->set_response_code(net::HTTP_OK); | 300 fetcher->set_response_code(net::HTTP_OK); |
| 307 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 301 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 308 fetcher->delegate()->OnURLFetchComplete(fetcher); | 302 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 303 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 310 EXPECT_EQ(0, consumer_.number_of_errors_); | 304 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 311 EXPECT_EQ("token", consumer_.last_token_); | 305 EXPECT_EQ("token", consumer_.last_token_); |
| 312 | 306 |
| 313 request.reset(); | 307 request.reset(); |
| 314 | 308 |
| 315 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 316 EXPECT_EQ(0, consumer_.number_of_errors_); | 310 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 317 EXPECT_EQ("token", consumer_.last_token_); | 311 EXPECT_EQ("token", consumer_.last_token_); |
| 318 } | 312 } |
| 319 | 313 |
| 320 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { | 314 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
| 321 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 315 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 322 account_id_, "refreshToken"); | 316 account_id_, "refreshToken"); |
| 323 | 317 |
| 324 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 318 std::unique_ptr<OAuth2TokenService::Request> request( |
| 325 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 319 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 320 &consumer_)); |
| 326 base::RunLoop().RunUntilIdle(); | 321 base::RunLoop().RunUntilIdle(); |
| 327 scoped_ptr<OAuth2TokenService::Request> request2( | 322 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 328 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 323 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 329 &consumer_)); | 324 &consumer_)); |
| 330 base::RunLoop().RunUntilIdle(); | 325 base::RunLoop().RunUntilIdle(); |
| 331 | 326 |
| 332 request.reset(); | 327 request.reset(); |
| 333 | 328 |
| 334 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 329 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 335 ASSERT_TRUE(fetcher); | 330 ASSERT_TRUE(fetcher); |
| 336 fetcher->set_response_code(net::HTTP_OK); | 331 fetcher->set_response_code(net::HTTP_OK); |
| 337 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 332 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 338 fetcher->delegate()->OnURLFetchComplete(fetcher); | 333 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 339 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 334 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 340 EXPECT_EQ(0, consumer_.number_of_errors_); | 335 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 341 } | 336 } |
| 342 | 337 |
| 343 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { | 338 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
| 344 // We have a valid refresh token; the first request is successful. | 339 // We have a valid refresh token; the first request is successful. |
| 345 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 340 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 346 account_id_, "refreshToken"); | 341 account_id_, "refreshToken"); |
| 347 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 342 std::unique_ptr<OAuth2TokenService::Request> request( |
| 348 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 343 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 344 &consumer_)); |
| 349 base::RunLoop().RunUntilIdle(); | 345 base::RunLoop().RunUntilIdle(); |
| 350 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 346 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 351 ASSERT_TRUE(fetcher); | 347 ASSERT_TRUE(fetcher); |
| 352 fetcher->set_response_code(net::HTTP_OK); | 348 fetcher->set_response_code(net::HTTP_OK); |
| 353 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 349 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 354 fetcher->delegate()->OnURLFetchComplete(fetcher); | 350 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 355 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 351 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 356 EXPECT_EQ(0, consumer_.number_of_errors_); | 352 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 357 EXPECT_EQ("token", consumer_.last_token_); | 353 EXPECT_EQ("token", consumer_.last_token_); |
| 358 | 354 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 370 ChangedRefreshTokenDoesNotAffectInFlightRequests) { | 366 ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
| 371 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 367 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 372 account_id_, "first refreshToken"); | 368 account_id_, "first refreshToken"); |
| 373 OAuth2TokenService::ScopeSet scopes; | 369 OAuth2TokenService::ScopeSet scopes; |
| 374 scopes.insert("s1"); | 370 scopes.insert("s1"); |
| 375 scopes.insert("s2"); | 371 scopes.insert("s2"); |
| 376 OAuth2TokenService::ScopeSet scopes1; | 372 OAuth2TokenService::ScopeSet scopes1; |
| 377 scopes.insert("s3"); | 373 scopes.insert("s3"); |
| 378 scopes.insert("s4"); | 374 scopes.insert("s4"); |
| 379 | 375 |
| 380 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 376 std::unique_ptr<OAuth2TokenService::Request> request( |
| 381 account_id_, scopes, &consumer_)); | 377 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 382 base::RunLoop().RunUntilIdle(); | 378 base::RunLoop().RunUntilIdle(); |
| 383 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); | 379 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
| 384 ASSERT_TRUE(fetcher1); | 380 ASSERT_TRUE(fetcher1); |
| 385 | 381 |
| 386 // Note |request| is still pending when the refresh token changes. | 382 // Note |request| is still pending when the refresh token changes. |
| 387 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 383 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 388 account_id_, "second refreshToken"); | 384 account_id_, "second refreshToken"); |
| 389 | 385 |
| 390 // A 2nd request (using the new refresh token) that occurs and completes | 386 // A 2nd request (using the new refresh token) that occurs and completes |
| 391 // while the 1st request is in flight is successful. | 387 // while the 1st request is in flight is successful. |
| 392 TestingOAuth2TokenServiceConsumer consumer2; | 388 TestingOAuth2TokenServiceConsumer consumer2; |
| 393 scoped_ptr<OAuth2TokenService::Request> request2( | 389 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 394 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2)); | 390 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2)); |
| 395 base::RunLoop().RunUntilIdle(); | 391 base::RunLoop().RunUntilIdle(); |
| 396 | 392 |
| 397 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); | 393 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
| 398 fetcher2->set_response_code(net::HTTP_OK); | 394 fetcher2->set_response_code(net::HTTP_OK); |
| 399 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); | 395 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); |
| 400 fetcher2->delegate()->OnURLFetchComplete(fetcher2); | 396 fetcher2->delegate()->OnURLFetchComplete(fetcher2); |
| 401 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); | 397 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); |
| 402 EXPECT_EQ(0, consumer2.number_of_errors_); | 398 EXPECT_EQ(0, consumer2.number_of_errors_); |
| 403 EXPECT_EQ("second token", consumer2.last_token_); | 399 EXPECT_EQ("second token", consumer2.last_token_); |
| 404 | 400 |
| 405 fetcher1->set_response_code(net::HTTP_OK); | 401 fetcher1->set_response_code(net::HTTP_OK); |
| 406 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); | 402 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); |
| 407 fetcher1->delegate()->OnURLFetchComplete(fetcher1); | 403 fetcher1->delegate()->OnURLFetchComplete(fetcher1); |
| 408 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 404 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 409 EXPECT_EQ(0, consumer_.number_of_errors_); | 405 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 410 EXPECT_EQ("first token", consumer_.last_token_); | 406 EXPECT_EQ("first token", consumer_.last_token_); |
| 411 } | 407 } |
| 412 | 408 |
| 413 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { | 409 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
| 414 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 410 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 415 account_id_, "refreshToken"); | 411 account_id_, "refreshToken"); |
| 416 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 412 std::unique_ptr<OAuth2TokenService::Request> request( |
| 417 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 413 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 414 &consumer_)); |
| 418 base::RunLoop().RunUntilIdle(); | 415 base::RunLoop().RunUntilIdle(); |
| 419 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 416 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 420 EXPECT_EQ(0, consumer_.number_of_errors_); | 417 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 421 | 418 |
| 422 // The destructor should cancel all in-flight fetchers. | 419 // The destructor should cancel all in-flight fetchers. |
| 423 oauth2_service_.reset(NULL); | 420 oauth2_service_.reset(NULL); |
| 424 | 421 |
| 425 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 422 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 426 EXPECT_EQ(1, consumer_.number_of_errors_); | 423 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 427 } | 424 } |
| 428 | 425 |
| 429 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { | 426 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
| 430 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 427 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 431 account_id_, "refreshToken"); | 428 account_id_, "refreshToken"); |
| 432 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), | 429 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), |
| 433 account_id_); | 430 account_id_); |
| 434 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 431 std::unique_ptr<OAuth2TokenService::Request> request( |
| 435 account_id_, OAuth2TokenService::ScopeSet(), &consumer)); | 432 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 433 &consumer)); |
| 436 base::RunLoop().RunUntilIdle(); | 434 base::RunLoop().RunUntilIdle(); |
| 437 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 435 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 438 EXPECT_EQ(0, consumer.number_of_errors_); | 436 EXPECT_EQ(0, consumer.number_of_errors_); |
| 439 | 437 |
| 440 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 438 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 441 ASSERT_TRUE(fetcher); | 439 ASSERT_TRUE(fetcher); |
| 442 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 440 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 443 fetcher->SetResponseString(std::string()); | 441 fetcher->SetResponseString(std::string()); |
| 444 fetcher->delegate()->OnURLFetchComplete(fetcher); | 442 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 445 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 443 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 446 EXPECT_EQ(1, consumer.number_of_errors_); | 444 EXPECT_EQ(1, consumer.number_of_errors_); |
| 447 | 445 |
| 448 fetcher = factory_.GetFetcherByID(0); | 446 fetcher = factory_.GetFetcherByID(0); |
| 449 ASSERT_TRUE(fetcher); | 447 ASSERT_TRUE(fetcher); |
| 450 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 448 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 451 fetcher->SetResponseString(std::string()); | 449 fetcher->SetResponseString(std::string()); |
| 452 fetcher->delegate()->OnURLFetchComplete(fetcher); | 450 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 453 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 451 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 454 EXPECT_EQ(2, consumer.number_of_errors_); | 452 EXPECT_EQ(2, consumer.number_of_errors_); |
| 455 } | 453 } |
| 456 | 454 |
| 457 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { | 455 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
| 458 OAuth2TokenService::ScopeSet scopes; | 456 OAuth2TokenService::ScopeSet scopes; |
| 459 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 457 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 460 account_id_, "refreshToken"); | 458 account_id_, "refreshToken"); |
| 461 | 459 |
| 462 // First request. | 460 // First request. |
| 463 scoped_ptr<OAuth2TokenService::Request> request( | 461 std::unique_ptr<OAuth2TokenService::Request> request( |
| 464 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 462 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 465 base::RunLoop().RunUntilIdle(); | 463 base::RunLoop().RunUntilIdle(); |
| 466 | 464 |
| 467 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 465 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 468 EXPECT_EQ(0, consumer_.number_of_errors_); | 466 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 469 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 467 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 470 ASSERT_TRUE(fetcher); | 468 ASSERT_TRUE(fetcher); |
| 471 fetcher->set_response_code(net::HTTP_OK); | 469 fetcher->set_response_code(net::HTTP_OK); |
| 472 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 470 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 473 fetcher->delegate()->OnURLFetchComplete(fetcher); | 471 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 474 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 472 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 475 EXPECT_EQ(0, consumer_.number_of_errors_); | 473 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 476 EXPECT_EQ("token", consumer_.last_token_); | 474 EXPECT_EQ("token", consumer_.last_token_); |
| 477 | 475 |
| 478 // Second request, should return the same token without needing a network | 476 // Second request, should return the same token without needing a network |
| 479 // request. | 477 // request. |
| 480 scoped_ptr<OAuth2TokenService::Request> request2( | 478 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 481 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 479 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 482 base::RunLoop().RunUntilIdle(); | 480 base::RunLoop().RunUntilIdle(); |
| 483 | 481 |
| 484 // No new network fetcher. | 482 // No new network fetcher. |
| 485 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 483 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 486 EXPECT_EQ(0, consumer_.number_of_errors_); | 484 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 487 EXPECT_EQ("token", consumer_.last_token_); | 485 EXPECT_EQ("token", consumer_.last_token_); |
| 488 | 486 |
| 489 // Invalidating the token should return a new token on the next request. | 487 // Invalidating the token should return a new token on the next request. |
| 490 oauth2_service_->InvalidateAccessToken(account_id_, scopes, | 488 oauth2_service_->InvalidateAccessToken(account_id_, scopes, |
| 491 consumer_.last_token_); | 489 consumer_.last_token_); |
| 492 scoped_ptr<OAuth2TokenService::Request> request3( | 490 std::unique_ptr<OAuth2TokenService::Request> request3( |
| 493 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 491 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 494 base::RunLoop().RunUntilIdle(); | 492 base::RunLoop().RunUntilIdle(); |
| 495 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 493 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 496 EXPECT_EQ(0, consumer_.number_of_errors_); | 494 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 497 fetcher = factory_.GetFetcherByID(0); | 495 fetcher = factory_.GetFetcherByID(0); |
| 498 ASSERT_TRUE(fetcher); | 496 ASSERT_TRUE(fetcher); |
| 499 fetcher->set_response_code(net::HTTP_OK); | 497 fetcher->set_response_code(net::HTTP_OK); |
| 500 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 498 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 501 fetcher->delegate()->OnURLFetchComplete(fetcher); | 499 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 502 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 500 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 503 EXPECT_EQ(0, consumer_.number_of_errors_); | 501 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 504 EXPECT_EQ("token2", consumer_.last_token_); | 502 EXPECT_EQ("token2", consumer_.last_token_); |
| 505 } | 503 } |
| 506 | 504 |
| 507 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { | 505 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
| 508 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 506 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 509 account_id_, "refreshToken"); | 507 account_id_, "refreshToken"); |
| 510 scoped_ptr<OAuth2TokenService::Request> request( | 508 std::unique_ptr<OAuth2TokenService::Request> request( |
| 511 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 509 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 512 &consumer_)); | 510 &consumer_)); |
| 513 | 511 |
| 514 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 512 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 515 "account_id_2", "refreshToken2"); | 513 "account_id_2", "refreshToken2"); |
| 516 scoped_ptr<OAuth2TokenService::Request> request2( | 514 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 517 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 515 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 518 &consumer_)); | 516 &consumer_)); |
| 519 | 517 |
| 520 base::RunLoop().RunUntilIdle(); | 518 base::RunLoop().RunUntilIdle(); |
| 521 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 519 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 522 EXPECT_EQ(0, consumer_.number_of_errors_); | 520 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 523 | 521 |
| 524 oauth2_service_->CancelAllRequestsForTest(); | 522 oauth2_service_->CancelAllRequestsForTest(); |
| 525 | 523 |
| 526 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 524 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 527 EXPECT_EQ(2, consumer_.number_of_errors_); | 525 EXPECT_EQ(2, consumer_.number_of_errors_); |
| 528 } | 526 } |
| 529 | 527 |
| 530 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) { | 528 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) { |
| 531 OAuth2TokenService::ScopeSet scope_set_1; | 529 OAuth2TokenService::ScopeSet scope_set_1; |
| 532 scope_set_1.insert("scope1"); | 530 scope_set_1.insert("scope1"); |
| 533 scope_set_1.insert("scope2"); | 531 scope_set_1.insert("scope2"); |
| 534 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), | 532 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), |
| 535 scope_set_1.end()); | 533 scope_set_1.end()); |
| 536 scope_set_2.insert("scope3"); | 534 scope_set_2.insert("scope3"); |
| 537 | 535 |
| 538 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 536 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 539 account_id_, "refreshToken"); | 537 account_id_, "refreshToken"); |
| 540 scoped_ptr<OAuth2TokenService::Request> request1( | 538 std::unique_ptr<OAuth2TokenService::Request> request1( |
| 541 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); | 539 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
| 542 scoped_ptr<OAuth2TokenService::Request> request2( | 540 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 543 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); | 541 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); |
| 544 | 542 |
| 545 std::string account_id_2("account_id_2"); | 543 std::string account_id_2("account_id_2"); |
| 546 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 544 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 547 account_id_2, "refreshToken2"); | 545 account_id_2, "refreshToken2"); |
| 548 scoped_ptr<OAuth2TokenService::Request> request3( | 546 std::unique_ptr<OAuth2TokenService::Request> request3( |
| 549 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_)); | 547 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_)); |
| 550 | 548 |
| 551 base::RunLoop().RunUntilIdle(); | 549 base::RunLoop().RunUntilIdle(); |
| 552 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 550 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 553 EXPECT_EQ(0, consumer_.number_of_errors_); | 551 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 554 | 552 |
| 555 oauth2_service_->CancelRequestsForAccountForTest(account_id_); | 553 oauth2_service_->CancelRequestsForAccountForTest(account_id_); |
| 556 | 554 |
| 557 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 555 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 558 EXPECT_EQ(2, consumer_.number_of_errors_); | 556 EXPECT_EQ(2, consumer_.number_of_errors_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 569 std::string client_id_2("client2"); | 567 std::string client_id_2("client2"); |
| 570 std::string client_secret_2("secret2"); | 568 std::string client_secret_2("secret2"); |
| 571 std::set<std::string> scope_set; | 569 std::set<std::string> scope_set; |
| 572 scope_set.insert("scope1"); | 570 scope_set.insert("scope1"); |
| 573 scope_set.insert("scope2"); | 571 scope_set.insert("scope2"); |
| 574 | 572 |
| 575 std::string refresh_token("refreshToken"); | 573 std::string refresh_token("refreshToken"); |
| 576 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 574 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 577 account_id_, refresh_token); | 575 account_id_, refresh_token); |
| 578 | 576 |
| 579 scoped_ptr<OAuth2TokenService::Request> request1( | 577 std::unique_ptr<OAuth2TokenService::Request> request1( |
| 580 oauth2_service_->StartRequestForClient(account_id_, | 578 oauth2_service_->StartRequestForClient( |
| 581 client_id_1, | 579 account_id_, client_id_1, client_secret_1, scope_set, &consumer_)); |
| 582 client_secret_1, | 580 std::unique_ptr<OAuth2TokenService::Request> request2( |
| 583 scope_set, | 581 oauth2_service_->StartRequestForClient( |
| 584 &consumer_)); | 582 account_id_, client_id_2, client_secret_2, scope_set, &consumer_)); |
| 585 scoped_ptr<OAuth2TokenService::Request> request2( | |
| 586 oauth2_service_->StartRequestForClient(account_id_, | |
| 587 client_id_2, | |
| 588 client_secret_2, | |
| 589 scope_set, | |
| 590 &consumer_)); | |
| 591 // Start a request that should be duplicate of |request1|. | 583 // Start a request that should be duplicate of |request1|. |
| 592 scoped_ptr<OAuth2TokenService::Request> request3( | 584 std::unique_ptr<OAuth2TokenService::Request> request3( |
| 593 oauth2_service_->StartRequestForClient(account_id_, | 585 oauth2_service_->StartRequestForClient( |
| 594 client_id_1, | 586 account_id_, client_id_1, client_secret_1, scope_set, &consumer_)); |
| 595 client_secret_1, | |
| 596 scope_set, | |
| 597 &consumer_)); | |
| 598 base::RunLoop().RunUntilIdle(); | 587 base::RunLoop().RunUntilIdle(); |
| 599 | 588 |
| 600 ASSERT_EQ(2U, | 589 ASSERT_EQ(2U, |
| 601 oauth2_service_->GetNumPendingRequestsForTesting( | 590 oauth2_service_->GetNumPendingRequestsForTesting( |
| 602 client_id_1, | 591 client_id_1, |
| 603 account_id_, | 592 account_id_, |
| 604 scope_set)); | 593 scope_set)); |
| 605 ASSERT_EQ(1U, | 594 ASSERT_EQ(1U, |
| 606 oauth2_service_->GetNumPendingRequestsForTesting( | 595 oauth2_service_->GetNumPendingRequestsForTesting( |
| 607 client_id_2, | 596 client_id_2, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 } | 629 } |
| 641 } | 630 } |
| 642 } | 631 } |
| 643 | 632 |
| 644 TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) { | 633 TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) { |
| 645 std::string kEmail = "test@gmail.com"; | 634 std::string kEmail = "test@gmail.com"; |
| 646 std::set<std::string> scope_list; | 635 std::set<std::string> scope_list; |
| 647 scope_list.insert("scope"); | 636 scope_list.insert("scope"); |
| 648 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 637 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
| 649 kEmail, "refreshToken"); | 638 kEmail, "refreshToken"); |
| 650 scoped_ptr<OAuth2TokenService::Request> request( | 639 std::unique_ptr<OAuth2TokenService::Request> request( |
| 651 oauth2_service_->StartRequest(kEmail, scope_list, &consumer_)); | 640 oauth2_service_->StartRequest(kEmail, scope_list, &consumer_)); |
| 652 base::RunLoop().RunUntilIdle(); | 641 base::RunLoop().RunUntilIdle(); |
| 653 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 642 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 654 ASSERT_TRUE(fetcher); | 643 ASSERT_TRUE(fetcher); |
| 655 fetcher->set_response_code(net::HTTP_OK); | 644 fetcher->set_response_code(net::HTTP_OK); |
| 656 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 645 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 657 fetcher->delegate()->OnURLFetchComplete(fetcher); | 646 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 658 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 647 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 659 EXPECT_EQ(0, consumer_.number_of_errors_); | 648 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 660 EXPECT_EQ("token", consumer_.last_token_); | 649 EXPECT_EQ("token", consumer_.last_token_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 671 fetcher = factory_.GetFetcherByID(0); | 660 fetcher = factory_.GetFetcherByID(0); |
| 672 // ASSERT_TRUE(fetcher); | 661 // ASSERT_TRUE(fetcher); |
| 673 fetcher->set_response_code(net::HTTP_OK); | 662 fetcher->set_response_code(net::HTTP_OK); |
| 674 fetcher->SetResponseString(GetValidTokenResponse("another token", 3600)); | 663 fetcher->SetResponseString(GetValidTokenResponse("another token", 3600)); |
| 675 fetcher->delegate()->OnURLFetchComplete(fetcher); | 664 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 676 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 665 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 677 EXPECT_EQ(0, consumer_.number_of_errors_); | 666 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 678 EXPECT_EQ("another token", consumer_.last_token_); | 667 EXPECT_EQ("another token", consumer_.last_token_); |
| 679 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size()); | 668 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size()); |
| 680 } | 669 } |
| OLD | NEW |