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