OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "google_apis/gaia/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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |