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

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: Fixing a unit test, addressing comments from courage@ 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())));
82 account_id_ = "test_user@gmail.com";
76 } 83 }
77 84
78 virtual void TearDown() OVERRIDE { 85 virtual void TearDown() OVERRIDE {
79 // Makes sure that all the clean up tasks are run. 86 // Makes sure that all the clean up tasks are run.
80 base::RunLoop().RunUntilIdle(); 87 base::RunLoop().RunUntilIdle();
81 } 88 }
82 89
83 protected: 90 protected:
84 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. 91 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop.
85 net::TestURLFetcherFactory factory_; 92 net::TestURLFetcherFactory factory_;
86 scoped_ptr<TestOAuth2TokenService> oauth2_service_; 93 scoped_ptr<TestOAuth2TokenService> oauth2_service_;
94 std::string account_id_;
87 TestingOAuth2TokenServiceConsumer consumer_; 95 TestingOAuth2TokenServiceConsumer consumer_;
88 }; 96 };
89 97
90 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { 98 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
91 scoped_ptr<OAuth2TokenService::Request> request( 99 scoped_ptr<OAuth2TokenService::Request> request(
92 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 100 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
101 &consumer_));
93 base::RunLoop().RunUntilIdle(); 102 base::RunLoop().RunUntilIdle();
94 103
95 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 104 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
96 EXPECT_EQ(1, consumer_.number_of_errors_); 105 EXPECT_EQ(1, consumer_.number_of_errors_);
97 } 106 }
98 107
99 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { 108 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
100 oauth2_service_->set_refresh_token("refreshToken"); 109 oauth2_service_->set_refresh_token("refreshToken");
101 scoped_ptr<OAuth2TokenService::Request> request( 110 scoped_ptr<OAuth2TokenService::Request> request(
102 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 111 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
112 &consumer_));
103 base::RunLoop().RunUntilIdle(); 113 base::RunLoop().RunUntilIdle();
104 114
105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 115 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
106 EXPECT_EQ(0, consumer_.number_of_errors_); 116 EXPECT_EQ(0, consumer_.number_of_errors_);
107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 117 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
108 EXPECT_TRUE(fetcher); 118 EXPECT_TRUE(fetcher);
109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 119 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
110 fetcher->SetResponseString(std::string()); 120 fetcher->SetResponseString(std::string());
111 fetcher->delegate()->OnURLFetchComplete(fetcher); 121 fetcher->delegate()->OnURLFetchComplete(fetcher);
112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 122 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
113 EXPECT_EQ(1, consumer_.number_of_errors_); 123 EXPECT_EQ(1, consumer_.number_of_errors_);
114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 124 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
115 } 125 }
116 126
117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { 127 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
118 oauth2_service_->set_refresh_token("refreshToken"); 128 oauth2_service_->set_refresh_token("refreshToken");
119 scoped_ptr<OAuth2TokenService::Request> request( 129 scoped_ptr<OAuth2TokenService::Request> request(
120 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 130 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
131 &consumer_));
121 base::RunLoop().RunUntilIdle(); 132 base::RunLoop().RunUntilIdle();
122 133
123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 134 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
124 EXPECT_EQ(0, consumer_.number_of_errors_); 135 EXPECT_EQ(0, consumer_.number_of_errors_);
125 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 136 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
126 EXPECT_TRUE(fetcher); 137 EXPECT_TRUE(fetcher);
127 fetcher->set_response_code(net::HTTP_OK); 138 fetcher->set_response_code(net::HTTP_OK);
128 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 139 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
129 fetcher->delegate()->OnURLFetchComplete(fetcher); 140 fetcher->delegate()->OnURLFetchComplete(fetcher);
130 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 141 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
131 EXPECT_EQ(0, consumer_.number_of_errors_); 142 EXPECT_EQ(0, consumer_.number_of_errors_);
132 EXPECT_EQ("token", consumer_.last_token_); 143 EXPECT_EQ("token", consumer_.last_token_);
133 } 144 }
134 145
135 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { 146 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
136 std::set<std::string> scopes1; 147 OAuth2TokenService::ScopeSet scopes1;
137 scopes1.insert("s1"); 148 scopes1.insert("s1");
138 scopes1.insert("s2"); 149 scopes1.insert("s2");
139 std::set<std::string> scopes1_same; 150 OAuth2TokenService::ScopeSet scopes1_same;
140 scopes1_same.insert("s2"); 151 scopes1_same.insert("s2");
141 scopes1_same.insert("s1"); 152 scopes1_same.insert("s1");
142 std::set<std::string> scopes2; 153 OAuth2TokenService::ScopeSet scopes2;
143 scopes2.insert("s3"); 154 scopes2.insert("s3");
144 155
145 oauth2_service_->set_refresh_token("refreshToken"); 156 oauth2_service_->set_refresh_token("refreshToken");
146 157
147 // First request. 158 // First request.
148 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 159 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
149 scopes1, &consumer_)); 160 account_id_, scopes1, &consumer_));
150 base::RunLoop().RunUntilIdle(); 161 base::RunLoop().RunUntilIdle();
151 162
152 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 163 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
153 EXPECT_EQ(0, consumer_.number_of_errors_); 164 EXPECT_EQ(0, consumer_.number_of_errors_);
154 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 165 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
155 EXPECT_TRUE(fetcher); 166 EXPECT_TRUE(fetcher);
156 fetcher->set_response_code(net::HTTP_OK); 167 fetcher->set_response_code(net::HTTP_OK);
157 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 168 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
158 fetcher->delegate()->OnURLFetchComplete(fetcher); 169 fetcher->delegate()->OnURLFetchComplete(fetcher);
159 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 170 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
160 EXPECT_EQ(0, consumer_.number_of_errors_); 171 EXPECT_EQ(0, consumer_.number_of_errors_);
161 EXPECT_EQ("token", consumer_.last_token_); 172 EXPECT_EQ("token", consumer_.last_token_);
162 173
163 // Second request to the same set of scopes, should return the same token 174 // Second request to the same set of scopes, should return the same token
164 // without needing a network request. 175 // without needing a network request.
165 scoped_ptr<OAuth2TokenService::Request> request2( 176 scoped_ptr<OAuth2TokenService::Request> request2(
166 oauth2_service_->StartRequest(scopes1_same, &consumer_)); 177 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_));
167 base::RunLoop().RunUntilIdle(); 178 base::RunLoop().RunUntilIdle();
168 179
169 // No new network fetcher. 180 // No new network fetcher.
170 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 181 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
171 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 182 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
172 EXPECT_EQ(0, consumer_.number_of_errors_); 183 EXPECT_EQ(0, consumer_.number_of_errors_);
173 EXPECT_EQ("token", consumer_.last_token_); 184 EXPECT_EQ("token", consumer_.last_token_);
174 185
175 // Third request to a new set of scopes, should return another token. 186 // Third request to a new set of scopes, should return another token.
176 scoped_ptr<OAuth2TokenService::Request> request3( 187 scoped_ptr<OAuth2TokenService::Request> request3(
177 oauth2_service_->StartRequest(scopes2, &consumer_)); 188 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_));
178 base::RunLoop().RunUntilIdle(); 189 base::RunLoop().RunUntilIdle();
179 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 190 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
180 EXPECT_EQ(0, consumer_.number_of_errors_); 191 EXPECT_EQ(0, consumer_.number_of_errors_);
181 fetcher = factory_.GetFetcherByID(0); 192 fetcher = factory_.GetFetcherByID(0);
182 EXPECT_TRUE(fetcher); 193 EXPECT_TRUE(fetcher);
183 fetcher->set_response_code(net::HTTP_OK); 194 fetcher->set_response_code(net::HTTP_OK);
184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 195 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
185 fetcher->delegate()->OnURLFetchComplete(fetcher); 196 fetcher->delegate()->OnURLFetchComplete(fetcher);
186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 197 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
187 EXPECT_EQ(0, consumer_.number_of_errors_); 198 EXPECT_EQ(0, consumer_.number_of_errors_);
188 EXPECT_EQ("token2", consumer_.last_token_); 199 EXPECT_EQ("token2", consumer_.last_token_);
189 } 200 }
190 201
191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { 202 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
192 oauth2_service_->set_refresh_token("refreshToken"); 203 oauth2_service_->set_refresh_token("refreshToken");
193 204
194 // First request. 205 // First request.
195 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 206 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
196 std::set<std::string>(), &consumer_)); 207 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
197 base::RunLoop().RunUntilIdle(); 208 base::RunLoop().RunUntilIdle();
198 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 209 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
199 EXPECT_EQ(0, consumer_.number_of_errors_); 210 EXPECT_EQ(0, consumer_.number_of_errors_);
200 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 211 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
201 EXPECT_TRUE(fetcher); 212 EXPECT_TRUE(fetcher);
202 fetcher->set_response_code(net::HTTP_OK); 213 fetcher->set_response_code(net::HTTP_OK);
203 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 214 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
204 fetcher->delegate()->OnURLFetchComplete(fetcher); 215 fetcher->delegate()->OnURLFetchComplete(fetcher);
205 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 216 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
206 EXPECT_EQ(0, consumer_.number_of_errors_); 217 EXPECT_EQ(0, consumer_.number_of_errors_);
207 EXPECT_EQ("token", consumer_.last_token_); 218 EXPECT_EQ("token", consumer_.last_token_);
208 219
209 // Second request must try to access the network as the token has expired. 220 // Second request must try to access the network as the token has expired.
210 scoped_ptr<OAuth2TokenService::Request> request2( 221 scoped_ptr<OAuth2TokenService::Request> request2(
211 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 222 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
223 &consumer_));
212 base::RunLoop().RunUntilIdle(); 224 base::RunLoop().RunUntilIdle();
213 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 225 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
214 EXPECT_EQ(0, consumer_.number_of_errors_); 226 EXPECT_EQ(0, consumer_.number_of_errors_);
215 227
216 // Network failure. 228 // Network failure.
217 fetcher = factory_.GetFetcherByID(0); 229 fetcher = factory_.GetFetcherByID(0);
218 EXPECT_TRUE(fetcher); 230 EXPECT_TRUE(fetcher);
219 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 231 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
220 fetcher->SetResponseString(std::string()); 232 fetcher->SetResponseString(std::string());
221 fetcher->delegate()->OnURLFetchComplete(fetcher); 233 fetcher->delegate()->OnURLFetchComplete(fetcher);
222 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 234 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
223 EXPECT_EQ(1, consumer_.number_of_errors_); 235 EXPECT_EQ(1, consumer_.number_of_errors_);
224 } 236 }
225 237
226 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { 238 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
227 oauth2_service_->set_refresh_token("refreshToken"); 239 oauth2_service_->set_refresh_token("refreshToken");
228 240
229 // First request. 241 // First request.
230 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 242 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
231 std::set<std::string>(), &consumer_)); 243 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
232 base::RunLoop().RunUntilIdle(); 244 base::RunLoop().RunUntilIdle();
233 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 245 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
234 EXPECT_EQ(0, consumer_.number_of_errors_); 246 EXPECT_EQ(0, consumer_.number_of_errors_);
235 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 247 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
236 EXPECT_TRUE(fetcher); 248 EXPECT_TRUE(fetcher);
237 fetcher->set_response_code(net::HTTP_OK); 249 fetcher->set_response_code(net::HTTP_OK);
238 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 250 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
239 fetcher->delegate()->OnURLFetchComplete(fetcher); 251 fetcher->delegate()->OnURLFetchComplete(fetcher);
240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 252 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
241 EXPECT_EQ(0, consumer_.number_of_errors_); 253 EXPECT_EQ(0, consumer_.number_of_errors_);
242 EXPECT_EQ("token", consumer_.last_token_); 254 EXPECT_EQ("token", consumer_.last_token_);
243 255
244 // Second request must try to access the network as the token has expired. 256 // Second request must try to access the network as the token has expired.
245 scoped_ptr<OAuth2TokenService::Request> request2( 257 scoped_ptr<OAuth2TokenService::Request> request2(
246 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 258 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
259 &consumer_));
247 base::RunLoop().RunUntilIdle(); 260 base::RunLoop().RunUntilIdle();
248 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 261 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
249 EXPECT_EQ(0, consumer_.number_of_errors_); 262 EXPECT_EQ(0, consumer_.number_of_errors_);
250 263
251 fetcher = factory_.GetFetcherByID(0); 264 fetcher = factory_.GetFetcherByID(0);
252 EXPECT_TRUE(fetcher); 265 EXPECT_TRUE(fetcher);
253 fetcher->set_response_code(net::HTTP_OK); 266 fetcher->set_response_code(net::HTTP_OK);
254 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); 267 fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
255 fetcher->delegate()->OnURLFetchComplete(fetcher); 268 fetcher->delegate()->OnURLFetchComplete(fetcher);
256 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 269 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
257 EXPECT_EQ(0, consumer_.number_of_errors_); 270 EXPECT_EQ(0, consumer_.number_of_errors_);
258 EXPECT_EQ("another token", consumer_.last_token_); 271 EXPECT_EQ("another token", consumer_.last_token_);
259 } 272 }
260 273
261 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { 274 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
262 oauth2_service_->set_refresh_token("refreshToken"); 275 oauth2_service_->set_refresh_token("refreshToken");
263 276
264 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 277 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
265 std::set<std::string>(), &consumer_)); 278 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
266 base::RunLoop().RunUntilIdle(); 279 base::RunLoop().RunUntilIdle();
267 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 280 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
268 EXPECT_EQ(0, consumer_.number_of_errors_); 281 EXPECT_EQ(0, consumer_.number_of_errors_);
269 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 282 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
270 EXPECT_TRUE(fetcher); 283 EXPECT_TRUE(fetcher);
271 284
272 request.reset(); 285 request.reset();
273 286
274 fetcher->set_response_code(net::HTTP_OK); 287 fetcher->set_response_code(net::HTTP_OK);
275 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 288 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
276 fetcher->delegate()->OnURLFetchComplete(fetcher); 289 fetcher->delegate()->OnURLFetchComplete(fetcher);
277 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 290 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
278 EXPECT_EQ(0, consumer_.number_of_errors_); 291 EXPECT_EQ(0, consumer_.number_of_errors_);
279 } 292 }
280 293
281 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { 294 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
282 oauth2_service_->set_refresh_token("refreshToken"); 295 oauth2_service_->set_refresh_token("refreshToken");
283 296
284 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 297 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
285 std::set<std::string>(), &consumer_)); 298 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
286 base::RunLoop().RunUntilIdle(); 299 base::RunLoop().RunUntilIdle();
287 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 300 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
288 fetcher->set_response_code(net::HTTP_OK); 301 fetcher->set_response_code(net::HTTP_OK);
289 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 302 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
290 fetcher->delegate()->OnURLFetchComplete(fetcher); 303 fetcher->delegate()->OnURLFetchComplete(fetcher);
291 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 304 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
292 EXPECT_EQ(0, consumer_.number_of_errors_); 305 EXPECT_EQ(0, consumer_.number_of_errors_);
293 EXPECT_EQ("token", consumer_.last_token_); 306 EXPECT_EQ("token", consumer_.last_token_);
294 307
295 request.reset(); 308 request.reset();
296 309
297 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 310 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
298 EXPECT_EQ(0, consumer_.number_of_errors_); 311 EXPECT_EQ(0, consumer_.number_of_errors_);
299 EXPECT_EQ("token", consumer_.last_token_); 312 EXPECT_EQ("token", consumer_.last_token_);
300 } 313 }
301 314
302 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { 315 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
303 oauth2_service_->set_refresh_token("refreshToken"); 316 oauth2_service_->set_refresh_token("refreshToken");
304 317
305 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 318 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
306 std::set<std::string>(), &consumer_)); 319 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
307 base::RunLoop().RunUntilIdle(); 320 base::RunLoop().RunUntilIdle();
308 scoped_ptr<OAuth2TokenService::Request> request2( 321 scoped_ptr<OAuth2TokenService::Request> request2(
309 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 322 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
323 &consumer_));
310 base::RunLoop().RunUntilIdle(); 324 base::RunLoop().RunUntilIdle();
311 325
312 request.reset(); 326 request.reset();
313 327
314 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 328 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
315 fetcher->set_response_code(net::HTTP_OK); 329 fetcher->set_response_code(net::HTTP_OK);
316 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 330 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
317 fetcher->delegate()->OnURLFetchComplete(fetcher); 331 fetcher->delegate()->OnURLFetchComplete(fetcher);
318 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 332 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
319 EXPECT_EQ(0, consumer_.number_of_errors_); 333 EXPECT_EQ(0, consumer_.number_of_errors_);
320 } 334 }
321 335
322 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { 336 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
323 // We have a valid refresh token; the first request is successful. 337 // We have a valid refresh token; the first request is successful.
324 oauth2_service_->set_refresh_token("refreshToken"); 338 oauth2_service_->set_refresh_token("refreshToken");
325 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 339 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
326 std::set<std::string>(), &consumer_)); 340 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
327 base::RunLoop().RunUntilIdle(); 341 base::RunLoop().RunUntilIdle();
328 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 342 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
329 fetcher->set_response_code(net::HTTP_OK); 343 fetcher->set_response_code(net::HTTP_OK);
330 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 344 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
331 fetcher->delegate()->OnURLFetchComplete(fetcher); 345 fetcher->delegate()->OnURLFetchComplete(fetcher);
332 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 346 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
333 EXPECT_EQ(0, consumer_.number_of_errors_); 347 EXPECT_EQ(0, consumer_.number_of_errors_);
334 EXPECT_EQ("token", consumer_.last_token_); 348 EXPECT_EQ("token", consumer_.last_token_);
335 349
336 // The refresh token is no longer available; subsequent requests fail. 350 // The refresh token is no longer available; subsequent requests fail.
337 oauth2_service_->set_refresh_token(""); 351 oauth2_service_->set_refresh_token("");
338 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); 352 request = oauth2_service_->StartRequest(account_id_,
353 OAuth2TokenService::ScopeSet(), &consumer_);
339 base::RunLoop().RunUntilIdle(); 354 base::RunLoop().RunUntilIdle();
340 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 355 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
341 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 356 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
342 EXPECT_EQ(1, consumer_.number_of_errors_); 357 EXPECT_EQ(1, consumer_.number_of_errors_);
343 } 358 }
344 359
345 TEST_F(OAuth2TokenServiceTest, 360 TEST_F(OAuth2TokenServiceTest,
346 ChangedRefreshTokenDoesNotAffectInFlightRequests) { 361 ChangedRefreshTokenDoesNotAffectInFlightRequests) {
347 oauth2_service_->set_refresh_token("first refreshToken"); 362 oauth2_service_->set_refresh_token("first refreshToken");
348 std::set<std::string> scopes; 363 OAuth2TokenService::ScopeSet scopes;
349 scopes.insert("s1"); 364 scopes.insert("s1");
350 scopes.insert("s2"); 365 scopes.insert("s2");
351 366
352 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 367 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
353 scopes, &consumer_)); 368 account_id_, scopes, &consumer_));
354 base::RunLoop().RunUntilIdle(); 369 base::RunLoop().RunUntilIdle();
355 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); 370 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
356 371
357 // Note |request| is still pending when the refresh token changes. 372 // Note |request| is still pending when the refresh token changes.
358 oauth2_service_->set_refresh_token("second refreshToken"); 373 oauth2_service_->set_refresh_token("second refreshToken");
359 374
360 // A 2nd request (using the new refresh token) that occurs and completes 375 // A 2nd request (using the new refresh token) that occurs and completes
361 // while the 1st request is in flight is successful. 376 // while the 1st request is in flight is successful.
362 TestingOAuth2TokenServiceConsumer consumer2; 377 TestingOAuth2TokenServiceConsumer consumer2;
363 scoped_ptr<OAuth2TokenService::Request> request2( 378 scoped_ptr<OAuth2TokenService::Request> request2(
364 oauth2_service_->StartRequest(scopes, &consumer2)); 379 oauth2_service_->StartRequest(account_id_, scopes, &consumer2));
365 base::RunLoop().RunUntilIdle(); 380 base::RunLoop().RunUntilIdle();
366 381
367 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); 382 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
368 fetcher2->set_response_code(net::HTTP_OK); 383 fetcher2->set_response_code(net::HTTP_OK);
369 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); 384 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
370 fetcher2->delegate()->OnURLFetchComplete(fetcher2); 385 fetcher2->delegate()->OnURLFetchComplete(fetcher2);
371 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); 386 EXPECT_EQ(1, consumer2.number_of_successful_tokens_);
372 EXPECT_EQ(0, consumer2.number_of_errors_); 387 EXPECT_EQ(0, consumer2.number_of_errors_);
373 EXPECT_EQ("second token", consumer2.last_token_); 388 EXPECT_EQ("second token", consumer2.last_token_);
374 389
375 fetcher1->set_response_code(net::HTTP_OK); 390 fetcher1->set_response_code(net::HTTP_OK);
376 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); 391 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600));
377 fetcher1->delegate()->OnURLFetchComplete(fetcher1); 392 fetcher1->delegate()->OnURLFetchComplete(fetcher1);
378 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 393 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
379 EXPECT_EQ(0, consumer_.number_of_errors_); 394 EXPECT_EQ(0, consumer_.number_of_errors_);
380 EXPECT_EQ("first token", consumer_.last_token_); 395 EXPECT_EQ("first token", consumer_.last_token_);
381 } 396 }
382 397
383 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { 398 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
384 oauth2_service_->set_refresh_token("refreshToken"); 399 oauth2_service_->set_refresh_token("refreshToken");
385 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 400 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
386 std::set<std::string>(), &consumer_)); 401 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
387 base::RunLoop().RunUntilIdle(); 402 base::RunLoop().RunUntilIdle();
388 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 403 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
389 EXPECT_EQ(0, consumer_.number_of_errors_); 404 EXPECT_EQ(0, consumer_.number_of_errors_);
390 405
391 // The destructor should cancel all in-flight fetchers. 406 // The destructor should cancel all in-flight fetchers.
392 oauth2_service_.reset(NULL); 407 oauth2_service_.reset(NULL);
393 408
394 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 409 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
395 EXPECT_EQ(1, consumer_.number_of_errors_); 410 EXPECT_EQ(1, consumer_.number_of_errors_);
396 } 411 }
397 412
398 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { 413 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
399 oauth2_service_->set_refresh_token("refreshToken"); 414 oauth2_service_->set_refresh_token("refreshToken");
400 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); 415 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
416 account_id_);
401 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 417 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
402 std::set<std::string>(), &consumer)); 418 account_id_, OAuth2TokenService::ScopeSet(), &consumer));
403 base::RunLoop().RunUntilIdle(); 419 base::RunLoop().RunUntilIdle();
404 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 420 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
405 EXPECT_EQ(0, consumer.number_of_errors_); 421 EXPECT_EQ(0, consumer.number_of_errors_);
406 422
407 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 423 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
408 ASSERT_TRUE(fetcher); 424 ASSERT_TRUE(fetcher);
409 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 425 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
410 fetcher->SetResponseString(std::string()); 426 fetcher->SetResponseString(std::string());
411 fetcher->delegate()->OnURLFetchComplete(fetcher); 427 fetcher->delegate()->OnURLFetchComplete(fetcher);
412 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 428 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
413 EXPECT_EQ(1, consumer.number_of_errors_); 429 EXPECT_EQ(1, consumer.number_of_errors_);
414 430
415 fetcher = factory_.GetFetcherByID(0); 431 fetcher = factory_.GetFetcherByID(0);
416 ASSERT_TRUE(fetcher); 432 ASSERT_TRUE(fetcher);
417 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 433 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
418 fetcher->SetResponseString(std::string()); 434 fetcher->SetResponseString(std::string());
419 fetcher->delegate()->OnURLFetchComplete(fetcher); 435 fetcher->delegate()->OnURLFetchComplete(fetcher);
420 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 436 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
421 EXPECT_EQ(2, consumer.number_of_errors_); 437 EXPECT_EQ(2, consumer.number_of_errors_);
422 } 438 }
423 439
424 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { 440 TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
425 std::set<std::string> scopes; 441 OAuth2TokenService::ScopeSet scopes;
426 oauth2_service_->set_refresh_token("refreshToken"); 442 oauth2_service_->set_refresh_token("refreshToken");
427 443
428 // First request. 444 // First request.
429 scoped_ptr<OAuth2TokenService::Request> request( 445 scoped_ptr<OAuth2TokenService::Request> request(
430 oauth2_service_->StartRequest(scopes, &consumer_)); 446 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
431 base::RunLoop().RunUntilIdle(); 447 base::RunLoop().RunUntilIdle();
432 448
433 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 449 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
434 EXPECT_EQ(0, consumer_.number_of_errors_); 450 EXPECT_EQ(0, consumer_.number_of_errors_);
435 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 451 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
436 EXPECT_TRUE(fetcher); 452 EXPECT_TRUE(fetcher);
437 fetcher->set_response_code(net::HTTP_OK); 453 fetcher->set_response_code(net::HTTP_OK);
438 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 454 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
439 fetcher->delegate()->OnURLFetchComplete(fetcher); 455 fetcher->delegate()->OnURLFetchComplete(fetcher);
440 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 456 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
441 EXPECT_EQ(0, consumer_.number_of_errors_); 457 EXPECT_EQ(0, consumer_.number_of_errors_);
442 EXPECT_EQ("token", consumer_.last_token_); 458 EXPECT_EQ("token", consumer_.last_token_);
443 459
444 // Second request, should return the same token without needing a network 460 // Second request, should return the same token without needing a network
445 // request. 461 // request.
446 scoped_ptr<OAuth2TokenService::Request> request2( 462 scoped_ptr<OAuth2TokenService::Request> request2(
447 oauth2_service_->StartRequest(scopes, &consumer_)); 463 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
448 base::RunLoop().RunUntilIdle(); 464 base::RunLoop().RunUntilIdle();
449 465
450 // No new network fetcher. 466 // No new network fetcher.
451 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 467 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
452 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 468 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
453 EXPECT_EQ(0, consumer_.number_of_errors_); 469 EXPECT_EQ(0, consumer_.number_of_errors_);
454 EXPECT_EQ("token", consumer_.last_token_); 470 EXPECT_EQ("token", consumer_.last_token_);
455 471
456 // Invalidating the token should return a new token on the next request. 472 // Invalidating the token should return a new token on the next request.
457 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); 473 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_);
458 scoped_ptr<OAuth2TokenService::Request> request3( 474 scoped_ptr<OAuth2TokenService::Request> request3(
459 oauth2_service_->StartRequest(scopes, &consumer_)); 475 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
460 base::RunLoop().RunUntilIdle(); 476 base::RunLoop().RunUntilIdle();
461 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 477 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
462 EXPECT_EQ(0, consumer_.number_of_errors_); 478 EXPECT_EQ(0, consumer_.number_of_errors_);
463 fetcher = factory_.GetFetcherByID(0); 479 fetcher = factory_.GetFetcherByID(0);
464 EXPECT_TRUE(fetcher); 480 EXPECT_TRUE(fetcher);
465 fetcher->set_response_code(net::HTTP_OK); 481 fetcher->set_response_code(net::HTTP_OK);
466 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 482 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
467 fetcher->delegate()->OnURLFetchComplete(fetcher); 483 fetcher->delegate()->OnURLFetchComplete(fetcher);
468 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 484 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
469 EXPECT_EQ(0, consumer_.number_of_errors_); 485 EXPECT_EQ(0, consumer_.number_of_errors_);
470 EXPECT_EQ("token2", consumer_.last_token_); 486 EXPECT_EQ("token2", consumer_.last_token_);
471 } 487 }
472 488
473 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { 489 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
474 oauth2_service_->set_refresh_token("refreshToken"); 490 oauth2_service_->set_refresh_token("refreshToken");
475 scoped_ptr<OAuth2TokenService::Request> request( 491 scoped_ptr<OAuth2TokenService::Request> request(
476 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 492 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
493 &consumer_));
477 494
478 oauth2_service_->set_refresh_token("refreshToken2"); 495 oauth2_service_->set_refresh_token("refreshToken2");
479 scoped_ptr<OAuth2TokenService::Request> request2( 496 scoped_ptr<OAuth2TokenService::Request> request2(
480 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 497 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
498 &consumer_));
481 499
482 base::RunLoop().RunUntilIdle(); 500 base::RunLoop().RunUntilIdle();
483 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 501 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
484 EXPECT_EQ(0, consumer_.number_of_errors_); 502 EXPECT_EQ(0, consumer_.number_of_errors_);
485 503
486 oauth2_service_->CancelAllRequestsForTest(); 504 oauth2_service_->CancelAllRequestsForTest();
487 505
488 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 506 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
489 EXPECT_EQ(2, consumer_.number_of_errors_); 507 EXPECT_EQ(2, consumer_.number_of_errors_);
490 } 508 }
491 509
492 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { 510 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
493 std::set<std::string> scope_set_1; 511 OAuth2TokenService::ScopeSet scope_set_1;
494 scope_set_1.insert("scope1"); 512 scope_set_1.insert("scope1");
495 scope_set_1.insert("scope2"); 513 scope_set_1.insert("scope2");
496 std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); 514 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(),
515 scope_set_1.end());
497 scope_set_2.insert("scope3"); 516 scope_set_2.insert("scope3");
498 517
499 oauth2_service_->set_refresh_token("refreshToken"); 518 oauth2_service_->set_refresh_token("refreshToken");
500 scoped_ptr<OAuth2TokenService::Request> request1( 519 scoped_ptr<OAuth2TokenService::Request> request1(
501 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 520 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
502 scoped_ptr<OAuth2TokenService::Request> request2( 521 scoped_ptr<OAuth2TokenService::Request> request2(
503 oauth2_service_->StartRequest(scope_set_2, &consumer_)); 522 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
504 523
505 oauth2_service_->set_refresh_token("refreshToken2"); 524 oauth2_service_->set_refresh_token("refreshToken2");
506 scoped_ptr<OAuth2TokenService::Request> request3( 525 scoped_ptr<OAuth2TokenService::Request> request3(
507 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 526 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
508 527
509 base::RunLoop().RunUntilIdle(); 528 base::RunLoop().RunUntilIdle();
510 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 529 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
511 EXPECT_EQ(0, consumer_.number_of_errors_); 530 EXPECT_EQ(0, consumer_.number_of_errors_);
512 531
513 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); 532 oauth2_service_->CancelRequestsForTokenForTest("refreshToken");
514 533
515 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 534 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
516 EXPECT_EQ(2, consumer_.number_of_errors_); 535 EXPECT_EQ(2, consumer_.number_of_errors_);
517 536
518 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); 537 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2");
519 538
520 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 539 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
521 EXPECT_EQ(3, consumer_.number_of_errors_); 540 EXPECT_EQ(3, consumer_.number_of_errors_);
522 } 541 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698