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