| 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/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 8 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 9 #include "chrome/browser/signin/oauth2_token_service.h" | 10 #include "chrome/browser/signin/oauth2_token_service.h" |
| 10 #include "chrome/browser/signin/oauth2_token_service_test_util.h" | 11 #include "chrome/browser/signin/oauth2_token_service_test_util.h" |
| 11 #include "chrome/browser/signin/token_service_factory.h" | 12 #include "chrome/browser/signin/token_service_factory.h" |
| 12 #include "chrome/browser/signin/token_service_unittest.h" | 13 #include "chrome/browser/signin/token_service_unittest.h" |
| 13 #include "chrome/test/base/testing_browser_process.h" | 14 #include "chrome/test/base/testing_browser_process.h" |
| 15 #include "content/public/browser/browser_thread.h" |
| 14 #include "google_apis/gaia/gaia_constants.h" | 16 #include "google_apis/gaia/gaia_constants.h" |
| 15 #include "google_apis/gaia/google_service_auth_error.h" | 17 #include "google_apis/gaia/google_service_auth_error.h" |
| 16 #include "google_apis/gaia/oauth2_access_token_consumer.h" | 18 #include "google_apis/gaia/oauth2_access_token_consumer.h" |
| 17 #include "net/http/http_status_code.h" | 19 #include "net/http/http_status_code.h" |
| 18 #include "net/url_request/test_url_fetcher_factory.h" | 20 #include "net/url_request/test_url_fetcher_factory.h" |
| 19 #include "net/url_request/url_request_status.h" | 21 #include "net/url_request/url_request_status.h" |
| 20 #include "net/url_request/url_request_test_util.h" | 22 #include "net/url_request/url_request_test_util.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 22 | 24 |
| 23 using content::BrowserThread; | 25 using content::BrowserThread; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 } | 65 } |
| 64 | 66 |
| 65 std::string refresh_token_; | 67 std::string refresh_token_; |
| 66 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; | 68 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; |
| 67 }; | 69 }; |
| 68 | 70 |
| 69 class OAuth2TokenServiceTest : public TokenServiceTestHarness { | 71 class OAuth2TokenServiceTest : public TokenServiceTestHarness { |
| 70 public: | 72 public: |
| 71 virtual void SetUp() OVERRIDE { | 73 virtual void SetUp() OVERRIDE { |
| 72 TokenServiceTestHarness::SetUp(); | 74 TokenServiceTestHarness::SetUp(); |
| 73 io_thread_.reset(new content::TestBrowserThread(content::BrowserThread::IO, | |
| 74 &message_loop_)); | |
| 75 oauth2_service_.reset( | 75 oauth2_service_.reset( |
| 76 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( | 76 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( |
| 77 message_loop_.message_loop_proxy()))); | 77 BrowserThread::GetMessageLoopProxyForThread( |
| 78 } | 78 BrowserThread::IO)))); |
| 79 | |
| 80 virtual void TearDown() OVERRIDE { | |
| 81 TokenServiceTestHarness::TearDown(); | |
| 82 } | 79 } |
| 83 | 80 |
| 84 protected: | 81 protected: |
| 85 scoped_ptr<content::TestBrowserThread> io_thread_; | |
| 86 net::TestURLFetcherFactory factory_; | 82 net::TestURLFetcherFactory factory_; |
| 87 scoped_ptr<TestOAuth2TokenService> oauth2_service_; | 83 scoped_ptr<TestOAuth2TokenService> oauth2_service_; |
| 88 TestingOAuth2TokenServiceConsumer consumer_; | 84 TestingOAuth2TokenServiceConsumer consumer_; |
| 89 }; | 85 }; |
| 90 | 86 |
| 91 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { | 87 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
| 92 scoped_ptr<OAuth2TokenService::Request> request( | 88 scoped_ptr<OAuth2TokenService::Request> request( |
| 93 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 89 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 94 message_loop_.RunUntilIdle(); | 90 base::RunLoop().RunUntilIdle(); |
| 95 | 91 |
| 96 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 92 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 97 EXPECT_EQ(1, consumer_.number_of_errors_); | 93 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 98 } | 94 } |
| 99 | 95 |
| 100 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { | 96 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
| 101 oauth2_service_->set_refresh_token("refreshToken"); | 97 oauth2_service_->set_refresh_token("refreshToken"); |
| 102 scoped_ptr<OAuth2TokenService::Request> request( | 98 scoped_ptr<OAuth2TokenService::Request> request( |
| 103 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 99 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 104 message_loop_.RunUntilIdle(); | 100 base::RunLoop().RunUntilIdle(); |
| 105 | 101 |
| 106 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 102 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 107 EXPECT_EQ(0, consumer_.number_of_errors_); | 103 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 108 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 104 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 109 EXPECT_TRUE(fetcher); | 105 EXPECT_TRUE(fetcher); |
| 110 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 106 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 111 fetcher->SetResponseString(std::string()); | 107 fetcher->SetResponseString(std::string()); |
| 112 fetcher->delegate()->OnURLFetchComplete(fetcher); | 108 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 113 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 109 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 114 EXPECT_EQ(1, consumer_.number_of_errors_); | 110 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 115 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 111 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 116 } | 112 } |
| 117 | 113 |
| 118 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { | 114 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
| 119 oauth2_service_->set_refresh_token("refreshToken"); | 115 oauth2_service_->set_refresh_token("refreshToken"); |
| 120 scoped_ptr<OAuth2TokenService::Request> request( | 116 scoped_ptr<OAuth2TokenService::Request> request( |
| 121 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 117 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 122 message_loop_.RunUntilIdle(); | 118 base::RunLoop().RunUntilIdle(); |
| 123 | 119 |
| 124 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 120 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 125 EXPECT_EQ(0, consumer_.number_of_errors_); | 121 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 126 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 122 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 127 EXPECT_TRUE(fetcher); | 123 EXPECT_TRUE(fetcher); |
| 128 fetcher->set_response_code(net::HTTP_OK); | 124 fetcher->set_response_code(net::HTTP_OK); |
| 129 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 125 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 130 fetcher->delegate()->OnURLFetchComplete(fetcher); | 126 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 131 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 127 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 132 EXPECT_EQ(0, consumer_.number_of_errors_); | 128 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 133 EXPECT_EQ("token", consumer_.last_token_); | 129 EXPECT_EQ("token", consumer_.last_token_); |
| 134 } | 130 } |
| 135 | 131 |
| 136 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { | 132 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
| 137 std::set<std::string> scopes1; | 133 std::set<std::string> scopes1; |
| 138 scopes1.insert("s1"); | 134 scopes1.insert("s1"); |
| 139 scopes1.insert("s2"); | 135 scopes1.insert("s2"); |
| 140 std::set<std::string> scopes1_same; | 136 std::set<std::string> scopes1_same; |
| 141 scopes1_same.insert("s2"); | 137 scopes1_same.insert("s2"); |
| 142 scopes1_same.insert("s1"); | 138 scopes1_same.insert("s1"); |
| 143 std::set<std::string> scopes2; | 139 std::set<std::string> scopes2; |
| 144 scopes2.insert("s3"); | 140 scopes2.insert("s3"); |
| 145 | 141 |
| 146 oauth2_service_->set_refresh_token("refreshToken"); | 142 oauth2_service_->set_refresh_token("refreshToken"); |
| 147 | 143 |
| 148 // First request. | 144 // First request. |
| 149 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 145 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 150 scopes1, &consumer_)); | 146 scopes1, &consumer_)); |
| 151 message_loop_.RunUntilIdle(); | 147 base::RunLoop().RunUntilIdle(); |
| 152 | 148 |
| 153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 149 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 154 EXPECT_EQ(0, consumer_.number_of_errors_); | 150 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 155 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 151 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 156 EXPECT_TRUE(fetcher); | 152 EXPECT_TRUE(fetcher); |
| 157 fetcher->set_response_code(net::HTTP_OK); | 153 fetcher->set_response_code(net::HTTP_OK); |
| 158 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 154 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 159 fetcher->delegate()->OnURLFetchComplete(fetcher); | 155 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 160 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 156 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 161 EXPECT_EQ(0, consumer_.number_of_errors_); | 157 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 162 EXPECT_EQ("token", consumer_.last_token_); | 158 EXPECT_EQ("token", consumer_.last_token_); |
| 163 | 159 |
| 164 // Second request to the same set of scopes, should return the same token | 160 // Second request to the same set of scopes, should return the same token |
| 165 // without needing a network request. | 161 // without needing a network request. |
| 166 scoped_ptr<OAuth2TokenService::Request> request2( | 162 scoped_ptr<OAuth2TokenService::Request> request2( |
| 167 oauth2_service_->StartRequest(scopes1_same, &consumer_)); | 163 oauth2_service_->StartRequest(scopes1_same, &consumer_)); |
| 168 message_loop_.RunUntilIdle(); | 164 base::RunLoop().RunUntilIdle(); |
| 169 | 165 |
| 170 // No new network fetcher. | 166 // No new network fetcher. |
| 171 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 167 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 172 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 168 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 173 EXPECT_EQ(0, consumer_.number_of_errors_); | 169 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 174 EXPECT_EQ("token", consumer_.last_token_); | 170 EXPECT_EQ("token", consumer_.last_token_); |
| 175 | 171 |
| 176 // Third request to a new set of scopes, should return another token. | 172 // Third request to a new set of scopes, should return another token. |
| 177 scoped_ptr<OAuth2TokenService::Request> request3( | 173 scoped_ptr<OAuth2TokenService::Request> request3( |
| 178 oauth2_service_->StartRequest(scopes2, &consumer_)); | 174 oauth2_service_->StartRequest(scopes2, &consumer_)); |
| 179 message_loop_.RunUntilIdle(); | 175 base::RunLoop().RunUntilIdle(); |
| 180 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 176 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 181 EXPECT_EQ(0, consumer_.number_of_errors_); | 177 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 182 fetcher = factory_.GetFetcherByID(0); | 178 fetcher = factory_.GetFetcherByID(0); |
| 183 EXPECT_TRUE(fetcher); | 179 EXPECT_TRUE(fetcher); |
| 184 fetcher->set_response_code(net::HTTP_OK); | 180 fetcher->set_response_code(net::HTTP_OK); |
| 185 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 181 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 186 fetcher->delegate()->OnURLFetchComplete(fetcher); | 182 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 187 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 183 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 188 EXPECT_EQ(0, consumer_.number_of_errors_); | 184 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 189 EXPECT_EQ("token2", consumer_.last_token_); | 185 EXPECT_EQ("token2", consumer_.last_token_); |
| 190 } | 186 } |
| 191 | 187 |
| 192 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { | 188 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
| 193 oauth2_service_->set_refresh_token("refreshToken"); | 189 oauth2_service_->set_refresh_token("refreshToken"); |
| 194 | 190 |
| 195 // First request. | 191 // First request. |
| 196 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 192 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 197 std::set<std::string>(), &consumer_)); | 193 std::set<std::string>(), &consumer_)); |
| 198 message_loop_.RunUntilIdle(); | 194 base::RunLoop().RunUntilIdle(); |
| 199 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 195 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 200 EXPECT_EQ(0, consumer_.number_of_errors_); | 196 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 201 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 197 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 202 EXPECT_TRUE(fetcher); | 198 EXPECT_TRUE(fetcher); |
| 203 fetcher->set_response_code(net::HTTP_OK); | 199 fetcher->set_response_code(net::HTTP_OK); |
| 204 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 200 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 205 fetcher->delegate()->OnURLFetchComplete(fetcher); | 201 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 206 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 202 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 207 EXPECT_EQ(0, consumer_.number_of_errors_); | 203 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 208 EXPECT_EQ("token", consumer_.last_token_); | 204 EXPECT_EQ("token", consumer_.last_token_); |
| 209 | 205 |
| 210 // Second request must try to access the network as the token has expired. | 206 // Second request must try to access the network as the token has expired. |
| 211 scoped_ptr<OAuth2TokenService::Request> request2( | 207 scoped_ptr<OAuth2TokenService::Request> request2( |
| 212 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 208 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 213 message_loop_.RunUntilIdle(); | 209 base::RunLoop().RunUntilIdle(); |
| 214 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 210 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 215 EXPECT_EQ(0, consumer_.number_of_errors_); | 211 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 216 | 212 |
| 217 // Network failure. | 213 // Network failure. |
| 218 fetcher = factory_.GetFetcherByID(0); | 214 fetcher = factory_.GetFetcherByID(0); |
| 219 EXPECT_TRUE(fetcher); | 215 EXPECT_TRUE(fetcher); |
| 220 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 216 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 221 fetcher->SetResponseString(std::string()); | 217 fetcher->SetResponseString(std::string()); |
| 222 fetcher->delegate()->OnURLFetchComplete(fetcher); | 218 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 223 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 219 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 224 EXPECT_EQ(1, consumer_.number_of_errors_); | 220 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 225 } | 221 } |
| 226 | 222 |
| 227 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { | 223 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
| 228 oauth2_service_->set_refresh_token("refreshToken"); | 224 oauth2_service_->set_refresh_token("refreshToken"); |
| 229 | 225 |
| 230 // First request. | 226 // First request. |
| 231 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 227 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 232 std::set<std::string>(), &consumer_)); | 228 std::set<std::string>(), &consumer_)); |
| 233 message_loop_.RunUntilIdle(); | 229 base::RunLoop().RunUntilIdle(); |
| 234 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 230 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 235 EXPECT_EQ(0, consumer_.number_of_errors_); | 231 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 236 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 232 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 237 EXPECT_TRUE(fetcher); | 233 EXPECT_TRUE(fetcher); |
| 238 fetcher->set_response_code(net::HTTP_OK); | 234 fetcher->set_response_code(net::HTTP_OK); |
| 239 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 235 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
| 240 fetcher->delegate()->OnURLFetchComplete(fetcher); | 236 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 241 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 237 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 242 EXPECT_EQ(0, consumer_.number_of_errors_); | 238 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 243 EXPECT_EQ("token", consumer_.last_token_); | 239 EXPECT_EQ("token", consumer_.last_token_); |
| 244 | 240 |
| 245 // Second request must try to access the network as the token has expired. | 241 // Second request must try to access the network as the token has expired. |
| 246 scoped_ptr<OAuth2TokenService::Request> request2( | 242 scoped_ptr<OAuth2TokenService::Request> request2( |
| 247 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 243 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 248 message_loop_.RunUntilIdle(); | 244 base::RunLoop().RunUntilIdle(); |
| 249 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 245 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 250 EXPECT_EQ(0, consumer_.number_of_errors_); | 246 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 251 | 247 |
| 252 fetcher = factory_.GetFetcherByID(0); | 248 fetcher = factory_.GetFetcherByID(0); |
| 253 EXPECT_TRUE(fetcher); | 249 EXPECT_TRUE(fetcher); |
| 254 fetcher->set_response_code(net::HTTP_OK); | 250 fetcher->set_response_code(net::HTTP_OK); |
| 255 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); | 251 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); |
| 256 fetcher->delegate()->OnURLFetchComplete(fetcher); | 252 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 257 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 253 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 258 EXPECT_EQ(0, consumer_.number_of_errors_); | 254 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 259 EXPECT_EQ("another token", consumer_.last_token_); | 255 EXPECT_EQ("another token", consumer_.last_token_); |
| 260 } | 256 } |
| 261 | 257 |
| 262 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { | 258 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
| 263 oauth2_service_->set_refresh_token("refreshToken"); | 259 oauth2_service_->set_refresh_token("refreshToken"); |
| 264 | 260 |
| 265 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 261 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 266 std::set<std::string>(), &consumer_)); | 262 std::set<std::string>(), &consumer_)); |
| 267 message_loop_.RunUntilIdle(); | 263 base::RunLoop().RunUntilIdle(); |
| 268 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 264 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 269 EXPECT_EQ(0, consumer_.number_of_errors_); | 265 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 270 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 266 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 271 EXPECT_TRUE(fetcher); | 267 EXPECT_TRUE(fetcher); |
| 272 | 268 |
| 273 request.reset(); | 269 request.reset(); |
| 274 | 270 |
| 275 fetcher->set_response_code(net::HTTP_OK); | 271 fetcher->set_response_code(net::HTTP_OK); |
| 276 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 272 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 277 fetcher->delegate()->OnURLFetchComplete(fetcher); | 273 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 278 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 274 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 279 EXPECT_EQ(0, consumer_.number_of_errors_); | 275 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 280 } | 276 } |
| 281 | 277 |
| 282 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { | 278 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
| 283 oauth2_service_->set_refresh_token("refreshToken"); | 279 oauth2_service_->set_refresh_token("refreshToken"); |
| 284 | 280 |
| 285 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 281 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 286 std::set<std::string>(), &consumer_)); | 282 std::set<std::string>(), &consumer_)); |
| 287 message_loop_.RunUntilIdle(); | 283 base::RunLoop().RunUntilIdle(); |
| 288 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 284 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 289 fetcher->set_response_code(net::HTTP_OK); | 285 fetcher->set_response_code(net::HTTP_OK); |
| 290 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 286 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 291 fetcher->delegate()->OnURLFetchComplete(fetcher); | 287 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 292 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 288 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 293 EXPECT_EQ(0, consumer_.number_of_errors_); | 289 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 294 EXPECT_EQ("token", consumer_.last_token_); | 290 EXPECT_EQ("token", consumer_.last_token_); |
| 295 | 291 |
| 296 request.reset(); | 292 request.reset(); |
| 297 | 293 |
| 298 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 294 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 299 EXPECT_EQ(0, consumer_.number_of_errors_); | 295 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 300 EXPECT_EQ("token", consumer_.last_token_); | 296 EXPECT_EQ("token", consumer_.last_token_); |
| 301 } | 297 } |
| 302 | 298 |
| 303 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { | 299 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
| 304 oauth2_service_->set_refresh_token("refreshToken"); | 300 oauth2_service_->set_refresh_token("refreshToken"); |
| 305 | 301 |
| 306 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 302 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 307 std::set<std::string>(), &consumer_)); | 303 std::set<std::string>(), &consumer_)); |
| 308 message_loop_.RunUntilIdle(); | 304 base::RunLoop().RunUntilIdle(); |
| 309 scoped_ptr<OAuth2TokenService::Request> request2( | 305 scoped_ptr<OAuth2TokenService::Request> request2( |
| 310 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 306 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
| 311 message_loop_.RunUntilIdle(); | 307 base::RunLoop().RunUntilIdle(); |
| 312 | 308 |
| 313 request.reset(); | 309 request.reset(); |
| 314 | 310 |
| 315 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 311 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 316 fetcher->set_response_code(net::HTTP_OK); | 312 fetcher->set_response_code(net::HTTP_OK); |
| 317 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 313 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 318 fetcher->delegate()->OnURLFetchComplete(fetcher); | 314 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 319 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 315 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 320 EXPECT_EQ(0, consumer_.number_of_errors_); | 316 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 321 } | 317 } |
| 322 | 318 |
| 323 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { | 319 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
| 324 // We have a valid refresh token; the first request is successful. | 320 // We have a valid refresh token; the first request is successful. |
| 325 oauth2_service_->set_refresh_token("refreshToken"); | 321 oauth2_service_->set_refresh_token("refreshToken"); |
| 326 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 322 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 327 std::set<std::string>(), &consumer_)); | 323 std::set<std::string>(), &consumer_)); |
| 328 message_loop_.RunUntilIdle(); | 324 base::RunLoop().RunUntilIdle(); |
| 329 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 325 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 330 fetcher->set_response_code(net::HTTP_OK); | 326 fetcher->set_response_code(net::HTTP_OK); |
| 331 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 327 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 332 fetcher->delegate()->OnURLFetchComplete(fetcher); | 328 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 333 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 329 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 334 EXPECT_EQ(0, consumer_.number_of_errors_); | 330 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 335 EXPECT_EQ("token", consumer_.last_token_); | 331 EXPECT_EQ("token", consumer_.last_token_); |
| 336 | 332 |
| 337 // The refresh token is no longer available; subsequent requests fail. | 333 // The refresh token is no longer available; subsequent requests fail. |
| 338 oauth2_service_->set_refresh_token(""); | 334 oauth2_service_->set_refresh_token(""); |
| 339 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); | 335 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); |
| 340 message_loop_.RunUntilIdle(); | 336 base::RunLoop().RunUntilIdle(); |
| 341 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 337 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 342 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 338 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 343 EXPECT_EQ(1, consumer_.number_of_errors_); | 339 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 344 } | 340 } |
| 345 | 341 |
| 346 TEST_F(OAuth2TokenServiceTest, | 342 TEST_F(OAuth2TokenServiceTest, |
| 347 ChangedRefreshTokenDoesNotAffectInFlightRequests) { | 343 ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
| 348 oauth2_service_->set_refresh_token("first refreshToken"); | 344 oauth2_service_->set_refresh_token("first refreshToken"); |
| 349 std::set<std::string> scopes; | 345 std::set<std::string> scopes; |
| 350 scopes.insert("s1"); | 346 scopes.insert("s1"); |
| 351 scopes.insert("s2"); | 347 scopes.insert("s2"); |
| 352 | 348 |
| 353 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 349 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 354 scopes, &consumer_)); | 350 scopes, &consumer_)); |
| 355 message_loop_.RunUntilIdle(); | 351 base::RunLoop().RunUntilIdle(); |
| 356 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); | 352 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
| 357 | 353 |
| 358 // Note |request| is still pending when the refresh token changes. | 354 // Note |request| is still pending when the refresh token changes. |
| 359 oauth2_service_->set_refresh_token("second refreshToken"); | 355 oauth2_service_->set_refresh_token("second refreshToken"); |
| 360 | 356 |
| 361 // A 2nd request (using the new refresh token) that occurs and completes | 357 // A 2nd request (using the new refresh token) that occurs and completes |
| 362 // while the 1st request is in flight is successful. | 358 // while the 1st request is in flight is successful. |
| 363 TestingOAuth2TokenServiceConsumer consumer2; | 359 TestingOAuth2TokenServiceConsumer consumer2; |
| 364 scoped_ptr<OAuth2TokenService::Request> request2( | 360 scoped_ptr<OAuth2TokenService::Request> request2( |
| 365 oauth2_service_->StartRequest(scopes, &consumer2)); | 361 oauth2_service_->StartRequest(scopes, &consumer2)); |
| 366 message_loop_.RunUntilIdle(); | 362 base::RunLoop().RunUntilIdle(); |
| 367 | 363 |
| 368 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); | 364 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
| 369 fetcher2->set_response_code(net::HTTP_OK); | 365 fetcher2->set_response_code(net::HTTP_OK); |
| 370 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); | 366 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); |
| 371 fetcher2->delegate()->OnURLFetchComplete(fetcher2); | 367 fetcher2->delegate()->OnURLFetchComplete(fetcher2); |
| 372 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); | 368 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); |
| 373 EXPECT_EQ(0, consumer2.number_of_errors_); | 369 EXPECT_EQ(0, consumer2.number_of_errors_); |
| 374 EXPECT_EQ("second token", consumer2.last_token_); | 370 EXPECT_EQ("second token", consumer2.last_token_); |
| 375 | 371 |
| 376 fetcher1->set_response_code(net::HTTP_OK); | 372 fetcher1->set_response_code(net::HTTP_OK); |
| 377 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); | 373 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); |
| 378 fetcher1->delegate()->OnURLFetchComplete(fetcher1); | 374 fetcher1->delegate()->OnURLFetchComplete(fetcher1); |
| 379 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 375 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 380 EXPECT_EQ(0, consumer_.number_of_errors_); | 376 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 381 EXPECT_EQ("first token", consumer_.last_token_); | 377 EXPECT_EQ("first token", consumer_.last_token_); |
| 382 } | 378 } |
| 383 | 379 |
| 384 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { | 380 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
| 385 oauth2_service_->set_refresh_token("refreshToken"); | 381 oauth2_service_->set_refresh_token("refreshToken"); |
| 386 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 382 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 387 std::set<std::string>(), &consumer_)); | 383 std::set<std::string>(), &consumer_)); |
| 388 message_loop_.RunUntilIdle(); | 384 base::RunLoop().RunUntilIdle(); |
| 389 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 385 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 390 EXPECT_EQ(0, consumer_.number_of_errors_); | 386 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 391 | 387 |
| 392 // The destructor should cancel all in-flight fetchers. | 388 // The destructor should cancel all in-flight fetchers. |
| 393 oauth2_service_.reset(NULL); | 389 oauth2_service_.reset(NULL); |
| 394 | 390 |
| 395 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 391 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 396 EXPECT_EQ(1, consumer_.number_of_errors_); | 392 EXPECT_EQ(1, consumer_.number_of_errors_); |
| 397 } | 393 } |
| 398 | 394 |
| 399 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { | 395 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
| 400 oauth2_service_->set_refresh_token("refreshToken"); | 396 oauth2_service_->set_refresh_token("refreshToken"); |
| 401 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); | 397 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); |
| 402 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 398 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
| 403 std::set<std::string>(), &consumer)); | 399 std::set<std::string>(), &consumer)); |
| 404 message_loop_.RunUntilIdle(); | 400 base::RunLoop().RunUntilIdle(); |
| 405 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 401 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 406 EXPECT_EQ(0, consumer.number_of_errors_); | 402 EXPECT_EQ(0, consumer.number_of_errors_); |
| 407 | 403 |
| 408 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 404 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 409 ASSERT_TRUE(fetcher); | 405 ASSERT_TRUE(fetcher); |
| 410 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 406 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 411 fetcher->SetResponseString(std::string()); | 407 fetcher->SetResponseString(std::string()); |
| 412 fetcher->delegate()->OnURLFetchComplete(fetcher); | 408 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 413 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 409 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 414 EXPECT_EQ(1, consumer.number_of_errors_); | 410 EXPECT_EQ(1, consumer.number_of_errors_); |
| 415 | 411 |
| 416 fetcher = factory_.GetFetcherByID(0); | 412 fetcher = factory_.GetFetcherByID(0); |
| 417 ASSERT_TRUE(fetcher); | 413 ASSERT_TRUE(fetcher); |
| 418 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 414 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
| 419 fetcher->SetResponseString(std::string()); | 415 fetcher->SetResponseString(std::string()); |
| 420 fetcher->delegate()->OnURLFetchComplete(fetcher); | 416 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 421 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 417 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
| 422 EXPECT_EQ(2, consumer.number_of_errors_); | 418 EXPECT_EQ(2, consumer.number_of_errors_); |
| 423 } | 419 } |
| 424 | 420 |
| 425 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { | 421 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
| 426 std::set<std::string> scopes; | 422 std::set<std::string> scopes; |
| 427 oauth2_service_->set_refresh_token("refreshToken"); | 423 oauth2_service_->set_refresh_token("refreshToken"); |
| 428 | 424 |
| 429 // First request. | 425 // First request. |
| 430 scoped_ptr<OAuth2TokenService::Request> request( | 426 scoped_ptr<OAuth2TokenService::Request> request( |
| 431 oauth2_service_->StartRequest(scopes, &consumer_)); | 427 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 432 message_loop_.RunUntilIdle(); | 428 base::RunLoop().RunUntilIdle(); |
| 433 | 429 |
| 434 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 430 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 435 EXPECT_EQ(0, consumer_.number_of_errors_); | 431 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 436 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 432 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 437 EXPECT_TRUE(fetcher); | 433 EXPECT_TRUE(fetcher); |
| 438 fetcher->set_response_code(net::HTTP_OK); | 434 fetcher->set_response_code(net::HTTP_OK); |
| 439 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 435 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 440 fetcher->delegate()->OnURLFetchComplete(fetcher); | 436 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 441 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 437 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 442 EXPECT_EQ(0, consumer_.number_of_errors_); | 438 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 443 EXPECT_EQ("token", consumer_.last_token_); | 439 EXPECT_EQ("token", consumer_.last_token_); |
| 444 | 440 |
| 445 // Second request, should return the same token without needing a network | 441 // Second request, should return the same token without needing a network |
| 446 // request. | 442 // request. |
| 447 scoped_ptr<OAuth2TokenService::Request> request2( | 443 scoped_ptr<OAuth2TokenService::Request> request2( |
| 448 oauth2_service_->StartRequest(scopes, &consumer_)); | 444 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 449 message_loop_.RunUntilIdle(); | 445 base::RunLoop().RunUntilIdle(); |
| 450 | 446 |
| 451 // No new network fetcher. | 447 // No new network fetcher. |
| 452 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 448 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 453 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 449 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 454 EXPECT_EQ(0, consumer_.number_of_errors_); | 450 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 455 EXPECT_EQ("token", consumer_.last_token_); | 451 EXPECT_EQ("token", consumer_.last_token_); |
| 456 | 452 |
| 457 // Invalidating the token should return a new token on the next request. | 453 // Invalidating the token should return a new token on the next request. |
| 458 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); | 454 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); |
| 459 scoped_ptr<OAuth2TokenService::Request> request3( | 455 scoped_ptr<OAuth2TokenService::Request> request3( |
| 460 oauth2_service_->StartRequest(scopes, &consumer_)); | 456 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 461 message_loop_.RunUntilIdle(); | 457 base::RunLoop().RunUntilIdle(); |
| 462 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 458 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 463 EXPECT_EQ(0, consumer_.number_of_errors_); | 459 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 464 fetcher = factory_.GetFetcherByID(0); | 460 fetcher = factory_.GetFetcherByID(0); |
| 465 EXPECT_TRUE(fetcher); | 461 EXPECT_TRUE(fetcher); |
| 466 fetcher->set_response_code(net::HTTP_OK); | 462 fetcher->set_response_code(net::HTTP_OK); |
| 467 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 463 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 468 fetcher->delegate()->OnURLFetchComplete(fetcher); | 464 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 469 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 465 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 470 EXPECT_EQ(0, consumer_.number_of_errors_); | 466 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 471 EXPECT_EQ("token2", consumer_.last_token_); | 467 EXPECT_EQ("token2", consumer_.last_token_); |
| 472 } | 468 } |
| OLD | NEW |