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

Side by Side Diff: chrome/browser/signin/oauth2_token_service_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698