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

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

Powered by Google App Engine
This is Rietveld 408576698