Chromium Code Reviews| 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "google_apis/gaia/gaia_constants.h" | 9 #include "google_apis/gaia/gaia_constants.h" |
| 10 #include "google_apis/gaia/google_service_auth_error.h" | 10 #include "google_apis/gaia/google_service_auth_error.h" |
| 11 #include "google_apis/gaia/oauth2_access_token_consumer.h" | 11 #include "google_apis/gaia/oauth2_access_token_consumer.h" |
| 12 #include "google_apis/gaia/oauth2_token_service.h" | 12 #include "google_apis/gaia/oauth2_token_service.h" |
| 13 #include "google_apis/gaia/oauth2_token_service_test_util.h" | 13 #include "google_apis/gaia/oauth2_token_service_test_util.h" |
| 14 #include "net/http/http_status_code.h" | 14 #include "net/http/http_status_code.h" |
| 15 #include "net/url_request/test_url_fetcher_factory.h" | 15 #include "net/url_request/test_url_fetcher_factory.h" |
| 16 #include "net/url_request/url_fetcher_delegate.h" | 16 #include "net/url_request/url_fetcher_delegate.h" |
| 17 #include "net/url_request/url_request_test_util.h" | 17 #include "net/url_request/url_request_test_util.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 19 |
| 20 // A testing consumer that retries on error. | 20 // A testing consumer that retries on error. |
| 21 class RetryingTestingOAuth2TokenServiceConsumer | 21 class RetryingTestingOAuth2TokenServiceConsumer |
| 22 : public TestingOAuth2TokenServiceConsumer { | 22 : public TestingOAuth2TokenServiceConsumer { |
| 23 public: | 23 public: |
| 24 RetryingTestingOAuth2TokenServiceConsumer( | 24 RetryingTestingOAuth2TokenServiceConsumer( |
| 25 OAuth2TokenService* oauth2_service) | 25 OAuth2TokenService* oauth2_service, |
| 26 : oauth2_service_(oauth2_service) {} | 26 const std::string& account_id) |
| 27 : oauth2_service_(oauth2_service), | |
| 28 account_id_(account_id) {} | |
| 27 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {} | 29 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {} |
| 28 | 30 |
| 29 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, | 31 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, |
| 30 const GoogleServiceAuthError& error) OVERRIDE { | 32 const GoogleServiceAuthError& error) OVERRIDE { |
| 31 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); | 33 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); |
| 32 request_.reset(oauth2_service_->StartRequest( | 34 request_.reset(oauth2_service_->StartRequest( |
| 33 std::set<std::string>(), this).release()); | 35 account_id_, OAuth2TokenService::ScopeSet(), this).release()); |
| 34 } | 36 } |
| 35 | 37 |
| 36 OAuth2TokenService* oauth2_service_; | 38 OAuth2TokenService* oauth2_service_; |
| 39 std::string account_id_; | |
| 37 scoped_ptr<OAuth2TokenService::Request> request_; | 40 scoped_ptr<OAuth2TokenService::Request> request_; |
| 38 }; | 41 }; |
| 39 | 42 |
| 40 class TestOAuth2TokenService : public OAuth2TokenService { | 43 class TestOAuth2TokenService : public OAuth2TokenService { |
| 41 public: | 44 public: |
| 42 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter) | 45 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter) |
| 43 : request_context_getter_(getter) { | 46 : request_context_getter_(getter) { |
| 44 } | 47 } |
| 45 | 48 |
| 46 void CancelAllRequestsForTest() { CancelAllRequests(); } | 49 void CancelAllRequestsForTest() { CancelAllRequests(); } |
| 47 | 50 |
| 48 void CancelRequestsForTokenForTest(const std::string& refresh_token) { | 51 void CancelRequestsForTokenForTest(const std::string& refresh_token) { |
| 49 CancelRequestsForToken(refresh_token); | 52 CancelRequestsForToken(refresh_token); |
| 50 } | 53 } |
| 51 | 54 |
| 52 // For testing: set the refresh token to be used. | 55 // For testing: set the refresh token to be used. |
| 53 void set_refresh_token(const std::string& refresh_token) { | 56 void set_refresh_token(const std::string& refresh_token) { |
| 54 refresh_token_ = refresh_token; | 57 refresh_token_ = refresh_token; |
| 55 } | 58 } |
| 56 | 59 |
| 57 protected: | 60 protected: |
| 58 virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; } | 61 virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE { |
| 62 // account_id explicitly ignored. | |
| 63 return refresh_token_; | |
| 64 } | |
| 59 | 65 |
| 60 private: | 66 private: |
| 61 // OAuth2TokenService implementation. | 67 // OAuth2TokenService implementation. |
| 62 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { | 68 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { |
| 63 return request_context_getter_.get(); | 69 return request_context_getter_.get(); |
| 64 } | 70 } |
| 65 | 71 |
| 66 std::string refresh_token_; | 72 std::string refresh_token_; |
| 67 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; | 73 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; |
| 68 }; | 74 }; |
| 69 | 75 |
| 70 class OAuth2TokenServiceTest : public testing::Test { | 76 class OAuth2TokenServiceTest : public testing::Test { |
| 71 public: | 77 public: |
| 72 virtual void SetUp() OVERRIDE { | 78 virtual void SetUp() OVERRIDE { |
| 73 oauth2_service_.reset( | 79 oauth2_service_.reset( |
| 74 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( | 80 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( |
| 75 message_loop_.message_loop_proxy()))); | 81 message_loop_.message_loop_proxy()))); |
| 76 } | 82 } |
| 77 | 83 |
| 78 virtual void TearDown() OVERRIDE { | 84 virtual void TearDown() OVERRIDE { |
| 79 // Makes sure that all the clean up tasks are run. | 85 // Makes sure that all the clean up tasks are run. |
| 80 base::RunLoop().RunUntilIdle(); | 86 base::RunLoop().RunUntilIdle(); |
| 81 } | 87 } |
| 82 | 88 |
| 83 protected: | 89 protected: |
| 84 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. | 90 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. |
| 85 net::TestURLFetcherFactory factory_; | 91 net::TestURLFetcherFactory factory_; |
| 86 scoped_ptr<TestOAuth2TokenService> oauth2_service_; | 92 scoped_ptr<TestOAuth2TokenService> oauth2_service_; |
| 93 std::string account_id_; | |
|
Roger Tawa OOO till Jul 10th
2013/08/29 15:41:40
This member is not initialized anywhere. Maybe se
fgorski
2013/08/29 23:04:14
Done.
| |
| 87 TestingOAuth2TokenServiceConsumer consumer_; | 94 TestingOAuth2TokenServiceConsumer consumer_; |
| 88 }; | 95 }; |
| 89 | 96 |
| 90 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { | 97 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
| 91 scoped_ptr<OAuth2TokenService::Request> request( | 98 scoped_ptr<OAuth2TokenService::Request> request( |
| 92 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 99 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 100 &consumer_)); | |
| 93 base::RunLoop().RunUntilIdle(); | 101 base::RunLoop().RunUntilIdle(); |
| 94 | 102 |
| 95 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 103 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 96 EXPECT_EQ(1, consumer_.number_of_errors_); | 104 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 97 } | 105 } |
| 98 | 106 |
| 99 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { | 107 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
| 100 oauth2_service_->set_refresh_token("refreshToken"); | 108 oauth2_service_->set_refresh_token("refreshToken"); |
| 101 scoped_ptr<OAuth2TokenService::Request> request( | 109 scoped_ptr<OAuth2TokenService::Request> request( |
| 102 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 110 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 111 &consumer_)); | |
| 103 base::RunLoop().RunUntilIdle(); | 112 base::RunLoop().RunUntilIdle(); |
| 104 | 113 |
| 105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 114 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 106 EXPECT_EQ(0, consumer_.number_of_errors_); | 115 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 116 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 108 EXPECT_TRUE(fetcher); | 117 EXPECT_TRUE(fetcher); |
| 109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 118 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 110 fetcher->SetResponseString(std::string()); | 119 fetcher->SetResponseString(std::string()); |
| 111 fetcher->delegate()->OnURLFetchComplete(fetcher); | 120 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 121 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 113 EXPECT_EQ(1, consumer_.number_of_errors_); | 122 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 123 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 115 } | 124 } |
| 116 | 125 |
| 117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { | 126 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
| 118 oauth2_service_->set_refresh_token("refreshToken"); | 127 oauth2_service_->set_refresh_token("refreshToken"); |
| 119 scoped_ptr<OAuth2TokenService::Request> request( | 128 scoped_ptr<OAuth2TokenService::Request> request( |
| 120 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 129 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 130 &consumer_)); | |
| 121 base::RunLoop().RunUntilIdle(); | 131 base::RunLoop().RunUntilIdle(); |
| 122 | 132 |
| 123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 133 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 124 EXPECT_EQ(0, consumer_.number_of_errors_); | 134 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 125 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 135 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 126 EXPECT_TRUE(fetcher); | 136 EXPECT_TRUE(fetcher); |
| 127 fetcher->set_response_code(net::HTTP_OK); | 137 fetcher->set_response_code(net::HTTP_OK); |
| 128 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 138 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 129 fetcher->delegate()->OnURLFetchComplete(fetcher); | 139 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 130 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 140 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 131 EXPECT_EQ(0, consumer_.number_of_errors_); | 141 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 132 EXPECT_EQ("token", consumer_.last_token_); | 142 EXPECT_EQ("token", consumer_.last_token_); |
| 133 } | 143 } |
| 134 | 144 |
| 135 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { | 145 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
| 136 std::set<std::string> scopes1; | 146 OAuth2TokenService::ScopeSet scopes1; |
| 137 scopes1.insert("s1"); | 147 scopes1.insert("s1"); |
| 138 scopes1.insert("s2"); | 148 scopes1.insert("s2"); |
| 139 std::set<std::string> scopes1_same; | 149 OAuth2TokenService::ScopeSet scopes1_same; |
| 140 scopes1_same.insert("s2"); | 150 scopes1_same.insert("s2"); |
| 141 scopes1_same.insert("s1"); | 151 scopes1_same.insert("s1"); |
| 142 std::set<std::string> scopes2; | 152 OAuth2TokenService::ScopeSet scopes2; |
| 143 scopes2.insert("s3"); | 153 scopes2.insert("s3"); |
| 144 | 154 |
| 145 oauth2_service_->set_refresh_token("refreshToken"); | 155 oauth2_service_->set_refresh_token("refreshToken"); |
| 146 | 156 |
| 147 // First request. | 157 // First request. |
| 148 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 158 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 149 scopes1, &consumer_)); | 159 account_id_, scopes1, &consumer_)); |
| 150 base::RunLoop().RunUntilIdle(); | 160 base::RunLoop().RunUntilIdle(); |
| 151 | 161 |
| 152 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 162 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 153 EXPECT_EQ(0, consumer_.number_of_errors_); | 163 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 154 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 164 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 155 EXPECT_TRUE(fetcher); | 165 EXPECT_TRUE(fetcher); |
| 156 fetcher->set_response_code(net::HTTP_OK); | 166 fetcher->set_response_code(net::HTTP_OK); |
| 157 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 167 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 158 fetcher->delegate()->OnURLFetchComplete(fetcher); | 168 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 159 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 169 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 160 EXPECT_EQ(0, consumer_.number_of_errors_); | 170 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 161 EXPECT_EQ("token", consumer_.last_token_); | 171 EXPECT_EQ("token", consumer_.last_token_); |
| 162 | 172 |
| 163 // Second request to the same set of scopes, should return the same token | 173 // Second request to the same set of scopes, should return the same token |
| 164 // without needing a network request. | 174 // without needing a network request. |
| 165 scoped_ptr<OAuth2TokenService::Request> request2( | 175 scoped_ptr<OAuth2TokenService::Request> request2( |
| 166 oauth2_service_->StartRequest(scopes1_same, &consumer_)); | 176 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); |
| 167 base::RunLoop().RunUntilIdle(); | 177 base::RunLoop().RunUntilIdle(); |
| 168 | 178 |
| 169 // No new network fetcher. | 179 // No new network fetcher. |
| 170 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 180 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 171 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 181 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 172 EXPECT_EQ(0, consumer_.number_of_errors_); | 182 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 173 EXPECT_EQ("token", consumer_.last_token_); | 183 EXPECT_EQ("token", consumer_.last_token_); |
| 174 | 184 |
| 175 // Third request to a new set of scopes, should return another token. | 185 // Third request to a new set of scopes, should return another token. |
| 176 scoped_ptr<OAuth2TokenService::Request> request3( | 186 scoped_ptr<OAuth2TokenService::Request> request3( |
| 177 oauth2_service_->StartRequest(scopes2, &consumer_)); | 187 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); |
| 178 base::RunLoop().RunUntilIdle(); | 188 base::RunLoop().RunUntilIdle(); |
| 179 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 189 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 180 EXPECT_EQ(0, consumer_.number_of_errors_); | 190 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 181 fetcher = factory_.GetFetcherByID(0); | 191 fetcher = factory_.GetFetcherByID(0); |
| 182 EXPECT_TRUE(fetcher); | 192 EXPECT_TRUE(fetcher); |
| 183 fetcher->set_response_code(net::HTTP_OK); | 193 fetcher->set_response_code(net::HTTP_OK); |
| 184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 194 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 185 fetcher->delegate()->OnURLFetchComplete(fetcher); | 195 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 196 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 187 EXPECT_EQ(0, consumer_.number_of_errors_); | 197 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 188 EXPECT_EQ("token2", consumer_.last_token_); | 198 EXPECT_EQ("token2", consumer_.last_token_); |
| 189 } | 199 } |
| 190 | 200 |
| 191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { | 201 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
| 192 oauth2_service_->set_refresh_token("refreshToken"); | 202 oauth2_service_->set_refresh_token("refreshToken"); |
| 193 | 203 |
| 194 // First request. | 204 // First request. |
| 195 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 205 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 196 std::set<std::string>(), &consumer_)); | 206 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 197 base::RunLoop().RunUntilIdle(); | 207 base::RunLoop().RunUntilIdle(); |
| 198 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 208 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 199 EXPECT_EQ(0, consumer_.number_of_errors_); | 209 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 200 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 210 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 201 EXPECT_TRUE(fetcher); | 211 EXPECT_TRUE(fetcher); |
| 202 fetcher->set_response_code(net::HTTP_OK); | 212 fetcher->set_response_code(net::HTTP_OK); |
| 203 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 213 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 204 fetcher->delegate()->OnURLFetchComplete(fetcher); | 214 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 205 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 215 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 206 EXPECT_EQ(0, consumer_.number_of_errors_); | 216 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 207 EXPECT_EQ("token", consumer_.last_token_); | 217 EXPECT_EQ("token", consumer_.last_token_); |
| 208 | 218 |
| 209 // Second request must try to access the network as the token has expired. | 219 // Second request must try to access the network as the token has expired. |
| 210 scoped_ptr<OAuth2TokenService::Request> request2( | 220 scoped_ptr<OAuth2TokenService::Request> request2( |
| 211 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 221 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 222 &consumer_)); | |
| 212 base::RunLoop().RunUntilIdle(); | 223 base::RunLoop().RunUntilIdle(); |
| 213 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 224 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 214 EXPECT_EQ(0, consumer_.number_of_errors_); | 225 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 215 | 226 |
| 216 // Network failure. | 227 // Network failure. |
| 217 fetcher = factory_.GetFetcherByID(0); | 228 fetcher = factory_.GetFetcherByID(0); |
| 218 EXPECT_TRUE(fetcher); | 229 EXPECT_TRUE(fetcher); |
| 219 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 230 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 220 fetcher->SetResponseString(std::string()); | 231 fetcher->SetResponseString(std::string()); |
| 221 fetcher->delegate()->OnURLFetchComplete(fetcher); | 232 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 222 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 233 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 223 EXPECT_EQ(1, consumer_.number_of_errors_); | 234 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 224 } | 235 } |
| 225 | 236 |
| 226 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { | 237 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
| 227 oauth2_service_->set_refresh_token("refreshToken"); | 238 oauth2_service_->set_refresh_token("refreshToken"); |
| 228 | 239 |
| 229 // First request. | 240 // First request. |
| 230 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 241 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 231 std::set<std::string>(), &consumer_)); | 242 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 232 base::RunLoop().RunUntilIdle(); | 243 base::RunLoop().RunUntilIdle(); |
| 233 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 244 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 234 EXPECT_EQ(0, consumer_.number_of_errors_); | 245 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 235 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 246 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 236 EXPECT_TRUE(fetcher); | 247 EXPECT_TRUE(fetcher); |
| 237 fetcher->set_response_code(net::HTTP_OK); | 248 fetcher->set_response_code(net::HTTP_OK); |
| 238 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 249 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 239 fetcher->delegate()->OnURLFetchComplete(fetcher); | 250 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 251 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 241 EXPECT_EQ(0, consumer_.number_of_errors_); | 252 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 242 EXPECT_EQ("token", consumer_.last_token_); | 253 EXPECT_EQ("token", consumer_.last_token_); |
| 243 | 254 |
| 244 // Second request must try to access the network as the token has expired. | 255 // Second request must try to access the network as the token has expired. |
| 245 scoped_ptr<OAuth2TokenService::Request> request2( | 256 scoped_ptr<OAuth2TokenService::Request> request2( |
| 246 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 257 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 258 &consumer_)); | |
| 247 base::RunLoop().RunUntilIdle(); | 259 base::RunLoop().RunUntilIdle(); |
| 248 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 260 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 249 EXPECT_EQ(0, consumer_.number_of_errors_); | 261 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 250 | 262 |
| 251 fetcher = factory_.GetFetcherByID(0); | 263 fetcher = factory_.GetFetcherByID(0); |
| 252 EXPECT_TRUE(fetcher); | 264 EXPECT_TRUE(fetcher); |
| 253 fetcher->set_response_code(net::HTTP_OK); | 265 fetcher->set_response_code(net::HTTP_OK); |
| 254 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); | 266 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); |
| 255 fetcher->delegate()->OnURLFetchComplete(fetcher); | 267 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 256 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 268 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 257 EXPECT_EQ(0, consumer_.number_of_errors_); | 269 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 258 EXPECT_EQ("another token", consumer_.last_token_); | 270 EXPECT_EQ("another token", consumer_.last_token_); |
| 259 } | 271 } |
| 260 | 272 |
| 261 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { | 273 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
| 262 oauth2_service_->set_refresh_token("refreshToken"); | 274 oauth2_service_->set_refresh_token("refreshToken"); |
| 263 | 275 |
| 264 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 276 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 265 std::set<std::string>(), &consumer_)); | 277 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 266 base::RunLoop().RunUntilIdle(); | 278 base::RunLoop().RunUntilIdle(); |
| 267 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 279 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 268 EXPECT_EQ(0, consumer_.number_of_errors_); | 280 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 269 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 281 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 270 EXPECT_TRUE(fetcher); | 282 EXPECT_TRUE(fetcher); |
| 271 | 283 |
| 272 request.reset(); | 284 request.reset(); |
| 273 | 285 |
| 274 fetcher->set_response_code(net::HTTP_OK); | 286 fetcher->set_response_code(net::HTTP_OK); |
| 275 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 287 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 276 fetcher->delegate()->OnURLFetchComplete(fetcher); | 288 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 277 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 289 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 278 EXPECT_EQ(0, consumer_.number_of_errors_); | 290 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 279 } | 291 } |
| 280 | 292 |
| 281 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { | 293 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
| 282 oauth2_service_->set_refresh_token("refreshToken"); | 294 oauth2_service_->set_refresh_token("refreshToken"); |
| 283 | 295 |
| 284 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 296 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 285 std::set<std::string>(), &consumer_)); | 297 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 286 base::RunLoop().RunUntilIdle(); | 298 base::RunLoop().RunUntilIdle(); |
| 287 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 299 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 288 fetcher->set_response_code(net::HTTP_OK); | 300 fetcher->set_response_code(net::HTTP_OK); |
| 289 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 301 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 290 fetcher->delegate()->OnURLFetchComplete(fetcher); | 302 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 291 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 303 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 292 EXPECT_EQ(0, consumer_.number_of_errors_); | 304 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 293 EXPECT_EQ("token", consumer_.last_token_); | 305 EXPECT_EQ("token", consumer_.last_token_); |
| 294 | 306 |
| 295 request.reset(); | 307 request.reset(); |
| 296 | 308 |
| 297 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 298 EXPECT_EQ(0, consumer_.number_of_errors_); | 310 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 299 EXPECT_EQ("token", consumer_.last_token_); | 311 EXPECT_EQ("token", consumer_.last_token_); |
| 300 } | 312 } |
| 301 | 313 |
| 302 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { | 314 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
| 303 oauth2_service_->set_refresh_token("refreshToken"); | 315 oauth2_service_->set_refresh_token("refreshToken"); |
| 304 | 316 |
| 305 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 317 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 306 std::set<std::string>(), &consumer_)); | 318 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 307 base::RunLoop().RunUntilIdle(); | 319 base::RunLoop().RunUntilIdle(); |
| 308 scoped_ptr<OAuth2TokenService::Request> request2( | 320 scoped_ptr<OAuth2TokenService::Request> request2( |
| 309 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 321 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 322 &consumer_)); | |
| 310 base::RunLoop().RunUntilIdle(); | 323 base::RunLoop().RunUntilIdle(); |
| 311 | 324 |
| 312 request.reset(); | 325 request.reset(); |
| 313 | 326 |
| 314 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 327 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 315 fetcher->set_response_code(net::HTTP_OK); | 328 fetcher->set_response_code(net::HTTP_OK); |
| 316 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 329 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 317 fetcher->delegate()->OnURLFetchComplete(fetcher); | 330 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 318 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 331 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 319 EXPECT_EQ(0, consumer_.number_of_errors_); | 332 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 320 } | 333 } |
| 321 | 334 |
| 322 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { | 335 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
| 323 // We have a valid refresh token; the first request is successful. | 336 // We have a valid refresh token; the first request is successful. |
| 324 oauth2_service_->set_refresh_token("refreshToken"); | 337 oauth2_service_->set_refresh_token("refreshToken"); |
| 325 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 338 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 326 std::set<std::string>(), &consumer_)); | 339 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 327 base::RunLoop().RunUntilIdle(); | 340 base::RunLoop().RunUntilIdle(); |
| 328 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 341 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 329 fetcher->set_response_code(net::HTTP_OK); | 342 fetcher->set_response_code(net::HTTP_OK); |
| 330 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 343 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 331 fetcher->delegate()->OnURLFetchComplete(fetcher); | 344 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 332 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 345 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 333 EXPECT_EQ(0, consumer_.number_of_errors_); | 346 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 334 EXPECT_EQ("token", consumer_.last_token_); | 347 EXPECT_EQ("token", consumer_.last_token_); |
| 335 | 348 |
| 336 // The refresh token is no longer available; subsequent requests fail. | 349 // The refresh token is no longer available; subsequent requests fail. |
| 337 oauth2_service_->set_refresh_token(""); | 350 oauth2_service_->set_refresh_token(""); |
| 338 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); | 351 request = oauth2_service_->StartRequest(account_id_, |
| 352 OAuth2TokenService::ScopeSet(), &consumer_); | |
| 339 base::RunLoop().RunUntilIdle(); | 353 base::RunLoop().RunUntilIdle(); |
| 340 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 354 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 341 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 355 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 342 EXPECT_EQ(1, consumer_.number_of_errors_); | 356 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 343 } | 357 } |
| 344 | 358 |
| 345 TEST_F(OAuth2TokenServiceTest, | 359 TEST_F(OAuth2TokenServiceTest, |
| 346 ChangedRefreshTokenDoesNotAffectInFlightRequests) { | 360 ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
| 347 oauth2_service_->set_refresh_token("first refreshToken"); | 361 oauth2_service_->set_refresh_token("first refreshToken"); |
| 348 std::set<std::string> scopes; | 362 OAuth2TokenService::ScopeSet scopes; |
| 349 scopes.insert("s1"); | 363 scopes.insert("s1"); |
| 350 scopes.insert("s2"); | 364 scopes.insert("s2"); |
| 351 | 365 |
| 352 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 366 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 353 scopes, &consumer_)); | 367 account_id_, scopes, &consumer_)); |
| 354 base::RunLoop().RunUntilIdle(); | 368 base::RunLoop().RunUntilIdle(); |
| 355 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); | 369 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
| 356 | 370 |
| 357 // Note |request| is still pending when the refresh token changes. | 371 // Note |request| is still pending when the refresh token changes. |
| 358 oauth2_service_->set_refresh_token("second refreshToken"); | 372 oauth2_service_->set_refresh_token("second refreshToken"); |
| 359 | 373 |
| 360 // A 2nd request (using the new refresh token) that occurs and completes | 374 // A 2nd request (using the new refresh token) that occurs and completes |
| 361 // while the 1st request is in flight is successful. | 375 // while the 1st request is in flight is successful. |
| 362 TestingOAuth2TokenServiceConsumer consumer2; | 376 TestingOAuth2TokenServiceConsumer consumer2; |
| 363 scoped_ptr<OAuth2TokenService::Request> request2( | 377 scoped_ptr<OAuth2TokenService::Request> request2( |
| 364 oauth2_service_->StartRequest(scopes, &consumer2)); | 378 oauth2_service_->StartRequest(account_id_, scopes, &consumer2)); |
| 365 base::RunLoop().RunUntilIdle(); | 379 base::RunLoop().RunUntilIdle(); |
| 366 | 380 |
| 367 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); | 381 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
| 368 fetcher2->set_response_code(net::HTTP_OK); | 382 fetcher2->set_response_code(net::HTTP_OK); |
| 369 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); | 383 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); |
| 370 fetcher2->delegate()->OnURLFetchComplete(fetcher2); | 384 fetcher2->delegate()->OnURLFetchComplete(fetcher2); |
| 371 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); | 385 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); |
| 372 EXPECT_EQ(0, consumer2.number_of_errors_); | 386 EXPECT_EQ(0, consumer2.number_of_errors_); |
| 373 EXPECT_EQ("second token", consumer2.last_token_); | 387 EXPECT_EQ("second token", consumer2.last_token_); |
| 374 | 388 |
| 375 fetcher1->set_response_code(net::HTTP_OK); | 389 fetcher1->set_response_code(net::HTTP_OK); |
| 376 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); | 390 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); |
| 377 fetcher1->delegate()->OnURLFetchComplete(fetcher1); | 391 fetcher1->delegate()->OnURLFetchComplete(fetcher1); |
| 378 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 392 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 379 EXPECT_EQ(0, consumer_.number_of_errors_); | 393 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 380 EXPECT_EQ("first token", consumer_.last_token_); | 394 EXPECT_EQ("first token", consumer_.last_token_); |
| 381 } | 395 } |
| 382 | 396 |
| 383 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { | 397 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
| 384 oauth2_service_->set_refresh_token("refreshToken"); | 398 oauth2_service_->set_refresh_token("refreshToken"); |
| 385 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 399 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 386 std::set<std::string>(), &consumer_)); | 400 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); |
| 387 base::RunLoop().RunUntilIdle(); | 401 base::RunLoop().RunUntilIdle(); |
| 388 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 402 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 389 EXPECT_EQ(0, consumer_.number_of_errors_); | 403 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 390 | 404 |
| 391 // The destructor should cancel all in-flight fetchers. | 405 // The destructor should cancel all in-flight fetchers. |
| 392 oauth2_service_.reset(NULL); | 406 oauth2_service_.reset(NULL); |
| 393 | 407 |
| 394 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 408 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 395 EXPECT_EQ(1, consumer_.number_of_errors_); | 409 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 396 } | 410 } |
| 397 | 411 |
| 398 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { | 412 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
| 399 oauth2_service_->set_refresh_token("refreshToken"); | 413 oauth2_service_->set_refresh_token("refreshToken"); |
| 400 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); | 414 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), |
| 415 account_id_); | |
| 401 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 416 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 402 std::set<std::string>(), &consumer)); | 417 account_id_, OAuth2TokenService::ScopeSet(), &consumer)); |
| 403 base::RunLoop().RunUntilIdle(); | 418 base::RunLoop().RunUntilIdle(); |
| 404 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 419 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 405 EXPECT_EQ(0, consumer.number_of_errors_); | 420 EXPECT_EQ(0, consumer.number_of_errors_); |
| 406 | 421 |
| 407 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 422 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 408 ASSERT_TRUE(fetcher); | 423 ASSERT_TRUE(fetcher); |
| 409 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 424 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 410 fetcher->SetResponseString(std::string()); | 425 fetcher->SetResponseString(std::string()); |
| 411 fetcher->delegate()->OnURLFetchComplete(fetcher); | 426 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 412 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 427 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 413 EXPECT_EQ(1, consumer.number_of_errors_); | 428 EXPECT_EQ(1, consumer.number_of_errors_); |
| 414 | 429 |
| 415 fetcher = factory_.GetFetcherByID(0); | 430 fetcher = factory_.GetFetcherByID(0); |
| 416 ASSERT_TRUE(fetcher); | 431 ASSERT_TRUE(fetcher); |
| 417 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 432 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 418 fetcher->SetResponseString(std::string()); | 433 fetcher->SetResponseString(std::string()); |
| 419 fetcher->delegate()->OnURLFetchComplete(fetcher); | 434 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 420 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 435 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 421 EXPECT_EQ(2, consumer.number_of_errors_); | 436 EXPECT_EQ(2, consumer.number_of_errors_); |
| 422 } | 437 } |
| 423 | 438 |
| 424 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { | 439 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
| 425 std::set<std::string> scopes; | 440 OAuth2TokenService::ScopeSet scopes; |
| 426 oauth2_service_->set_refresh_token("refreshToken"); | 441 oauth2_service_->set_refresh_token("refreshToken"); |
| 427 | 442 |
| 428 // First request. | 443 // First request. |
| 429 scoped_ptr<OAuth2TokenService::Request> request( | 444 scoped_ptr<OAuth2TokenService::Request> request( |
| 430 oauth2_service_->StartRequest(scopes, &consumer_)); | 445 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 431 base::RunLoop().RunUntilIdle(); | 446 base::RunLoop().RunUntilIdle(); |
| 432 | 447 |
| 433 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 448 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 434 EXPECT_EQ(0, consumer_.number_of_errors_); | 449 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 435 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 450 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 436 EXPECT_TRUE(fetcher); | 451 EXPECT_TRUE(fetcher); |
| 437 fetcher->set_response_code(net::HTTP_OK); | 452 fetcher->set_response_code(net::HTTP_OK); |
| 438 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 453 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 439 fetcher->delegate()->OnURLFetchComplete(fetcher); | 454 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 440 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 455 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 441 EXPECT_EQ(0, consumer_.number_of_errors_); | 456 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 442 EXPECT_EQ("token", consumer_.last_token_); | 457 EXPECT_EQ("token", consumer_.last_token_); |
| 443 | 458 |
| 444 // Second request, should return the same token without needing a network | 459 // Second request, should return the same token without needing a network |
| 445 // request. | 460 // request. |
| 446 scoped_ptr<OAuth2TokenService::Request> request2( | 461 scoped_ptr<OAuth2TokenService::Request> request2( |
| 447 oauth2_service_->StartRequest(scopes, &consumer_)); | 462 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 448 base::RunLoop().RunUntilIdle(); | 463 base::RunLoop().RunUntilIdle(); |
| 449 | 464 |
| 450 // No new network fetcher. | 465 // No new network fetcher. |
| 451 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 466 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 452 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 467 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 453 EXPECT_EQ(0, consumer_.number_of_errors_); | 468 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 454 EXPECT_EQ("token", consumer_.last_token_); | 469 EXPECT_EQ("token", consumer_.last_token_); |
| 455 | 470 |
| 456 // Invalidating the token should return a new token on the next request. | 471 // Invalidating the token should return a new token on the next request. |
| 457 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); | 472 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); |
| 458 scoped_ptr<OAuth2TokenService::Request> request3( | 473 scoped_ptr<OAuth2TokenService::Request> request3( |
| 459 oauth2_service_->StartRequest(scopes, &consumer_)); | 474 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
| 460 base::RunLoop().RunUntilIdle(); | 475 base::RunLoop().RunUntilIdle(); |
| 461 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 476 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 462 EXPECT_EQ(0, consumer_.number_of_errors_); | 477 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 463 fetcher = factory_.GetFetcherByID(0); | 478 fetcher = factory_.GetFetcherByID(0); |
| 464 EXPECT_TRUE(fetcher); | 479 EXPECT_TRUE(fetcher); |
| 465 fetcher->set_response_code(net::HTTP_OK); | 480 fetcher->set_response_code(net::HTTP_OK); |
| 466 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 481 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 467 fetcher->delegate()->OnURLFetchComplete(fetcher); | 482 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 468 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 483 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 469 EXPECT_EQ(0, consumer_.number_of_errors_); | 484 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 470 EXPECT_EQ("token2", consumer_.last_token_); | 485 EXPECT_EQ("token2", consumer_.last_token_); |
| 471 } | 486 } |
| 472 | 487 |
| 473 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { | 488 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
| 474 oauth2_service_->set_refresh_token("refreshToken"); | 489 oauth2_service_->set_refresh_token("refreshToken"); |
| 475 scoped_ptr<OAuth2TokenService::Request> request( | 490 scoped_ptr<OAuth2TokenService::Request> request( |
| 476 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 491 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 492 &consumer_)); | |
| 477 | 493 |
| 478 oauth2_service_->set_refresh_token("refreshToken2"); | 494 oauth2_service_->set_refresh_token("refreshToken2"); |
| 479 scoped_ptr<OAuth2TokenService::Request> request2( | 495 scoped_ptr<OAuth2TokenService::Request> request2( |
| 480 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 496 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 497 &consumer_)); | |
| 481 | 498 |
| 482 base::RunLoop().RunUntilIdle(); | 499 base::RunLoop().RunUntilIdle(); |
| 483 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 500 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 484 EXPECT_EQ(0, consumer_.number_of_errors_); | 501 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 485 | 502 |
| 486 oauth2_service_->CancelAllRequestsForTest(); | 503 oauth2_service_->CancelAllRequestsForTest(); |
| 487 | 504 |
| 488 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 505 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 489 EXPECT_EQ(2, consumer_.number_of_errors_); | 506 EXPECT_EQ(2, consumer_.number_of_errors_); |
| 490 } | 507 } |
| 491 | 508 |
| 492 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { | 509 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { |
| 493 std::set<std::string> scope_set_1; | 510 OAuth2TokenService::ScopeSet scope_set_1; |
| 494 scope_set_1.insert("scope1"); | 511 scope_set_1.insert("scope1"); |
| 495 scope_set_1.insert("scope2"); | 512 scope_set_1.insert("scope2"); |
| 496 std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); | 513 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), |
| 514 scope_set_1.end()); | |
| 497 scope_set_2.insert("scope3"); | 515 scope_set_2.insert("scope3"); |
| 498 | 516 |
| 499 oauth2_service_->set_refresh_token("refreshToken"); | 517 oauth2_service_->set_refresh_token("refreshToken"); |
| 500 scoped_ptr<OAuth2TokenService::Request> request1( | 518 scoped_ptr<OAuth2TokenService::Request> request1( |
| 501 oauth2_service_->StartRequest(scope_set_1, &consumer_)); | 519 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
| 502 scoped_ptr<OAuth2TokenService::Request> request2( | 520 scoped_ptr<OAuth2TokenService::Request> request2( |
| 503 oauth2_service_->StartRequest(scope_set_2, &consumer_)); | 521 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); |
| 504 | 522 |
| 505 oauth2_service_->set_refresh_token("refreshToken2"); | 523 oauth2_service_->set_refresh_token("refreshToken2"); |
| 506 scoped_ptr<OAuth2TokenService::Request> request3( | 524 scoped_ptr<OAuth2TokenService::Request> request3( |
| 507 oauth2_service_->StartRequest(scope_set_1, &consumer_)); | 525 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
| 508 | 526 |
| 509 base::RunLoop().RunUntilIdle(); | 527 base::RunLoop().RunUntilIdle(); |
| 510 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 528 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 511 EXPECT_EQ(0, consumer_.number_of_errors_); | 529 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 512 | 530 |
| 513 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); | 531 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); |
| 514 | 532 |
| 515 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 533 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 516 EXPECT_EQ(2, consumer_.number_of_errors_); | 534 EXPECT_EQ(2, consumer_.number_of_errors_); |
| 517 | 535 |
| 518 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); | 536 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); |
| 519 | 537 |
| 520 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 538 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 521 EXPECT_EQ(3, consumer_.number_of_errors_); | 539 EXPECT_EQ(3, consumer_.number_of_errors_); |
| 522 } | 540 } |
| OLD | NEW |