Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: google_apis/gaia/oauth2_token_service_unittest.cc

Issue 1143323005: Refactor AO2TS to make it easier to componentize. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address final comments Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "google_apis/gaia/fake_oauth2_token_service_delegate.h"
9 #include "google_apis/gaia/gaia_constants.h" 10 #include "google_apis/gaia/gaia_constants.h"
10 #include "google_apis/gaia/google_service_auth_error.h" 11 #include "google_apis/gaia/google_service_auth_error.h"
11 #include "google_apis/gaia/oauth2_access_token_consumer.h" 12 #include "google_apis/gaia/oauth2_access_token_consumer.h"
12 #include "google_apis/gaia/oauth2_access_token_fetcher_impl.h" 13 #include "google_apis/gaia/oauth2_access_token_fetcher_impl.h"
13 #include "google_apis/gaia/oauth2_token_service.h" 14 #include "google_apis/gaia/oauth2_token_service.h"
14 #include "google_apis/gaia/oauth2_token_service_test_util.h" 15 #include "google_apis/gaia/oauth2_token_service_test_util.h"
15 #include "net/http/http_status_code.h" 16 #include "net/http/http_status_code.h"
16 #include "net/url_request/test_url_fetcher_factory.h" 17 #include "net/url_request/test_url_fetcher_factory.h"
17 #include "net/url_request/url_fetcher_delegate.h" 18 #include "net/url_request/url_fetcher_delegate.h"
18 #include "net/url_request/url_request_test_util.h" 19 #include "net/url_request/url_request_test_util.h"
(...skipping 17 matching lines...) Expand all
36 account_id_, OAuth2TokenService::ScopeSet(), this).release()); 37 account_id_, OAuth2TokenService::ScopeSet(), this).release());
37 } 38 }
38 39
39 OAuth2TokenService* oauth2_service_; 40 OAuth2TokenService* oauth2_service_;
40 std::string account_id_; 41 std::string account_id_;
41 scoped_ptr<OAuth2TokenService::Request> request_; 42 scoped_ptr<OAuth2TokenService::Request> request_;
42 }; 43 };
43 44
44 class TestOAuth2TokenService : public OAuth2TokenService { 45 class TestOAuth2TokenService : public OAuth2TokenService {
45 public: 46 public:
46 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter) 47 explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate)
47 : request_context_getter_(getter) { 48 : OAuth2TokenService(delegate) {}
48 }
49 49
50 void CancelAllRequestsForTest() { CancelAllRequests(); } 50 void CancelAllRequestsForTest() { CancelAllRequests(); }
51 51
52 void CancelRequestsForAccountForTest(const std::string& account_id) { 52 void CancelRequestsForAccountForTest(const std::string& account_id) {
53 CancelRequestsForAccount(account_id); 53 CancelRequestsForAccount(account_id);
54 } 54 }
55 55
56 // For testing: set the refresh token to be used. 56 FakeOAuth2TokenServiceDelegate* GetFakeOAuth2TokenServiceDelegate() {
57 void set_refresh_token(const std::string& account_id, 57 return static_cast<FakeOAuth2TokenServiceDelegate*>(GetDelegate());
58 const std::string& refresh_token) {
59 if (refresh_token.empty())
60 refresh_tokens_.erase(account_id);
61 else
62 refresh_tokens_[account_id] = refresh_token;
63 } 58 }
64
65 bool RefreshTokenIsAvailable(const std::string& account_id) const override {
66 std::map<std::string, std::string>::const_iterator it =
67 refresh_tokens_.find(account_id);
68
69 return it != refresh_tokens_.end();
70 };
71
72 private:
73 // OAuth2TokenService implementation.
74 net::URLRequestContextGetter* GetRequestContext() override {
75 return request_context_getter_.get();
76 }
77
78 OAuth2AccessTokenFetcher* CreateAccessTokenFetcher(
79 const std::string& account_id,
80 net::URLRequestContextGetter* getter,
81 OAuth2AccessTokenConsumer* consumer) override {
82 std::map<std::string, std::string>::const_iterator it =
83 refresh_tokens_.find(account_id);
84 DCHECK(it != refresh_tokens_.end());
85 std::string refresh_token(it->second);
86 return new OAuth2AccessTokenFetcherImpl(consumer, getter, refresh_token);
87 };
88
89 std::map<std::string, std::string> refresh_tokens_;
90 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
91 }; 59 };
92 60
93 class OAuth2TokenServiceTest : public testing::Test { 61 class OAuth2TokenServiceTest : public testing::Test {
94 public: 62 public:
95 void SetUp() override { 63 void SetUp() override {
96 oauth2_service_.reset( 64 oauth2_service_.reset(new TestOAuth2TokenService(
97 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( 65 new FakeOAuth2TokenServiceDelegate(new net::TestURLRequestContextGetter(
98 message_loop_.task_runner()))); 66 message_loop_.task_runner()))));
99 account_id_ = "test_user@gmail.com"; 67 account_id_ = "test_user@gmail.com";
100 } 68 }
101 69
102 void TearDown() override { 70 void TearDown() override {
103 // Makes sure that all the clean up tasks are run. 71 // Makes sure that all the clean up tasks are run.
104 base::RunLoop().RunUntilIdle(); 72 base::RunLoop().RunUntilIdle();
105 } 73 }
106 74
107 protected: 75 protected:
108 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. 76 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop.
109 net::TestURLFetcherFactory factory_; 77 net::TestURLFetcherFactory factory_;
110 scoped_ptr<TestOAuth2TokenService> oauth2_service_; 78 scoped_ptr<TestOAuth2TokenService> oauth2_service_;
111 std::string account_id_; 79 std::string account_id_;
112 TestingOAuth2TokenServiceConsumer consumer_; 80 TestingOAuth2TokenServiceConsumer consumer_;
113 }; 81 };
114 82
115 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { 83 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
116 scoped_ptr<OAuth2TokenService::Request> request( 84 scoped_ptr<OAuth2TokenService::Request> request(
117 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), 85 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
118 &consumer_)); 86 &consumer_));
119 base::RunLoop().RunUntilIdle(); 87 base::RunLoop().RunUntilIdle();
120 88
121 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 89 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
122 EXPECT_EQ(1, consumer_.number_of_errors_); 90 EXPECT_EQ(1, consumer_.number_of_errors_);
123 } 91 }
124 92
125 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { 93 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
126 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 94 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
95 account_id_, "refreshToken");
127 scoped_ptr<OAuth2TokenService::Request> request( 96 scoped_ptr<OAuth2TokenService::Request> request(
128 oauth2_service_->StartRequest(account_id_, 97 oauth2_service_->StartRequest(account_id_,
129 OAuth2TokenService::ScopeSet(), 98 OAuth2TokenService::ScopeSet(),
130 &consumer_)); 99 &consumer_));
131 base::RunLoop().RunUntilIdle(); 100 base::RunLoop().RunUntilIdle();
132 101
133 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 102 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
134 EXPECT_EQ(0, consumer_.number_of_errors_); 103 EXPECT_EQ(0, consumer_.number_of_errors_);
135 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 104 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
136 ASSERT_TRUE(fetcher); 105 ASSERT_TRUE(fetcher);
137 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 106 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
138 fetcher->SetResponseString(std::string()); 107 fetcher->SetResponseString(std::string());
139 fetcher->delegate()->OnURLFetchComplete(fetcher); 108 fetcher->delegate()->OnURLFetchComplete(fetcher);
140 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 109 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
141 EXPECT_EQ(1, consumer_.number_of_errors_); 110 EXPECT_EQ(1, consumer_.number_of_errors_);
142 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 111 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
143 } 112 }
144 113
145 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { 114 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
146 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 115 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
116 account_id_, "refreshToken");
147 scoped_ptr<OAuth2TokenService::Request> request( 117 scoped_ptr<OAuth2TokenService::Request> request(
148 oauth2_service_->StartRequest(account_id_, 118 oauth2_service_->StartRequest(account_id_,
149 OAuth2TokenService::ScopeSet(), 119 OAuth2TokenService::ScopeSet(),
150 &consumer_)); 120 &consumer_));
151 base::RunLoop().RunUntilIdle(); 121 base::RunLoop().RunUntilIdle();
152 122
153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
154 EXPECT_EQ(0, consumer_.number_of_errors_); 124 EXPECT_EQ(0, consumer_.number_of_errors_);
155 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 125 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
156 ASSERT_TRUE(fetcher); 126 ASSERT_TRUE(fetcher);
157 fetcher->set_response_code(net::HTTP_OK); 127 fetcher->set_response_code(net::HTTP_OK);
158 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 128 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
159 fetcher->delegate()->OnURLFetchComplete(fetcher); 129 fetcher->delegate()->OnURLFetchComplete(fetcher);
160 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 130 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
161 EXPECT_EQ(0, consumer_.number_of_errors_); 131 EXPECT_EQ(0, consumer_.number_of_errors_);
162 EXPECT_EQ("token", consumer_.last_token_); 132 EXPECT_EQ("token", consumer_.last_token_);
163 } 133 }
164 134
165 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { 135 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
166 OAuth2TokenService::ScopeSet scopes1; 136 OAuth2TokenService::ScopeSet scopes1;
167 scopes1.insert("s1"); 137 scopes1.insert("s1");
168 scopes1.insert("s2"); 138 scopes1.insert("s2");
169 OAuth2TokenService::ScopeSet scopes1_same; 139 OAuth2TokenService::ScopeSet scopes1_same;
170 scopes1_same.insert("s2"); 140 scopes1_same.insert("s2");
171 scopes1_same.insert("s1"); 141 scopes1_same.insert("s1");
172 OAuth2TokenService::ScopeSet scopes2; 142 OAuth2TokenService::ScopeSet scopes2;
173 scopes2.insert("s3"); 143 scopes2.insert("s3");
174 144
175 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 145 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
146 account_id_, "refreshToken");
176 147
177 // First request. 148 // First request.
178 scoped_ptr<OAuth2TokenService::Request> request( 149 scoped_ptr<OAuth2TokenService::Request> request(
179 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_)); 150 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_));
180 base::RunLoop().RunUntilIdle(); 151 base::RunLoop().RunUntilIdle();
181 152
182 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
183 EXPECT_EQ(0, consumer_.number_of_errors_); 154 EXPECT_EQ(0, consumer_.number_of_errors_);
184 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 155 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
185 ASSERT_TRUE(fetcher); 156 ASSERT_TRUE(fetcher);
(...skipping 25 matching lines...) Expand all
211 ASSERT_TRUE(fetcher); 182 ASSERT_TRUE(fetcher);
212 fetcher->set_response_code(net::HTTP_OK); 183 fetcher->set_response_code(net::HTTP_OK);
213 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
214 fetcher->delegate()->OnURLFetchComplete(fetcher); 185 fetcher->delegate()->OnURLFetchComplete(fetcher);
215 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
216 EXPECT_EQ(0, consumer_.number_of_errors_); 187 EXPECT_EQ(0, consumer_.number_of_errors_);
217 EXPECT_EQ("token2", consumer_.last_token_); 188 EXPECT_EQ("token2", consumer_.last_token_);
218 } 189 }
219 190
220 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { 191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
221 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 192 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
193 account_id_, "refreshToken");
222 194
223 // First request. 195 // First request.
224 scoped_ptr<OAuth2TokenService::Request> request( 196 scoped_ptr<OAuth2TokenService::Request> request(
225 oauth2_service_->StartRequest(account_id_, 197 oauth2_service_->StartRequest(account_id_,
226 OAuth2TokenService::ScopeSet(), 198 OAuth2TokenService::ScopeSet(),
227 &consumer_)); 199 &consumer_));
228 base::RunLoop().RunUntilIdle(); 200 base::RunLoop().RunUntilIdle();
229 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 201 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
230 EXPECT_EQ(0, consumer_.number_of_errors_); 202 EXPECT_EQ(0, consumer_.number_of_errors_);
231 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 203 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
(...skipping 18 matching lines...) Expand all
250 fetcher = factory_.GetFetcherByID(0); 222 fetcher = factory_.GetFetcherByID(0);
251 ASSERT_TRUE(fetcher); 223 ASSERT_TRUE(fetcher);
252 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 224 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
253 fetcher->SetResponseString(std::string()); 225 fetcher->SetResponseString(std::string());
254 fetcher->delegate()->OnURLFetchComplete(fetcher); 226 fetcher->delegate()->OnURLFetchComplete(fetcher);
255 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 227 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
256 EXPECT_EQ(1, consumer_.number_of_errors_); 228 EXPECT_EQ(1, consumer_.number_of_errors_);
257 } 229 }
258 230
259 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { 231 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
260 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 232 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
233 account_id_, "refreshToken");
261 234
262 // First request. 235 // First request.
263 scoped_ptr<OAuth2TokenService::Request> request( 236 scoped_ptr<OAuth2TokenService::Request> request(
264 oauth2_service_->StartRequest(account_id_, 237 oauth2_service_->StartRequest(account_id_,
265 OAuth2TokenService::ScopeSet(), 238 OAuth2TokenService::ScopeSet(),
266 &consumer_)); 239 &consumer_));
267 base::RunLoop().RunUntilIdle(); 240 base::RunLoop().RunUntilIdle();
268 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 241 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
269 EXPECT_EQ(0, consumer_.number_of_errors_); 242 EXPECT_EQ(0, consumer_.number_of_errors_);
270 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 243 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
(...skipping 18 matching lines...) Expand all
289 ASSERT_TRUE(fetcher); 262 ASSERT_TRUE(fetcher);
290 fetcher->set_response_code(net::HTTP_OK); 263 fetcher->set_response_code(net::HTTP_OK);
291 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); 264 fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
292 fetcher->delegate()->OnURLFetchComplete(fetcher); 265 fetcher->delegate()->OnURLFetchComplete(fetcher);
293 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 266 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
294 EXPECT_EQ(0, consumer_.number_of_errors_); 267 EXPECT_EQ(0, consumer_.number_of_errors_);
295 EXPECT_EQ("another token", consumer_.last_token_); 268 EXPECT_EQ("another token", consumer_.last_token_);
296 } 269 }
297 270
298 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { 271 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
299 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 272 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
273 account_id_, "refreshToken");
300 274
301 scoped_ptr<OAuth2TokenService::Request> request( 275 scoped_ptr<OAuth2TokenService::Request> request(
302 oauth2_service_->StartRequest(account_id_, 276 oauth2_service_->StartRequest(account_id_,
303 OAuth2TokenService::ScopeSet(), 277 OAuth2TokenService::ScopeSet(),
304 &consumer_)); 278 &consumer_));
305 base::RunLoop().RunUntilIdle(); 279 base::RunLoop().RunUntilIdle();
306 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 280 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
307 EXPECT_EQ(0, consumer_.number_of_errors_); 281 EXPECT_EQ(0, consumer_.number_of_errors_);
308 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 282 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
309 ASSERT_TRUE(fetcher); 283 ASSERT_TRUE(fetcher);
310 284
311 request.reset(); 285 request.reset();
312 286
313 fetcher->set_response_code(net::HTTP_OK); 287 fetcher->set_response_code(net::HTTP_OK);
314 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 288 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
315 fetcher->delegate()->OnURLFetchComplete(fetcher); 289 fetcher->delegate()->OnURLFetchComplete(fetcher);
316 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 290 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
317 EXPECT_EQ(0, consumer_.number_of_errors_); 291 EXPECT_EQ(0, consumer_.number_of_errors_);
318 } 292 }
319 293
320 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { 294 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
321 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 295 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
296 account_id_, "refreshToken");
322 297
323 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 298 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
324 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); 299 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
325 base::RunLoop().RunUntilIdle(); 300 base::RunLoop().RunUntilIdle();
326 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 301 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
327 ASSERT_TRUE(fetcher); 302 ASSERT_TRUE(fetcher);
328 fetcher->set_response_code(net::HTTP_OK); 303 fetcher->set_response_code(net::HTTP_OK);
329 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 304 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
330 fetcher->delegate()->OnURLFetchComplete(fetcher); 305 fetcher->delegate()->OnURLFetchComplete(fetcher);
331 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 306 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
332 EXPECT_EQ(0, consumer_.number_of_errors_); 307 EXPECT_EQ(0, consumer_.number_of_errors_);
333 EXPECT_EQ("token", consumer_.last_token_); 308 EXPECT_EQ("token", consumer_.last_token_);
334 309
335 request.reset(); 310 request.reset();
336 311
337 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 312 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
338 EXPECT_EQ(0, consumer_.number_of_errors_); 313 EXPECT_EQ(0, consumer_.number_of_errors_);
339 EXPECT_EQ("token", consumer_.last_token_); 314 EXPECT_EQ("token", consumer_.last_token_);
340 } 315 }
341 316
342 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { 317 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
343 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 318 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
319 account_id_, "refreshToken");
344 320
345 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 321 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
346 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); 322 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
347 base::RunLoop().RunUntilIdle(); 323 base::RunLoop().RunUntilIdle();
348 scoped_ptr<OAuth2TokenService::Request> request2( 324 scoped_ptr<OAuth2TokenService::Request> request2(
349 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), 325 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
350 &consumer_)); 326 &consumer_));
351 base::RunLoop().RunUntilIdle(); 327 base::RunLoop().RunUntilIdle();
352 328
353 request.reset(); 329 request.reset();
354 330
355 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 331 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
356 ASSERT_TRUE(fetcher); 332 ASSERT_TRUE(fetcher);
357 fetcher->set_response_code(net::HTTP_OK); 333 fetcher->set_response_code(net::HTTP_OK);
358 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 334 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
359 fetcher->delegate()->OnURLFetchComplete(fetcher); 335 fetcher->delegate()->OnURLFetchComplete(fetcher);
360 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 336 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
361 EXPECT_EQ(0, consumer_.number_of_errors_); 337 EXPECT_EQ(0, consumer_.number_of_errors_);
362 } 338 }
363 339
364 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { 340 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
365 // We have a valid refresh token; the first request is successful. 341 // We have a valid refresh token; the first request is successful.
366 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 342 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
343 account_id_, "refreshToken");
367 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 344 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
368 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); 345 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
369 base::RunLoop().RunUntilIdle(); 346 base::RunLoop().RunUntilIdle();
370 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 347 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
371 ASSERT_TRUE(fetcher); 348 ASSERT_TRUE(fetcher);
372 fetcher->set_response_code(net::HTTP_OK); 349 fetcher->set_response_code(net::HTTP_OK);
373 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 350 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
374 fetcher->delegate()->OnURLFetchComplete(fetcher); 351 fetcher->delegate()->OnURLFetchComplete(fetcher);
375 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 352 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
376 EXPECT_EQ(0, consumer_.number_of_errors_); 353 EXPECT_EQ(0, consumer_.number_of_errors_);
377 EXPECT_EQ("token", consumer_.last_token_); 354 EXPECT_EQ("token", consumer_.last_token_);
378 355
379 // The refresh token is no longer available; subsequent requests fail. 356 // The refresh token is no longer available; subsequent requests fail.
380 oauth2_service_->set_refresh_token(account_id_, ""); 357 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
358 account_id_, "");
381 request = oauth2_service_->StartRequest(account_id_, 359 request = oauth2_service_->StartRequest(account_id_,
382 OAuth2TokenService::ScopeSet(), &consumer_); 360 OAuth2TokenService::ScopeSet(), &consumer_);
383 base::RunLoop().RunUntilIdle(); 361 base::RunLoop().RunUntilIdle();
384 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 362 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
385 EXPECT_EQ(1, consumer_.number_of_errors_); 363 EXPECT_EQ(1, consumer_.number_of_errors_);
386 } 364 }
387 365
388 TEST_F(OAuth2TokenServiceTest, 366 TEST_F(OAuth2TokenServiceTest,
389 ChangedRefreshTokenDoesNotAffectInFlightRequests) { 367 ChangedRefreshTokenDoesNotAffectInFlightRequests) {
390 oauth2_service_->set_refresh_token(account_id_, "first refreshToken"); 368 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
369 account_id_, "first refreshToken");
391 OAuth2TokenService::ScopeSet scopes; 370 OAuth2TokenService::ScopeSet scopes;
392 scopes.insert("s1"); 371 scopes.insert("s1");
393 scopes.insert("s2"); 372 scopes.insert("s2");
394 OAuth2TokenService::ScopeSet scopes1; 373 OAuth2TokenService::ScopeSet scopes1;
395 scopes.insert("s3"); 374 scopes.insert("s3");
396 scopes.insert("s4"); 375 scopes.insert("s4");
397 376
398 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 377 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
399 account_id_, scopes, &consumer_)); 378 account_id_, scopes, &consumer_));
400 base::RunLoop().RunUntilIdle(); 379 base::RunLoop().RunUntilIdle();
401 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); 380 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
402 ASSERT_TRUE(fetcher1); 381 ASSERT_TRUE(fetcher1);
403 382
404 // Note |request| is still pending when the refresh token changes. 383 // Note |request| is still pending when the refresh token changes.
405 oauth2_service_->set_refresh_token(account_id_, "second refreshToken"); 384 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
385 account_id_, "second refreshToken");
406 386
407 // A 2nd request (using the new refresh token) that occurs and completes 387 // A 2nd request (using the new refresh token) that occurs and completes
408 // while the 1st request is in flight is successful. 388 // while the 1st request is in flight is successful.
409 TestingOAuth2TokenServiceConsumer consumer2; 389 TestingOAuth2TokenServiceConsumer consumer2;
410 scoped_ptr<OAuth2TokenService::Request> request2( 390 scoped_ptr<OAuth2TokenService::Request> request2(
411 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2)); 391 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2));
412 base::RunLoop().RunUntilIdle(); 392 base::RunLoop().RunUntilIdle();
413 393
414 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); 394 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
415 fetcher2->set_response_code(net::HTTP_OK); 395 fetcher2->set_response_code(net::HTTP_OK);
416 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); 396 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
417 fetcher2->delegate()->OnURLFetchComplete(fetcher2); 397 fetcher2->delegate()->OnURLFetchComplete(fetcher2);
418 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); 398 EXPECT_EQ(1, consumer2.number_of_successful_tokens_);
419 EXPECT_EQ(0, consumer2.number_of_errors_); 399 EXPECT_EQ(0, consumer2.number_of_errors_);
420 EXPECT_EQ("second token", consumer2.last_token_); 400 EXPECT_EQ("second token", consumer2.last_token_);
421 401
422 fetcher1->set_response_code(net::HTTP_OK); 402 fetcher1->set_response_code(net::HTTP_OK);
423 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); 403 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600));
424 fetcher1->delegate()->OnURLFetchComplete(fetcher1); 404 fetcher1->delegate()->OnURLFetchComplete(fetcher1);
425 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 405 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
426 EXPECT_EQ(0, consumer_.number_of_errors_); 406 EXPECT_EQ(0, consumer_.number_of_errors_);
427 EXPECT_EQ("first token", consumer_.last_token_); 407 EXPECT_EQ("first token", consumer_.last_token_);
428 } 408 }
429 409
430 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { 410 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
431 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 411 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
412 account_id_, "refreshToken");
432 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 413 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
433 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); 414 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
434 base::RunLoop().RunUntilIdle(); 415 base::RunLoop().RunUntilIdle();
435 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 416 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
436 EXPECT_EQ(0, consumer_.number_of_errors_); 417 EXPECT_EQ(0, consumer_.number_of_errors_);
437 418
438 // The destructor should cancel all in-flight fetchers. 419 // The destructor should cancel all in-flight fetchers.
439 oauth2_service_.reset(NULL); 420 oauth2_service_.reset(NULL);
440 421
441 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 422 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
442 EXPECT_EQ(1, consumer_.number_of_errors_); 423 EXPECT_EQ(1, consumer_.number_of_errors_);
443 } 424 }
444 425
445 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { 426 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
446 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 427 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
428 account_id_, "refreshToken");
447 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), 429 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
448 account_id_); 430 account_id_);
449 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 431 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
450 account_id_, OAuth2TokenService::ScopeSet(), &consumer)); 432 account_id_, OAuth2TokenService::ScopeSet(), &consumer));
451 base::RunLoop().RunUntilIdle(); 433 base::RunLoop().RunUntilIdle();
452 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 434 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
453 EXPECT_EQ(0, consumer.number_of_errors_); 435 EXPECT_EQ(0, consumer.number_of_errors_);
454 436
455 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 437 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
456 ASSERT_TRUE(fetcher); 438 ASSERT_TRUE(fetcher);
457 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 439 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
458 fetcher->SetResponseString(std::string()); 440 fetcher->SetResponseString(std::string());
459 fetcher->delegate()->OnURLFetchComplete(fetcher); 441 fetcher->delegate()->OnURLFetchComplete(fetcher);
460 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 442 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
461 EXPECT_EQ(1, consumer.number_of_errors_); 443 EXPECT_EQ(1, consumer.number_of_errors_);
462 444
463 fetcher = factory_.GetFetcherByID(0); 445 fetcher = factory_.GetFetcherByID(0);
464 ASSERT_TRUE(fetcher); 446 ASSERT_TRUE(fetcher);
465 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 447 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
466 fetcher->SetResponseString(std::string()); 448 fetcher->SetResponseString(std::string());
467 fetcher->delegate()->OnURLFetchComplete(fetcher); 449 fetcher->delegate()->OnURLFetchComplete(fetcher);
468 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 450 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
469 EXPECT_EQ(2, consumer.number_of_errors_); 451 EXPECT_EQ(2, consumer.number_of_errors_);
470 } 452 }
471 453
472 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { 454 TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
473 OAuth2TokenService::ScopeSet scopes; 455 OAuth2TokenService::ScopeSet scopes;
474 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 456 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
457 account_id_, "refreshToken");
475 458
476 // First request. 459 // First request.
477 scoped_ptr<OAuth2TokenService::Request> request( 460 scoped_ptr<OAuth2TokenService::Request> request(
478 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); 461 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
479 base::RunLoop().RunUntilIdle(); 462 base::RunLoop().RunUntilIdle();
480 463
481 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 464 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
482 EXPECT_EQ(0, consumer_.number_of_errors_); 465 EXPECT_EQ(0, consumer_.number_of_errors_);
483 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 466 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
484 ASSERT_TRUE(fetcher); 467 ASSERT_TRUE(fetcher);
485 fetcher->set_response_code(net::HTTP_OK); 468 fetcher->set_response_code(net::HTTP_OK);
486 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 469 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
487 fetcher->delegate()->OnURLFetchComplete(fetcher); 470 fetcher->delegate()->OnURLFetchComplete(fetcher);
488 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 471 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
489 EXPECT_EQ(0, consumer_.number_of_errors_); 472 EXPECT_EQ(0, consumer_.number_of_errors_);
490 EXPECT_EQ("token", consumer_.last_token_); 473 EXPECT_EQ("token", consumer_.last_token_);
491 474
492 // Second request, should return the same token without needing a network 475 // Second request, should return the same token without needing a network
493 // request. 476 // request.
494 scoped_ptr<OAuth2TokenService::Request> request2( 477 scoped_ptr<OAuth2TokenService::Request> request2(
495 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); 478 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
496 base::RunLoop().RunUntilIdle(); 479 base::RunLoop().RunUntilIdle();
497 480
498 // No new network fetcher. 481 // No new network fetcher.
499 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 482 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
500 EXPECT_EQ(0, consumer_.number_of_errors_); 483 EXPECT_EQ(0, consumer_.number_of_errors_);
501 EXPECT_EQ("token", consumer_.last_token_); 484 EXPECT_EQ("token", consumer_.last_token_);
502 485
503 // Invalidating the token should return a new token on the next request. 486 // Invalidating the token should return a new token on the next request.
504 oauth2_service_->InvalidateToken(account_id_, scopes, consumer_.last_token_); 487 oauth2_service_->InvalidateAccessToken(account_id_, scopes,
488 consumer_.last_token_);
505 scoped_ptr<OAuth2TokenService::Request> request3( 489 scoped_ptr<OAuth2TokenService::Request> request3(
506 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); 490 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
507 base::RunLoop().RunUntilIdle(); 491 base::RunLoop().RunUntilIdle();
508 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 492 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
509 EXPECT_EQ(0, consumer_.number_of_errors_); 493 EXPECT_EQ(0, consumer_.number_of_errors_);
510 fetcher = factory_.GetFetcherByID(0); 494 fetcher = factory_.GetFetcherByID(0);
511 ASSERT_TRUE(fetcher); 495 ASSERT_TRUE(fetcher);
512 fetcher->set_response_code(net::HTTP_OK); 496 fetcher->set_response_code(net::HTTP_OK);
513 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 497 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
514 fetcher->delegate()->OnURLFetchComplete(fetcher); 498 fetcher->delegate()->OnURLFetchComplete(fetcher);
515 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 499 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
516 EXPECT_EQ(0, consumer_.number_of_errors_); 500 EXPECT_EQ(0, consumer_.number_of_errors_);
517 EXPECT_EQ("token2", consumer_.last_token_); 501 EXPECT_EQ("token2", consumer_.last_token_);
518 } 502 }
519 503
520 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { 504 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
521 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 505 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
506 account_id_, "refreshToken");
522 scoped_ptr<OAuth2TokenService::Request> request( 507 scoped_ptr<OAuth2TokenService::Request> request(
523 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), 508 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
524 &consumer_)); 509 &consumer_));
525 510
526 oauth2_service_->set_refresh_token("account_id_2", "refreshToken2"); 511 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
512 "account_id_2", "refreshToken2");
527 scoped_ptr<OAuth2TokenService::Request> request2( 513 scoped_ptr<OAuth2TokenService::Request> request2(
528 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), 514 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
529 &consumer_)); 515 &consumer_));
530 516
531 base::RunLoop().RunUntilIdle(); 517 base::RunLoop().RunUntilIdle();
532 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 518 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
533 EXPECT_EQ(0, consumer_.number_of_errors_); 519 EXPECT_EQ(0, consumer_.number_of_errors_);
534 520
535 oauth2_service_->CancelAllRequestsForTest(); 521 oauth2_service_->CancelAllRequestsForTest();
536 522
537 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 523 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
538 EXPECT_EQ(2, consumer_.number_of_errors_); 524 EXPECT_EQ(2, consumer_.number_of_errors_);
539 } 525 }
540 526
541 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) { 527 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) {
542 OAuth2TokenService::ScopeSet scope_set_1; 528 OAuth2TokenService::ScopeSet scope_set_1;
543 scope_set_1.insert("scope1"); 529 scope_set_1.insert("scope1");
544 scope_set_1.insert("scope2"); 530 scope_set_1.insert("scope2");
545 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), 531 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(),
546 scope_set_1.end()); 532 scope_set_1.end());
547 scope_set_2.insert("scope3"); 533 scope_set_2.insert("scope3");
548 534
549 oauth2_service_->set_refresh_token(account_id_, "refreshToken"); 535 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
536 account_id_, "refreshToken");
550 scoped_ptr<OAuth2TokenService::Request> request1( 537 scoped_ptr<OAuth2TokenService::Request> request1(
551 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); 538 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
552 scoped_ptr<OAuth2TokenService::Request> request2( 539 scoped_ptr<OAuth2TokenService::Request> request2(
553 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); 540 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
554 541
555 std::string account_id_2("account_id_2"); 542 std::string account_id_2("account_id_2");
556 oauth2_service_->set_refresh_token(account_id_2, "refreshToken2"); 543 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
544 account_id_2, "refreshToken2");
557 scoped_ptr<OAuth2TokenService::Request> request3( 545 scoped_ptr<OAuth2TokenService::Request> request3(
558 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_)); 546 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_));
559 547
560 base::RunLoop().RunUntilIdle(); 548 base::RunLoop().RunUntilIdle();
561 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 549 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
562 EXPECT_EQ(0, consumer_.number_of_errors_); 550 EXPECT_EQ(0, consumer_.number_of_errors_);
563 551
564 oauth2_service_->CancelRequestsForAccountForTest(account_id_); 552 oauth2_service_->CancelRequestsForAccountForTest(account_id_);
565 553
566 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 554 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
567 EXPECT_EQ(2, consumer_.number_of_errors_); 555 EXPECT_EQ(2, consumer_.number_of_errors_);
568 556
569 oauth2_service_->CancelRequestsForAccountForTest(account_id_2); 557 oauth2_service_->CancelRequestsForAccountForTest(account_id_2);
570 558
571 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 559 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
572 EXPECT_EQ(3, consumer_.number_of_errors_); 560 EXPECT_EQ(3, consumer_.number_of_errors_);
573 } 561 }
574 562
575 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { 563 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
576 std::string client_id_1("client1"); 564 std::string client_id_1("client1");
577 std::string client_secret_1("secret1"); 565 std::string client_secret_1("secret1");
578 std::string client_id_2("client2"); 566 std::string client_id_2("client2");
579 std::string client_secret_2("secret2"); 567 std::string client_secret_2("secret2");
580 std::set<std::string> scope_set; 568 std::set<std::string> scope_set;
581 scope_set.insert("scope1"); 569 scope_set.insert("scope1");
582 scope_set.insert("scope2"); 570 scope_set.insert("scope2");
583 571
584 std::string refresh_token("refreshToken"); 572 std::string refresh_token("refreshToken");
585 oauth2_service_->set_refresh_token(account_id_, refresh_token); 573 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
574 account_id_, refresh_token);
586 575
587 scoped_ptr<OAuth2TokenService::Request> request1( 576 scoped_ptr<OAuth2TokenService::Request> request1(
588 oauth2_service_->StartRequestForClient(account_id_, 577 oauth2_service_->StartRequestForClient(account_id_,
589 client_id_1, 578 client_id_1,
590 client_secret_1, 579 client_secret_1,
591 scope_set, 580 scope_set,
592 &consumer_)); 581 &consumer_));
593 scoped_ptr<OAuth2TokenService::Request> request2( 582 scoped_ptr<OAuth2TokenService::Request> request2(
594 oauth2_service_->StartRequestForClient(account_id_, 583 oauth2_service_->StartRequestForClient(account_id_,
595 client_id_2, 584 client_id_2,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 } else if (i < j) { 630 } else if (i < j) {
642 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j; 631 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j;
643 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; 632 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
644 } else { 633 } else {
645 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j; 634 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j;
646 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; 635 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
647 } 636 }
648 } 637 }
649 } 638 }
650 } 639 }
640
641 TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) {
642 std::string kEmail = "test@gmail.com";
643 std::set<std::string> scope_list;
644 scope_list.insert("scope");
645 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
646 kEmail, "refreshToken");
647 scoped_ptr<OAuth2TokenService::Request> request(
648 oauth2_service_->StartRequest(kEmail, scope_list, &consumer_));
649 base::RunLoop().RunUntilIdle();
650 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
651 ASSERT_TRUE(fetcher);
652 fetcher->set_response_code(net::HTTP_OK);
653 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
654 fetcher->delegate()->OnURLFetchComplete(fetcher);
655 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
656 EXPECT_EQ(0, consumer_.number_of_errors_);
657 EXPECT_EQ("token", consumer_.last_token_);
658 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size());
659
660 // Signs out and signs in
661 oauth2_service_->RevokeAllCredentials();
662
663 EXPECT_EQ(0, (int)oauth2_service_->token_cache_.size());
664 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials(
665 kEmail, "refreshToken");
666 request = oauth2_service_->StartRequest(kEmail, scope_list, &consumer_);
667 base::RunLoop().RunUntilIdle();
668 fetcher = factory_.GetFetcherByID(0);
669 // ASSERT_TRUE(fetcher);
670 fetcher->set_response_code(net::HTTP_OK);
671 fetcher->SetResponseString(GetValidTokenResponse("another token", 3600));
672 fetcher->delegate()->OnURLFetchComplete(fetcher);
673 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
674 EXPECT_EQ(0, consumer_.number_of_errors_);
675 EXPECT_EQ("another token", consumer_.last_token_);
676 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size());
677 }
OLDNEW
« no previous file with comments | « google_apis/gaia/oauth2_token_service_request_unittest.cc ('k') | google_apis/gaia/ubertoken_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698