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

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

Issue 23382008: Making OAuth2TokenService multi-login aware, updating callers, minor fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding the AndroidPO2TS update Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "google_apis/gaia/gaia_constants.h" 9 #include "google_apis/gaia/gaia_constants.h"
10 #include "google_apis/gaia/google_service_auth_error.h" 10 #include "google_apis/gaia/google_service_auth_error.h"
11 #include "google_apis/gaia/oauth2_access_token_consumer.h" 11 #include "google_apis/gaia/oauth2_access_token_consumer.h"
12 #include "google_apis/gaia/oauth2_token_service.h" 12 #include "google_apis/gaia/oauth2_token_service.h"
13 #include "google_apis/gaia/oauth2_token_service_test_util.h" 13 #include "google_apis/gaia/oauth2_token_service_test_util.h"
14 #include "net/http/http_status_code.h" 14 #include "net/http/http_status_code.h"
15 #include "net/url_request/test_url_fetcher_factory.h" 15 #include "net/url_request/test_url_fetcher_factory.h"
16 #include "net/url_request/url_fetcher_delegate.h" 16 #include "net/url_request/url_fetcher_delegate.h"
17 #include "net/url_request/url_request_test_util.h" 17 #include "net/url_request/url_request_test_util.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 19
20 // A testing consumer that retries on error. 20 // A testing consumer that retries on error.
21 class RetryingTestingOAuth2TokenServiceConsumer 21 class RetryingTestingOAuth2TokenServiceConsumer
22 : public TestingOAuth2TokenServiceConsumer { 22 : public TestingOAuth2TokenServiceConsumer {
23 public: 23 public:
24 RetryingTestingOAuth2TokenServiceConsumer( 24 RetryingTestingOAuth2TokenServiceConsumer(
25 OAuth2TokenService* oauth2_service) 25 OAuth2TokenService* oauth2_service,
26 : oauth2_service_(oauth2_service) {} 26 const std::string& account_id)
27 : oauth2_service_(oauth2_service),
28 account_id_(account_id) {}
27 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {} 29 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {}
28 30
29 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, 31 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request,
30 const GoogleServiceAuthError& error) OVERRIDE { 32 const GoogleServiceAuthError& error) OVERRIDE {
31 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); 33 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error);
32 request_.reset(oauth2_service_->StartRequest( 34 request_.reset(oauth2_service_->StartRequest(
33 std::set<std::string>(), this).release()); 35 account_id_, OAuth2TokenService::ScopeSet(), this).release());
34 } 36 }
35 37
36 OAuth2TokenService* oauth2_service_; 38 OAuth2TokenService* oauth2_service_;
39 std::string account_id_;
37 scoped_ptr<OAuth2TokenService::Request> request_; 40 scoped_ptr<OAuth2TokenService::Request> request_;
38 }; 41 };
39 42
40 class TestOAuth2TokenService : public OAuth2TokenService { 43 class TestOAuth2TokenService : public OAuth2TokenService {
41 public: 44 public:
42 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter) 45 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter)
43 : request_context_getter_(getter) { 46 : request_context_getter_(getter) {
44 } 47 }
45 48
46 void CancelAllRequestsForTest() { CancelAllRequests(); } 49 void CancelAllRequestsForTest() { CancelAllRequests(); }
47 50
48 void CancelRequestsForTokenForTest(const std::string& refresh_token) { 51 void CancelRequestsForTokenForTest(const std::string& refresh_token) {
49 CancelRequestsForToken(refresh_token); 52 CancelRequestsForToken(refresh_token);
50 } 53 }
51 54
52 // For testing: set the refresh token to be used. 55 // For testing: set the refresh token to be used.
53 void set_refresh_token(const std::string& refresh_token) { 56 void set_refresh_token(const std::string& refresh_token) {
54 refresh_token_ = refresh_token; 57 refresh_token_ = refresh_token;
55 } 58 }
56 59
57 protected: 60 protected:
58 virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; } 61 virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE {
62 // account_id explicitly ignored.
63 return refresh_token_;
64 }
59 65
60 private: 66 private:
61 // OAuth2TokenService implementation. 67 // OAuth2TokenService implementation.
62 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { 68 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE {
63 return request_context_getter_.get(); 69 return request_context_getter_.get();
64 } 70 }
65 71
66 std::string refresh_token_; 72 std::string refresh_token_;
67 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 73 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
68 }; 74 };
69 75
70 class OAuth2TokenServiceTest : public testing::Test { 76 class OAuth2TokenServiceTest : public testing::Test {
71 public: 77 public:
72 virtual void SetUp() OVERRIDE { 78 virtual void SetUp() OVERRIDE {
73 oauth2_service_.reset( 79 oauth2_service_.reset(
74 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( 80 new TestOAuth2TokenService(new net::TestURLRequestContextGetter(
75 message_loop_.message_loop_proxy()))); 81 message_loop_.message_loop_proxy())));
76 } 82 }
77 83
78 virtual void TearDown() OVERRIDE { 84 virtual void TearDown() OVERRIDE {
79 // Makes sure that all the clean up tasks are run. 85 // Makes sure that all the clean up tasks are run.
80 base::RunLoop().RunUntilIdle(); 86 base::RunLoop().RunUntilIdle();
81 } 87 }
82 88
83 protected: 89 protected:
84 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. 90 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop.
85 net::TestURLFetcherFactory factory_; 91 net::TestURLFetcherFactory factory_;
86 scoped_ptr<TestOAuth2TokenService> oauth2_service_; 92 scoped_ptr<TestOAuth2TokenService> oauth2_service_;
93 std::string account_id_;
Roger Tawa OOO till Jul 10th 2013/08/29 15:41:40 This member is not initialized anywhere. Maybe se
fgorski 2013/08/29 23:04:14 Done.
87 TestingOAuth2TokenServiceConsumer consumer_; 94 TestingOAuth2TokenServiceConsumer consumer_;
88 }; 95 };
89 96
90 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { 97 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
91 scoped_ptr<OAuth2TokenService::Request> request( 98 scoped_ptr<OAuth2TokenService::Request> request(
92 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 99 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
100 &consumer_));
93 base::RunLoop().RunUntilIdle(); 101 base::RunLoop().RunUntilIdle();
94 102
95 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 103 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
96 EXPECT_EQ(1, consumer_.number_of_errors_); 104 EXPECT_EQ(1, consumer_.number_of_errors_);
97 } 105 }
98 106
99 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { 107 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
100 oauth2_service_->set_refresh_token("refreshToken"); 108 oauth2_service_->set_refresh_token("refreshToken");
101 scoped_ptr<OAuth2TokenService::Request> request( 109 scoped_ptr<OAuth2TokenService::Request> request(
102 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 110 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
111 &consumer_));
103 base::RunLoop().RunUntilIdle(); 112 base::RunLoop().RunUntilIdle();
104 113
105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 114 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
106 EXPECT_EQ(0, consumer_.number_of_errors_); 115 EXPECT_EQ(0, consumer_.number_of_errors_);
107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 116 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
108 EXPECT_TRUE(fetcher); 117 EXPECT_TRUE(fetcher);
109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 118 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
110 fetcher->SetResponseString(std::string()); 119 fetcher->SetResponseString(std::string());
111 fetcher->delegate()->OnURLFetchComplete(fetcher); 120 fetcher->delegate()->OnURLFetchComplete(fetcher);
112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 121 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
113 EXPECT_EQ(1, consumer_.number_of_errors_); 122 EXPECT_EQ(1, consumer_.number_of_errors_);
114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 123 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
115 } 124 }
116 125
117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { 126 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
118 oauth2_service_->set_refresh_token("refreshToken"); 127 oauth2_service_->set_refresh_token("refreshToken");
119 scoped_ptr<OAuth2TokenService::Request> request( 128 scoped_ptr<OAuth2TokenService::Request> request(
120 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 129 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
130 &consumer_));
121 base::RunLoop().RunUntilIdle(); 131 base::RunLoop().RunUntilIdle();
122 132
123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 133 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
124 EXPECT_EQ(0, consumer_.number_of_errors_); 134 EXPECT_EQ(0, consumer_.number_of_errors_);
125 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 135 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
126 EXPECT_TRUE(fetcher); 136 EXPECT_TRUE(fetcher);
127 fetcher->set_response_code(net::HTTP_OK); 137 fetcher->set_response_code(net::HTTP_OK);
128 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 138 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
129 fetcher->delegate()->OnURLFetchComplete(fetcher); 139 fetcher->delegate()->OnURLFetchComplete(fetcher);
130 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 140 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
131 EXPECT_EQ(0, consumer_.number_of_errors_); 141 EXPECT_EQ(0, consumer_.number_of_errors_);
132 EXPECT_EQ("token", consumer_.last_token_); 142 EXPECT_EQ("token", consumer_.last_token_);
133 } 143 }
134 144
135 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { 145 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
136 std::set<std::string> scopes1; 146 OAuth2TokenService::ScopeSet scopes1;
137 scopes1.insert("s1"); 147 scopes1.insert("s1");
138 scopes1.insert("s2"); 148 scopes1.insert("s2");
139 std::set<std::string> scopes1_same; 149 OAuth2TokenService::ScopeSet scopes1_same;
140 scopes1_same.insert("s2"); 150 scopes1_same.insert("s2");
141 scopes1_same.insert("s1"); 151 scopes1_same.insert("s1");
142 std::set<std::string> scopes2; 152 OAuth2TokenService::ScopeSet scopes2;
143 scopes2.insert("s3"); 153 scopes2.insert("s3");
144 154
145 oauth2_service_->set_refresh_token("refreshToken"); 155 oauth2_service_->set_refresh_token("refreshToken");
146 156
147 // First request. 157 // First request.
148 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 158 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
149 scopes1, &consumer_)); 159 account_id_, scopes1, &consumer_));
150 base::RunLoop().RunUntilIdle(); 160 base::RunLoop().RunUntilIdle();
151 161
152 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 162 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
153 EXPECT_EQ(0, consumer_.number_of_errors_); 163 EXPECT_EQ(0, consumer_.number_of_errors_);
154 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 164 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
155 EXPECT_TRUE(fetcher); 165 EXPECT_TRUE(fetcher);
156 fetcher->set_response_code(net::HTTP_OK); 166 fetcher->set_response_code(net::HTTP_OK);
157 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 167 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
158 fetcher->delegate()->OnURLFetchComplete(fetcher); 168 fetcher->delegate()->OnURLFetchComplete(fetcher);
159 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 169 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
160 EXPECT_EQ(0, consumer_.number_of_errors_); 170 EXPECT_EQ(0, consumer_.number_of_errors_);
161 EXPECT_EQ("token", consumer_.last_token_); 171 EXPECT_EQ("token", consumer_.last_token_);
162 172
163 // Second request to the same set of scopes, should return the same token 173 // Second request to the same set of scopes, should return the same token
164 // without needing a network request. 174 // without needing a network request.
165 scoped_ptr<OAuth2TokenService::Request> request2( 175 scoped_ptr<OAuth2TokenService::Request> request2(
166 oauth2_service_->StartRequest(scopes1_same, &consumer_)); 176 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_));
167 base::RunLoop().RunUntilIdle(); 177 base::RunLoop().RunUntilIdle();
168 178
169 // No new network fetcher. 179 // No new network fetcher.
170 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 180 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
171 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 181 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
172 EXPECT_EQ(0, consumer_.number_of_errors_); 182 EXPECT_EQ(0, consumer_.number_of_errors_);
173 EXPECT_EQ("token", consumer_.last_token_); 183 EXPECT_EQ("token", consumer_.last_token_);
174 184
175 // Third request to a new set of scopes, should return another token. 185 // Third request to a new set of scopes, should return another token.
176 scoped_ptr<OAuth2TokenService::Request> request3( 186 scoped_ptr<OAuth2TokenService::Request> request3(
177 oauth2_service_->StartRequest(scopes2, &consumer_)); 187 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_));
178 base::RunLoop().RunUntilIdle(); 188 base::RunLoop().RunUntilIdle();
179 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 189 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
180 EXPECT_EQ(0, consumer_.number_of_errors_); 190 EXPECT_EQ(0, consumer_.number_of_errors_);
181 fetcher = factory_.GetFetcherByID(0); 191 fetcher = factory_.GetFetcherByID(0);
182 EXPECT_TRUE(fetcher); 192 EXPECT_TRUE(fetcher);
183 fetcher->set_response_code(net::HTTP_OK); 193 fetcher->set_response_code(net::HTTP_OK);
184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 194 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
185 fetcher->delegate()->OnURLFetchComplete(fetcher); 195 fetcher->delegate()->OnURLFetchComplete(fetcher);
186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 196 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
187 EXPECT_EQ(0, consumer_.number_of_errors_); 197 EXPECT_EQ(0, consumer_.number_of_errors_);
188 EXPECT_EQ("token2", consumer_.last_token_); 198 EXPECT_EQ("token2", consumer_.last_token_);
189 } 199 }
190 200
191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { 201 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
192 oauth2_service_->set_refresh_token("refreshToken"); 202 oauth2_service_->set_refresh_token("refreshToken");
193 203
194 // First request. 204 // First request.
195 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 205 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
196 std::set<std::string>(), &consumer_)); 206 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
197 base::RunLoop().RunUntilIdle(); 207 base::RunLoop().RunUntilIdle();
198 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 208 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
199 EXPECT_EQ(0, consumer_.number_of_errors_); 209 EXPECT_EQ(0, consumer_.number_of_errors_);
200 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 210 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
201 EXPECT_TRUE(fetcher); 211 EXPECT_TRUE(fetcher);
202 fetcher->set_response_code(net::HTTP_OK); 212 fetcher->set_response_code(net::HTTP_OK);
203 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 213 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
204 fetcher->delegate()->OnURLFetchComplete(fetcher); 214 fetcher->delegate()->OnURLFetchComplete(fetcher);
205 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 215 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
206 EXPECT_EQ(0, consumer_.number_of_errors_); 216 EXPECT_EQ(0, consumer_.number_of_errors_);
207 EXPECT_EQ("token", consumer_.last_token_); 217 EXPECT_EQ("token", consumer_.last_token_);
208 218
209 // Second request must try to access the network as the token has expired. 219 // Second request must try to access the network as the token has expired.
210 scoped_ptr<OAuth2TokenService::Request> request2( 220 scoped_ptr<OAuth2TokenService::Request> request2(
211 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 221 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
222 &consumer_));
212 base::RunLoop().RunUntilIdle(); 223 base::RunLoop().RunUntilIdle();
213 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 224 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
214 EXPECT_EQ(0, consumer_.number_of_errors_); 225 EXPECT_EQ(0, consumer_.number_of_errors_);
215 226
216 // Network failure. 227 // Network failure.
217 fetcher = factory_.GetFetcherByID(0); 228 fetcher = factory_.GetFetcherByID(0);
218 EXPECT_TRUE(fetcher); 229 EXPECT_TRUE(fetcher);
219 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 230 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
220 fetcher->SetResponseString(std::string()); 231 fetcher->SetResponseString(std::string());
221 fetcher->delegate()->OnURLFetchComplete(fetcher); 232 fetcher->delegate()->OnURLFetchComplete(fetcher);
222 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 233 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
223 EXPECT_EQ(1, consumer_.number_of_errors_); 234 EXPECT_EQ(1, consumer_.number_of_errors_);
224 } 235 }
225 236
226 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { 237 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
227 oauth2_service_->set_refresh_token("refreshToken"); 238 oauth2_service_->set_refresh_token("refreshToken");
228 239
229 // First request. 240 // First request.
230 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 241 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
231 std::set<std::string>(), &consumer_)); 242 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
232 base::RunLoop().RunUntilIdle(); 243 base::RunLoop().RunUntilIdle();
233 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 244 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
234 EXPECT_EQ(0, consumer_.number_of_errors_); 245 EXPECT_EQ(0, consumer_.number_of_errors_);
235 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 246 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
236 EXPECT_TRUE(fetcher); 247 EXPECT_TRUE(fetcher);
237 fetcher->set_response_code(net::HTTP_OK); 248 fetcher->set_response_code(net::HTTP_OK);
238 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 249 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
239 fetcher->delegate()->OnURLFetchComplete(fetcher); 250 fetcher->delegate()->OnURLFetchComplete(fetcher);
240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 251 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
241 EXPECT_EQ(0, consumer_.number_of_errors_); 252 EXPECT_EQ(0, consumer_.number_of_errors_);
242 EXPECT_EQ("token", consumer_.last_token_); 253 EXPECT_EQ("token", consumer_.last_token_);
243 254
244 // Second request must try to access the network as the token has expired. 255 // Second request must try to access the network as the token has expired.
245 scoped_ptr<OAuth2TokenService::Request> request2( 256 scoped_ptr<OAuth2TokenService::Request> request2(
246 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 257 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
258 &consumer_));
247 base::RunLoop().RunUntilIdle(); 259 base::RunLoop().RunUntilIdle();
248 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 260 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
249 EXPECT_EQ(0, consumer_.number_of_errors_); 261 EXPECT_EQ(0, consumer_.number_of_errors_);
250 262
251 fetcher = factory_.GetFetcherByID(0); 263 fetcher = factory_.GetFetcherByID(0);
252 EXPECT_TRUE(fetcher); 264 EXPECT_TRUE(fetcher);
253 fetcher->set_response_code(net::HTTP_OK); 265 fetcher->set_response_code(net::HTTP_OK);
254 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); 266 fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
255 fetcher->delegate()->OnURLFetchComplete(fetcher); 267 fetcher->delegate()->OnURLFetchComplete(fetcher);
256 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 268 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
257 EXPECT_EQ(0, consumer_.number_of_errors_); 269 EXPECT_EQ(0, consumer_.number_of_errors_);
258 EXPECT_EQ("another token", consumer_.last_token_); 270 EXPECT_EQ("another token", consumer_.last_token_);
259 } 271 }
260 272
261 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { 273 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
262 oauth2_service_->set_refresh_token("refreshToken"); 274 oauth2_service_->set_refresh_token("refreshToken");
263 275
264 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 276 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
265 std::set<std::string>(), &consumer_)); 277 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
266 base::RunLoop().RunUntilIdle(); 278 base::RunLoop().RunUntilIdle();
267 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 279 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
268 EXPECT_EQ(0, consumer_.number_of_errors_); 280 EXPECT_EQ(0, consumer_.number_of_errors_);
269 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 281 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
270 EXPECT_TRUE(fetcher); 282 EXPECT_TRUE(fetcher);
271 283
272 request.reset(); 284 request.reset();
273 285
274 fetcher->set_response_code(net::HTTP_OK); 286 fetcher->set_response_code(net::HTTP_OK);
275 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 287 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
276 fetcher->delegate()->OnURLFetchComplete(fetcher); 288 fetcher->delegate()->OnURLFetchComplete(fetcher);
277 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 289 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
278 EXPECT_EQ(0, consumer_.number_of_errors_); 290 EXPECT_EQ(0, consumer_.number_of_errors_);
279 } 291 }
280 292
281 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { 293 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
282 oauth2_service_->set_refresh_token("refreshToken"); 294 oauth2_service_->set_refresh_token("refreshToken");
283 295
284 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 296 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
285 std::set<std::string>(), &consumer_)); 297 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
286 base::RunLoop().RunUntilIdle(); 298 base::RunLoop().RunUntilIdle();
287 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 299 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
288 fetcher->set_response_code(net::HTTP_OK); 300 fetcher->set_response_code(net::HTTP_OK);
289 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 301 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
290 fetcher->delegate()->OnURLFetchComplete(fetcher); 302 fetcher->delegate()->OnURLFetchComplete(fetcher);
291 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 303 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
292 EXPECT_EQ(0, consumer_.number_of_errors_); 304 EXPECT_EQ(0, consumer_.number_of_errors_);
293 EXPECT_EQ("token", consumer_.last_token_); 305 EXPECT_EQ("token", consumer_.last_token_);
294 306
295 request.reset(); 307 request.reset();
296 308
297 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
298 EXPECT_EQ(0, consumer_.number_of_errors_); 310 EXPECT_EQ(0, consumer_.number_of_errors_);
299 EXPECT_EQ("token", consumer_.last_token_); 311 EXPECT_EQ("token", consumer_.last_token_);
300 } 312 }
301 313
302 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { 314 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
303 oauth2_service_->set_refresh_token("refreshToken"); 315 oauth2_service_->set_refresh_token("refreshToken");
304 316
305 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 317 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
306 std::set<std::string>(), &consumer_)); 318 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
307 base::RunLoop().RunUntilIdle(); 319 base::RunLoop().RunUntilIdle();
308 scoped_ptr<OAuth2TokenService::Request> request2( 320 scoped_ptr<OAuth2TokenService::Request> request2(
309 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 321 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
322 &consumer_));
310 base::RunLoop().RunUntilIdle(); 323 base::RunLoop().RunUntilIdle();
311 324
312 request.reset(); 325 request.reset();
313 326
314 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 327 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
315 fetcher->set_response_code(net::HTTP_OK); 328 fetcher->set_response_code(net::HTTP_OK);
316 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 329 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
317 fetcher->delegate()->OnURLFetchComplete(fetcher); 330 fetcher->delegate()->OnURLFetchComplete(fetcher);
318 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 331 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
319 EXPECT_EQ(0, consumer_.number_of_errors_); 332 EXPECT_EQ(0, consumer_.number_of_errors_);
320 } 333 }
321 334
322 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { 335 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
323 // We have a valid refresh token; the first request is successful. 336 // We have a valid refresh token; the first request is successful.
324 oauth2_service_->set_refresh_token("refreshToken"); 337 oauth2_service_->set_refresh_token("refreshToken");
325 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 338 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
326 std::set<std::string>(), &consumer_)); 339 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
327 base::RunLoop().RunUntilIdle(); 340 base::RunLoop().RunUntilIdle();
328 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 341 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
329 fetcher->set_response_code(net::HTTP_OK); 342 fetcher->set_response_code(net::HTTP_OK);
330 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 343 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
331 fetcher->delegate()->OnURLFetchComplete(fetcher); 344 fetcher->delegate()->OnURLFetchComplete(fetcher);
332 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 345 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
333 EXPECT_EQ(0, consumer_.number_of_errors_); 346 EXPECT_EQ(0, consumer_.number_of_errors_);
334 EXPECT_EQ("token", consumer_.last_token_); 347 EXPECT_EQ("token", consumer_.last_token_);
335 348
336 // The refresh token is no longer available; subsequent requests fail. 349 // The refresh token is no longer available; subsequent requests fail.
337 oauth2_service_->set_refresh_token(""); 350 oauth2_service_->set_refresh_token("");
338 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); 351 request = oauth2_service_->StartRequest(account_id_,
352 OAuth2TokenService::ScopeSet(), &consumer_);
339 base::RunLoop().RunUntilIdle(); 353 base::RunLoop().RunUntilIdle();
340 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 354 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
341 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 355 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
342 EXPECT_EQ(1, consumer_.number_of_errors_); 356 EXPECT_EQ(1, consumer_.number_of_errors_);
343 } 357 }
344 358
345 TEST_F(OAuth2TokenServiceTest, 359 TEST_F(OAuth2TokenServiceTest,
346 ChangedRefreshTokenDoesNotAffectInFlightRequests) { 360 ChangedRefreshTokenDoesNotAffectInFlightRequests) {
347 oauth2_service_->set_refresh_token("first refreshToken"); 361 oauth2_service_->set_refresh_token("first refreshToken");
348 std::set<std::string> scopes; 362 OAuth2TokenService::ScopeSet scopes;
349 scopes.insert("s1"); 363 scopes.insert("s1");
350 scopes.insert("s2"); 364 scopes.insert("s2");
351 365
352 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 366 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
353 scopes, &consumer_)); 367 account_id_, scopes, &consumer_));
354 base::RunLoop().RunUntilIdle(); 368 base::RunLoop().RunUntilIdle();
355 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); 369 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
356 370
357 // Note |request| is still pending when the refresh token changes. 371 // Note |request| is still pending when the refresh token changes.
358 oauth2_service_->set_refresh_token("second refreshToken"); 372 oauth2_service_->set_refresh_token("second refreshToken");
359 373
360 // A 2nd request (using the new refresh token) that occurs and completes 374 // A 2nd request (using the new refresh token) that occurs and completes
361 // while the 1st request is in flight is successful. 375 // while the 1st request is in flight is successful.
362 TestingOAuth2TokenServiceConsumer consumer2; 376 TestingOAuth2TokenServiceConsumer consumer2;
363 scoped_ptr<OAuth2TokenService::Request> request2( 377 scoped_ptr<OAuth2TokenService::Request> request2(
364 oauth2_service_->StartRequest(scopes, &consumer2)); 378 oauth2_service_->StartRequest(account_id_, scopes, &consumer2));
365 base::RunLoop().RunUntilIdle(); 379 base::RunLoop().RunUntilIdle();
366 380
367 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); 381 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
368 fetcher2->set_response_code(net::HTTP_OK); 382 fetcher2->set_response_code(net::HTTP_OK);
369 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); 383 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
370 fetcher2->delegate()->OnURLFetchComplete(fetcher2); 384 fetcher2->delegate()->OnURLFetchComplete(fetcher2);
371 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); 385 EXPECT_EQ(1, consumer2.number_of_successful_tokens_);
372 EXPECT_EQ(0, consumer2.number_of_errors_); 386 EXPECT_EQ(0, consumer2.number_of_errors_);
373 EXPECT_EQ("second token", consumer2.last_token_); 387 EXPECT_EQ("second token", consumer2.last_token_);
374 388
375 fetcher1->set_response_code(net::HTTP_OK); 389 fetcher1->set_response_code(net::HTTP_OK);
376 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); 390 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600));
377 fetcher1->delegate()->OnURLFetchComplete(fetcher1); 391 fetcher1->delegate()->OnURLFetchComplete(fetcher1);
378 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 392 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
379 EXPECT_EQ(0, consumer_.number_of_errors_); 393 EXPECT_EQ(0, consumer_.number_of_errors_);
380 EXPECT_EQ("first token", consumer_.last_token_); 394 EXPECT_EQ("first token", consumer_.last_token_);
381 } 395 }
382 396
383 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { 397 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
384 oauth2_service_->set_refresh_token("refreshToken"); 398 oauth2_service_->set_refresh_token("refreshToken");
385 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 399 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
386 std::set<std::string>(), &consumer_)); 400 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
387 base::RunLoop().RunUntilIdle(); 401 base::RunLoop().RunUntilIdle();
388 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 402 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
389 EXPECT_EQ(0, consumer_.number_of_errors_); 403 EXPECT_EQ(0, consumer_.number_of_errors_);
390 404
391 // The destructor should cancel all in-flight fetchers. 405 // The destructor should cancel all in-flight fetchers.
392 oauth2_service_.reset(NULL); 406 oauth2_service_.reset(NULL);
393 407
394 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 408 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
395 EXPECT_EQ(1, consumer_.number_of_errors_); 409 EXPECT_EQ(1, consumer_.number_of_errors_);
396 } 410 }
397 411
398 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { 412 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
399 oauth2_service_->set_refresh_token("refreshToken"); 413 oauth2_service_->set_refresh_token("refreshToken");
400 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); 414 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
415 account_id_);
401 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 416 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
402 std::set<std::string>(), &consumer)); 417 account_id_, OAuth2TokenService::ScopeSet(), &consumer));
403 base::RunLoop().RunUntilIdle(); 418 base::RunLoop().RunUntilIdle();
404 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 419 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
405 EXPECT_EQ(0, consumer.number_of_errors_); 420 EXPECT_EQ(0, consumer.number_of_errors_);
406 421
407 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 422 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
408 ASSERT_TRUE(fetcher); 423 ASSERT_TRUE(fetcher);
409 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 424 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
410 fetcher->SetResponseString(std::string()); 425 fetcher->SetResponseString(std::string());
411 fetcher->delegate()->OnURLFetchComplete(fetcher); 426 fetcher->delegate()->OnURLFetchComplete(fetcher);
412 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 427 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
413 EXPECT_EQ(1, consumer.number_of_errors_); 428 EXPECT_EQ(1, consumer.number_of_errors_);
414 429
415 fetcher = factory_.GetFetcherByID(0); 430 fetcher = factory_.GetFetcherByID(0);
416 ASSERT_TRUE(fetcher); 431 ASSERT_TRUE(fetcher);
417 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 432 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
418 fetcher->SetResponseString(std::string()); 433 fetcher->SetResponseString(std::string());
419 fetcher->delegate()->OnURLFetchComplete(fetcher); 434 fetcher->delegate()->OnURLFetchComplete(fetcher);
420 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 435 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
421 EXPECT_EQ(2, consumer.number_of_errors_); 436 EXPECT_EQ(2, consumer.number_of_errors_);
422 } 437 }
423 438
424 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { 439 TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
425 std::set<std::string> scopes; 440 OAuth2TokenService::ScopeSet scopes;
426 oauth2_service_->set_refresh_token("refreshToken"); 441 oauth2_service_->set_refresh_token("refreshToken");
427 442
428 // First request. 443 // First request.
429 scoped_ptr<OAuth2TokenService::Request> request( 444 scoped_ptr<OAuth2TokenService::Request> request(
430 oauth2_service_->StartRequest(scopes, &consumer_)); 445 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
431 base::RunLoop().RunUntilIdle(); 446 base::RunLoop().RunUntilIdle();
432 447
433 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 448 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
434 EXPECT_EQ(0, consumer_.number_of_errors_); 449 EXPECT_EQ(0, consumer_.number_of_errors_);
435 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 450 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
436 EXPECT_TRUE(fetcher); 451 EXPECT_TRUE(fetcher);
437 fetcher->set_response_code(net::HTTP_OK); 452 fetcher->set_response_code(net::HTTP_OK);
438 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 453 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
439 fetcher->delegate()->OnURLFetchComplete(fetcher); 454 fetcher->delegate()->OnURLFetchComplete(fetcher);
440 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 455 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
441 EXPECT_EQ(0, consumer_.number_of_errors_); 456 EXPECT_EQ(0, consumer_.number_of_errors_);
442 EXPECT_EQ("token", consumer_.last_token_); 457 EXPECT_EQ("token", consumer_.last_token_);
443 458
444 // Second request, should return the same token without needing a network 459 // Second request, should return the same token without needing a network
445 // request. 460 // request.
446 scoped_ptr<OAuth2TokenService::Request> request2( 461 scoped_ptr<OAuth2TokenService::Request> request2(
447 oauth2_service_->StartRequest(scopes, &consumer_)); 462 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
448 base::RunLoop().RunUntilIdle(); 463 base::RunLoop().RunUntilIdle();
449 464
450 // No new network fetcher. 465 // No new network fetcher.
451 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 466 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
452 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 467 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
453 EXPECT_EQ(0, consumer_.number_of_errors_); 468 EXPECT_EQ(0, consumer_.number_of_errors_);
454 EXPECT_EQ("token", consumer_.last_token_); 469 EXPECT_EQ("token", consumer_.last_token_);
455 470
456 // Invalidating the token should return a new token on the next request. 471 // Invalidating the token should return a new token on the next request.
457 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); 472 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_);
458 scoped_ptr<OAuth2TokenService::Request> request3( 473 scoped_ptr<OAuth2TokenService::Request> request3(
459 oauth2_service_->StartRequest(scopes, &consumer_)); 474 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
460 base::RunLoop().RunUntilIdle(); 475 base::RunLoop().RunUntilIdle();
461 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 476 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
462 EXPECT_EQ(0, consumer_.number_of_errors_); 477 EXPECT_EQ(0, consumer_.number_of_errors_);
463 fetcher = factory_.GetFetcherByID(0); 478 fetcher = factory_.GetFetcherByID(0);
464 EXPECT_TRUE(fetcher); 479 EXPECT_TRUE(fetcher);
465 fetcher->set_response_code(net::HTTP_OK); 480 fetcher->set_response_code(net::HTTP_OK);
466 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 481 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
467 fetcher->delegate()->OnURLFetchComplete(fetcher); 482 fetcher->delegate()->OnURLFetchComplete(fetcher);
468 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 483 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
469 EXPECT_EQ(0, consumer_.number_of_errors_); 484 EXPECT_EQ(0, consumer_.number_of_errors_);
470 EXPECT_EQ("token2", consumer_.last_token_); 485 EXPECT_EQ("token2", consumer_.last_token_);
471 } 486 }
472 487
473 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { 488 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
474 oauth2_service_->set_refresh_token("refreshToken"); 489 oauth2_service_->set_refresh_token("refreshToken");
475 scoped_ptr<OAuth2TokenService::Request> request( 490 scoped_ptr<OAuth2TokenService::Request> request(
476 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 491 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
492 &consumer_));
477 493
478 oauth2_service_->set_refresh_token("refreshToken2"); 494 oauth2_service_->set_refresh_token("refreshToken2");
479 scoped_ptr<OAuth2TokenService::Request> request2( 495 scoped_ptr<OAuth2TokenService::Request> request2(
480 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 496 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
497 &consumer_));
481 498
482 base::RunLoop().RunUntilIdle(); 499 base::RunLoop().RunUntilIdle();
483 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 500 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
484 EXPECT_EQ(0, consumer_.number_of_errors_); 501 EXPECT_EQ(0, consumer_.number_of_errors_);
485 502
486 oauth2_service_->CancelAllRequestsForTest(); 503 oauth2_service_->CancelAllRequestsForTest();
487 504
488 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 505 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
489 EXPECT_EQ(2, consumer_.number_of_errors_); 506 EXPECT_EQ(2, consumer_.number_of_errors_);
490 } 507 }
491 508
492 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { 509 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
493 std::set<std::string> scope_set_1; 510 OAuth2TokenService::ScopeSet scope_set_1;
494 scope_set_1.insert("scope1"); 511 scope_set_1.insert("scope1");
495 scope_set_1.insert("scope2"); 512 scope_set_1.insert("scope2");
496 std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); 513 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(),
514 scope_set_1.end());
497 scope_set_2.insert("scope3"); 515 scope_set_2.insert("scope3");
498 516
499 oauth2_service_->set_refresh_token("refreshToken"); 517 oauth2_service_->set_refresh_token("refreshToken");
500 scoped_ptr<OAuth2TokenService::Request> request1( 518 scoped_ptr<OAuth2TokenService::Request> request1(
501 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 519 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
502 scoped_ptr<OAuth2TokenService::Request> request2( 520 scoped_ptr<OAuth2TokenService::Request> request2(
503 oauth2_service_->StartRequest(scope_set_2, &consumer_)); 521 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
504 522
505 oauth2_service_->set_refresh_token("refreshToken2"); 523 oauth2_service_->set_refresh_token("refreshToken2");
506 scoped_ptr<OAuth2TokenService::Request> request3( 524 scoped_ptr<OAuth2TokenService::Request> request3(
507 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 525 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
508 526
509 base::RunLoop().RunUntilIdle(); 527 base::RunLoop().RunUntilIdle();
510 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 528 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
511 EXPECT_EQ(0, consumer_.number_of_errors_); 529 EXPECT_EQ(0, consumer_.number_of_errors_);
512 530
513 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); 531 oauth2_service_->CancelRequestsForTokenForTest("refreshToken");
514 532
515 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 533 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
516 EXPECT_EQ(2, consumer_.number_of_errors_); 534 EXPECT_EQ(2, consumer_.number_of_errors_);
517 535
518 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); 536 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2");
519 537
520 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 538 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
521 EXPECT_EQ(3, consumer_.number_of_errors_); 539 EXPECT_EQ(3, consumer_.number_of_errors_);
522 } 540 }
OLDNEW
« google_apis/gaia/oauth2_token_service.cc ('K') | « google_apis/gaia/oauth2_token_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698