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

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: Updates to access token cache handling 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_access_token_fetcher.h" 12 #include "google_apis/gaia/oauth2_access_token_fetcher.h"
13 #include "google_apis/gaia/oauth2_token_service.h" 13 #include "google_apis/gaia/oauth2_token_service.h"
14 #include "google_apis/gaia/oauth2_token_service_test_util.h" 14 #include "google_apis/gaia/oauth2_token_service_test_util.h"
15 #include "net/http/http_status_code.h" 15 #include "net/http/http_status_code.h"
16 #include "net/url_request/test_url_fetcher_factory.h" 16 #include "net/url_request/test_url_fetcher_factory.h"
17 #include "net/url_request/url_fetcher_delegate.h" 17 #include "net/url_request/url_fetcher_delegate.h"
18 #include "net/url_request/url_request_test_util.h" 18 #include "net/url_request/url_request_test_util.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 20
21 // A testing consumer that retries on error. 21 // A testing consumer that retries on error.
22 class RetryingTestingOAuth2TokenServiceConsumer 22 class RetryingTestingOAuth2TokenServiceConsumer
23 : public TestingOAuth2TokenServiceConsumer { 23 : public TestingOAuth2TokenServiceConsumer {
24 public: 24 public:
25 RetryingTestingOAuth2TokenServiceConsumer( 25 RetryingTestingOAuth2TokenServiceConsumer(
26 OAuth2TokenService* oauth2_service) 26 OAuth2TokenService* oauth2_service,
27 : oauth2_service_(oauth2_service) {} 27 const std::string& account_id)
28 : oauth2_service_(oauth2_service),
29 account_id_(account_id) {}
28 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {} 30 virtual ~RetryingTestingOAuth2TokenServiceConsumer() {}
29 31
30 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, 32 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request,
31 const GoogleServiceAuthError& error) OVERRIDE { 33 const GoogleServiceAuthError& error) OVERRIDE {
32 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); 34 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error);
33 request_.reset(oauth2_service_->StartRequest( 35 request_.reset(oauth2_service_->StartRequest(
34 std::set<std::string>(), this).release()); 36 account_id_, OAuth2TokenService::ScopeSet(), this).release());
35 } 37 }
36 38
37 OAuth2TokenService* oauth2_service_; 39 OAuth2TokenService* oauth2_service_;
40 std::string account_id_;
38 scoped_ptr<OAuth2TokenService::Request> request_; 41 scoped_ptr<OAuth2TokenService::Request> request_;
39 }; 42 };
40 43
41 class TestOAuth2TokenService : public OAuth2TokenService { 44 class TestOAuth2TokenService : public OAuth2TokenService {
42 public: 45 public:
43 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter) 46 explicit TestOAuth2TokenService(net::TestURLRequestContextGetter* getter)
44 : request_context_getter_(getter) { 47 : request_context_getter_(getter) {
45 } 48 }
46 49
47 void CancelAllRequestsForTest() { CancelAllRequests(); } 50 void CancelAllRequestsForTest() { CancelAllRequests(); }
48 51
49 void CancelRequestsForTokenForTest(const std::string& refresh_token) { 52 void CancelRequestsForTokenForTest(const std::string& refresh_token) {
50 CancelRequestsForToken(refresh_token); 53 CancelRequestsForToken(refresh_token);
51 } 54 }
52 55
53 // For testing: set the refresh token to be used. 56 // For testing: set the refresh token to be used.
54 void set_refresh_token(const std::string& refresh_token) { 57 void set_refresh_token(const std::string& refresh_token) {
55 refresh_token_ = refresh_token; 58 refresh_token_ = refresh_token;
56 } 59 }
57 60
58 protected: 61 protected:
59 virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; } 62 virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE {
63 // account_id explicitly ignored.
64 return refresh_token_;
65 }
60 66
61 private: 67 private:
62 // OAuth2TokenService implementation. 68 // OAuth2TokenService implementation.
63 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { 69 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE {
64 return request_context_getter_.get(); 70 return request_context_getter_.get();
65 } 71 }
66 72
67 std::string refresh_token_; 73 std::string refresh_token_;
68 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 74 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
69 }; 75 };
70 76
71 class OAuth2TokenServiceTest : public testing::Test { 77 class OAuth2TokenServiceTest : public testing::Test {
72 public: 78 public:
73 virtual void SetUp() OVERRIDE { 79 virtual void SetUp() OVERRIDE {
74 oauth2_service_.reset( 80 oauth2_service_.reset(
75 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( 81 new TestOAuth2TokenService(new net::TestURLRequestContextGetter(
76 message_loop_.message_loop_proxy()))); 82 message_loop_.message_loop_proxy())));
83 account_id_ = "test_user@gmail.com";
77 } 84 }
78 85
79 virtual void TearDown() OVERRIDE { 86 virtual void TearDown() OVERRIDE {
80 // Makes sure that all the clean up tasks are run. 87 // Makes sure that all the clean up tasks are run.
81 base::RunLoop().RunUntilIdle(); 88 base::RunLoop().RunUntilIdle();
82 } 89 }
83 90
84 protected: 91 protected:
85 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. 92 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop.
86 net::TestURLFetcherFactory factory_; 93 net::TestURLFetcherFactory factory_;
87 scoped_ptr<TestOAuth2TokenService> oauth2_service_; 94 scoped_ptr<TestOAuth2TokenService> oauth2_service_;
95 std::string account_id_;
88 TestingOAuth2TokenServiceConsumer consumer_; 96 TestingOAuth2TokenServiceConsumer consumer_;
89 }; 97 };
90 98
91 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { 99 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
92 scoped_ptr<OAuth2TokenService::Request> request( 100 scoped_ptr<OAuth2TokenService::Request> request(
93 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 101 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
102 &consumer_));
94 base::RunLoop().RunUntilIdle(); 103 base::RunLoop().RunUntilIdle();
95 104
96 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
97 EXPECT_EQ(1, consumer_.number_of_errors_); 106 EXPECT_EQ(1, consumer_.number_of_errors_);
98 } 107 }
99 108
100 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { 109 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
101 oauth2_service_->set_refresh_token("refreshToken"); 110 oauth2_service_->set_refresh_token("refreshToken");
102 scoped_ptr<OAuth2TokenService::Request> request( 111 scoped_ptr<OAuth2TokenService::Request> request(
103 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 112 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
113 &consumer_));
104 base::RunLoop().RunUntilIdle(); 114 base::RunLoop().RunUntilIdle();
105 115
106 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 116 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
107 EXPECT_EQ(0, consumer_.number_of_errors_); 117 EXPECT_EQ(0, consumer_.number_of_errors_);
108 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 118 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
109 ASSERT_TRUE(fetcher); 119 ASSERT_TRUE(fetcher);
110 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 120 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
111 fetcher->SetResponseString(std::string()); 121 fetcher->SetResponseString(std::string());
112 fetcher->delegate()->OnURLFetchComplete(fetcher); 122 fetcher->delegate()->OnURLFetchComplete(fetcher);
113 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
114 EXPECT_EQ(1, consumer_.number_of_errors_); 124 EXPECT_EQ(1, consumer_.number_of_errors_);
115 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 125 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
116 } 126 }
117 127
118 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { 128 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
119 oauth2_service_->set_refresh_token("refreshToken"); 129 oauth2_service_->set_refresh_token("refreshToken");
120 scoped_ptr<OAuth2TokenService::Request> request( 130 scoped_ptr<OAuth2TokenService::Request> request(
121 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 131 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
132 &consumer_));
122 base::RunLoop().RunUntilIdle(); 133 base::RunLoop().RunUntilIdle();
123 134
124 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 135 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
125 EXPECT_EQ(0, consumer_.number_of_errors_); 136 EXPECT_EQ(0, consumer_.number_of_errors_);
126 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 137 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
127 ASSERT_TRUE(fetcher); 138 ASSERT_TRUE(fetcher);
128 fetcher->set_response_code(net::HTTP_OK); 139 fetcher->set_response_code(net::HTTP_OK);
129 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 140 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
130 fetcher->delegate()->OnURLFetchComplete(fetcher); 141 fetcher->delegate()->OnURLFetchComplete(fetcher);
131 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 142 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
132 EXPECT_EQ(0, consumer_.number_of_errors_); 143 EXPECT_EQ(0, consumer_.number_of_errors_);
133 EXPECT_EQ("token", consumer_.last_token_); 144 EXPECT_EQ("token", consumer_.last_token_);
134 } 145 }
135 146
136 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { 147 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
137 std::set<std::string> scopes1; 148 OAuth2TokenService::ScopeSet scopes1;
138 scopes1.insert("s1"); 149 scopes1.insert("s1");
139 scopes1.insert("s2"); 150 scopes1.insert("s2");
140 std::set<std::string> scopes1_same; 151 OAuth2TokenService::ScopeSet scopes1_same;
141 scopes1_same.insert("s2"); 152 scopes1_same.insert("s2");
142 scopes1_same.insert("s1"); 153 scopes1_same.insert("s1");
143 std::set<std::string> scopes2; 154 OAuth2TokenService::ScopeSet scopes2;
144 scopes2.insert("s3"); 155 scopes2.insert("s3");
145 156
146 oauth2_service_->set_refresh_token("refreshToken"); 157 oauth2_service_->set_refresh_token("refreshToken");
147 158
148 // First request. 159 // First request.
149 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 160 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
150 scopes1, &consumer_)); 161 account_id_, scopes1, &consumer_));
151 base::RunLoop().RunUntilIdle(); 162 base::RunLoop().RunUntilIdle();
152 163
153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 164 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
154 EXPECT_EQ(0, consumer_.number_of_errors_); 165 EXPECT_EQ(0, consumer_.number_of_errors_);
155 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 166 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
156 ASSERT_TRUE(fetcher); 167 ASSERT_TRUE(fetcher);
157 fetcher->set_response_code(net::HTTP_OK); 168 fetcher->set_response_code(net::HTTP_OK);
158 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 169 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
159 fetcher->delegate()->OnURLFetchComplete(fetcher); 170 fetcher->delegate()->OnURLFetchComplete(fetcher);
160 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 171 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
161 EXPECT_EQ(0, consumer_.number_of_errors_); 172 EXPECT_EQ(0, consumer_.number_of_errors_);
162 EXPECT_EQ("token", consumer_.last_token_); 173 EXPECT_EQ("token", consumer_.last_token_);
163 174
164 // Second request to the same set of scopes, should return the same token 175 // Second request to the same set of scopes, should return the same token
165 // without needing a network request. 176 // without needing a network request.
166 scoped_ptr<OAuth2TokenService::Request> request2( 177 scoped_ptr<OAuth2TokenService::Request> request2(
167 oauth2_service_->StartRequest(scopes1_same, &consumer_)); 178 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_));
168 base::RunLoop().RunUntilIdle(); 179 base::RunLoop().RunUntilIdle();
169 180
170 // No new network fetcher. 181 // No new network fetcher.
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 ASSERT_TRUE(fetcher); 193 ASSERT_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 ASSERT_TRUE(fetcher); 212 ASSERT_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 ASSERT_TRUE(fetcher); 230 ASSERT_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 ASSERT_TRUE(fetcher); 248 ASSERT_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 ASSERT_TRUE(fetcher); 265 ASSERT_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 ASSERT_TRUE(fetcher); 283 ASSERT_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 ASSERT_TRUE(fetcher); 301 ASSERT_TRUE(fetcher);
289 fetcher->set_response_code(net::HTTP_OK); 302 fetcher->set_response_code(net::HTTP_OK);
290 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 303 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
291 fetcher->delegate()->OnURLFetchComplete(fetcher); 304 fetcher->delegate()->OnURLFetchComplete(fetcher);
292 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 305 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
293 EXPECT_EQ(0, consumer_.number_of_errors_); 306 EXPECT_EQ(0, consumer_.number_of_errors_);
294 EXPECT_EQ("token", consumer_.last_token_); 307 EXPECT_EQ("token", consumer_.last_token_);
295 308
296 request.reset(); 309 request.reset();
297 310
298 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 311 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
299 EXPECT_EQ(0, consumer_.number_of_errors_); 312 EXPECT_EQ(0, consumer_.number_of_errors_);
300 EXPECT_EQ("token", consumer_.last_token_); 313 EXPECT_EQ("token", consumer_.last_token_);
301 } 314 }
302 315
303 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { 316 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
304 oauth2_service_->set_refresh_token("refreshToken"); 317 oauth2_service_->set_refresh_token("refreshToken");
305 318
306 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 319 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
307 std::set<std::string>(), &consumer_)); 320 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
308 base::RunLoop().RunUntilIdle(); 321 base::RunLoop().RunUntilIdle();
309 scoped_ptr<OAuth2TokenService::Request> request2( 322 scoped_ptr<OAuth2TokenService::Request> request2(
310 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 323 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
324 &consumer_));
311 base::RunLoop().RunUntilIdle(); 325 base::RunLoop().RunUntilIdle();
312 326
313 request.reset(); 327 request.reset();
314 328
315 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 329 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
316 ASSERT_TRUE(fetcher); 330 ASSERT_TRUE(fetcher);
317 fetcher->set_response_code(net::HTTP_OK); 331 fetcher->set_response_code(net::HTTP_OK);
318 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 332 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
319 fetcher->delegate()->OnURLFetchComplete(fetcher); 333 fetcher->delegate()->OnURLFetchComplete(fetcher);
320 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 334 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
321 EXPECT_EQ(0, consumer_.number_of_errors_); 335 EXPECT_EQ(0, consumer_.number_of_errors_);
322 } 336 }
323 337
324 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { 338 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
325 // We have a valid refresh token; the first request is successful. 339 // We have a valid refresh token; the first request is successful.
326 oauth2_service_->set_refresh_token("refreshToken"); 340 oauth2_service_->set_refresh_token("refreshToken");
327 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 341 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
328 std::set<std::string>(), &consumer_)); 342 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
329 base::RunLoop().RunUntilIdle(); 343 base::RunLoop().RunUntilIdle();
330 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 344 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
331 ASSERT_TRUE(fetcher); 345 ASSERT_TRUE(fetcher);
332 fetcher->set_response_code(net::HTTP_OK); 346 fetcher->set_response_code(net::HTTP_OK);
333 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 347 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
334 fetcher->delegate()->OnURLFetchComplete(fetcher); 348 fetcher->delegate()->OnURLFetchComplete(fetcher);
335 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 349 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
336 EXPECT_EQ(0, consumer_.number_of_errors_); 350 EXPECT_EQ(0, consumer_.number_of_errors_);
337 EXPECT_EQ("token", consumer_.last_token_); 351 EXPECT_EQ("token", consumer_.last_token_);
338 352
339 // The refresh token is no longer available; subsequent requests fail. 353 // The refresh token is no longer available; subsequent requests fail.
340 oauth2_service_->set_refresh_token(""); 354 oauth2_service_->set_refresh_token("");
341 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); 355 request = oauth2_service_->StartRequest(account_id_,
356 OAuth2TokenService::ScopeSet(), &consumer_);
342 base::RunLoop().RunUntilIdle(); 357 base::RunLoop().RunUntilIdle();
343 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 358 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
344 EXPECT_EQ(1, consumer_.number_of_errors_); 359 EXPECT_EQ(1, consumer_.number_of_errors_);
345 } 360 }
346 361
347 TEST_F(OAuth2TokenServiceTest, 362 TEST_F(OAuth2TokenServiceTest,
348 ChangedRefreshTokenDoesNotAffectInFlightRequests) { 363 ChangedRefreshTokenDoesNotAffectInFlightRequests) {
349 oauth2_service_->set_refresh_token("first refreshToken"); 364 oauth2_service_->set_refresh_token("first refreshToken");
350 std::set<std::string> scopes; 365 OAuth2TokenService::ScopeSet scopes;
351 scopes.insert("s1"); 366 scopes.insert("s1");
352 scopes.insert("s2"); 367 scopes.insert("s2");
353 368
354 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 369 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
355 scopes, &consumer_)); 370 account_id_, scopes, &consumer_));
356 base::RunLoop().RunUntilIdle(); 371 base::RunLoop().RunUntilIdle();
357 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); 372 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
358 ASSERT_TRUE(fetcher1); 373 ASSERT_TRUE(fetcher1);
359 374
360 // Note |request| is still pending when the refresh token changes. 375 // Note |request| is still pending when the refresh token changes.
361 oauth2_service_->set_refresh_token("second refreshToken"); 376 oauth2_service_->set_refresh_token("second refreshToken");
362 377
363 // A 2nd request (using the new refresh token) that occurs and completes 378 // A 2nd request (using the new refresh token) that occurs and completes
364 // while the 1st request is in flight is successful. 379 // while the 1st request is in flight is successful.
365 TestingOAuth2TokenServiceConsumer consumer2; 380 TestingOAuth2TokenServiceConsumer consumer2;
366 scoped_ptr<OAuth2TokenService::Request> request2( 381 scoped_ptr<OAuth2TokenService::Request> request2(
367 oauth2_service_->StartRequest(scopes, &consumer2)); 382 oauth2_service_->StartRequest(account_id_, scopes, &consumer2));
368 base::RunLoop().RunUntilIdle(); 383 base::RunLoop().RunUntilIdle();
369 384
370 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); 385 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
371 fetcher2->set_response_code(net::HTTP_OK); 386 fetcher2->set_response_code(net::HTTP_OK);
372 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); 387 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
373 fetcher2->delegate()->OnURLFetchComplete(fetcher2); 388 fetcher2->delegate()->OnURLFetchComplete(fetcher2);
374 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); 389 EXPECT_EQ(1, consumer2.number_of_successful_tokens_);
375 EXPECT_EQ(0, consumer2.number_of_errors_); 390 EXPECT_EQ(0, consumer2.number_of_errors_);
376 EXPECT_EQ("second token", consumer2.last_token_); 391 EXPECT_EQ("second token", consumer2.last_token_);
377 392
378 fetcher1->set_response_code(net::HTTP_OK); 393 fetcher1->set_response_code(net::HTTP_OK);
379 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); 394 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600));
380 fetcher1->delegate()->OnURLFetchComplete(fetcher1); 395 fetcher1->delegate()->OnURLFetchComplete(fetcher1);
381 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 396 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
382 EXPECT_EQ(0, consumer_.number_of_errors_); 397 EXPECT_EQ(0, consumer_.number_of_errors_);
383 EXPECT_EQ("first token", consumer_.last_token_); 398 EXPECT_EQ("first token", consumer_.last_token_);
384 } 399 }
385 400
386 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { 401 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
387 oauth2_service_->set_refresh_token("refreshToken"); 402 oauth2_service_->set_refresh_token("refreshToken");
388 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 403 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
389 std::set<std::string>(), &consumer_)); 404 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
390 base::RunLoop().RunUntilIdle(); 405 base::RunLoop().RunUntilIdle();
391 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 406 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
392 EXPECT_EQ(0, consumer_.number_of_errors_); 407 EXPECT_EQ(0, consumer_.number_of_errors_);
393 408
394 // The destructor should cancel all in-flight fetchers. 409 // The destructor should cancel all in-flight fetchers.
395 oauth2_service_.reset(NULL); 410 oauth2_service_.reset(NULL);
396 411
397 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 412 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
398 EXPECT_EQ(1, consumer_.number_of_errors_); 413 EXPECT_EQ(1, consumer_.number_of_errors_);
399 } 414 }
400 415
401 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { 416 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
402 oauth2_service_->set_refresh_token("refreshToken"); 417 oauth2_service_->set_refresh_token("refreshToken");
403 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); 418 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
419 account_id_);
404 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 420 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
405 std::set<std::string>(), &consumer)); 421 account_id_, OAuth2TokenService::ScopeSet(), &consumer));
406 base::RunLoop().RunUntilIdle(); 422 base::RunLoop().RunUntilIdle();
407 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 423 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
408 EXPECT_EQ(0, consumer.number_of_errors_); 424 EXPECT_EQ(0, consumer.number_of_errors_);
409 425
410 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 426 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
411 ASSERT_TRUE(fetcher); 427 ASSERT_TRUE(fetcher);
412 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 428 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
413 fetcher->SetResponseString(std::string()); 429 fetcher->SetResponseString(std::string());
414 fetcher->delegate()->OnURLFetchComplete(fetcher); 430 fetcher->delegate()->OnURLFetchComplete(fetcher);
415 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 431 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
416 EXPECT_EQ(1, consumer.number_of_errors_); 432 EXPECT_EQ(1, consumer.number_of_errors_);
417 433
418 fetcher = factory_.GetFetcherByID(0); 434 fetcher = factory_.GetFetcherByID(0);
419 ASSERT_TRUE(fetcher); 435 ASSERT_TRUE(fetcher);
420 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 436 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
421 fetcher->SetResponseString(std::string()); 437 fetcher->SetResponseString(std::string());
422 fetcher->delegate()->OnURLFetchComplete(fetcher); 438 fetcher->delegate()->OnURLFetchComplete(fetcher);
423 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 439 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
424 EXPECT_EQ(2, consumer.number_of_errors_); 440 EXPECT_EQ(2, consumer.number_of_errors_);
425 } 441 }
426 442
427 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { 443 TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
428 std::set<std::string> scopes; 444 OAuth2TokenService::ScopeSet scopes;
429 oauth2_service_->set_refresh_token("refreshToken"); 445 oauth2_service_->set_refresh_token("refreshToken");
430 446
431 // First request. 447 // First request.
432 scoped_ptr<OAuth2TokenService::Request> request( 448 scoped_ptr<OAuth2TokenService::Request> request(
433 oauth2_service_->StartRequest(scopes, &consumer_)); 449 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
434 base::RunLoop().RunUntilIdle(); 450 base::RunLoop().RunUntilIdle();
435 451
436 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 452 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
437 EXPECT_EQ(0, consumer_.number_of_errors_); 453 EXPECT_EQ(0, consumer_.number_of_errors_);
438 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 454 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
439 ASSERT_TRUE(fetcher); 455 ASSERT_TRUE(fetcher);
440 fetcher->set_response_code(net::HTTP_OK); 456 fetcher->set_response_code(net::HTTP_OK);
441 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 457 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
442 fetcher->delegate()->OnURLFetchComplete(fetcher); 458 fetcher->delegate()->OnURLFetchComplete(fetcher);
443 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 459 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
444 EXPECT_EQ(0, consumer_.number_of_errors_); 460 EXPECT_EQ(0, consumer_.number_of_errors_);
445 EXPECT_EQ("token", consumer_.last_token_); 461 EXPECT_EQ("token", consumer_.last_token_);
446 462
447 // Second request, should return the same token without needing a network 463 // Second request, should return the same token without needing a network
448 // request. 464 // request.
449 scoped_ptr<OAuth2TokenService::Request> request2( 465 scoped_ptr<OAuth2TokenService::Request> request2(
450 oauth2_service_->StartRequest(scopes, &consumer_)); 466 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
451 base::RunLoop().RunUntilIdle(); 467 base::RunLoop().RunUntilIdle();
452 468
453 // No new network fetcher. 469 // No new network fetcher.
454 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 470 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
455 EXPECT_EQ(0, consumer_.number_of_errors_); 471 EXPECT_EQ(0, consumer_.number_of_errors_);
456 EXPECT_EQ("token", consumer_.last_token_); 472 EXPECT_EQ("token", consumer_.last_token_);
457 473
458 // Invalidating the token should return a new token on the next request. 474 // Invalidating the token should return a new token on the next request.
459 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); 475 oauth2_service_->InvalidateToken(account_id_, scopes, consumer_.last_token_);
460 scoped_ptr<OAuth2TokenService::Request> request3( 476 scoped_ptr<OAuth2TokenService::Request> request3(
461 oauth2_service_->StartRequest(scopes, &consumer_)); 477 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
462 base::RunLoop().RunUntilIdle(); 478 base::RunLoop().RunUntilIdle();
463 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 479 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
464 EXPECT_EQ(0, consumer_.number_of_errors_); 480 EXPECT_EQ(0, consumer_.number_of_errors_);
465 fetcher = factory_.GetFetcherByID(0); 481 fetcher = factory_.GetFetcherByID(0);
466 ASSERT_TRUE(fetcher); 482 ASSERT_TRUE(fetcher);
467 fetcher->set_response_code(net::HTTP_OK); 483 fetcher->set_response_code(net::HTTP_OK);
468 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 484 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
469 fetcher->delegate()->OnURLFetchComplete(fetcher); 485 fetcher->delegate()->OnURLFetchComplete(fetcher);
470 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 486 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
471 EXPECT_EQ(0, consumer_.number_of_errors_); 487 EXPECT_EQ(0, consumer_.number_of_errors_);
472 EXPECT_EQ("token2", consumer_.last_token_); 488 EXPECT_EQ("token2", consumer_.last_token_);
473 } 489 }
474 490
475 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { 491 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
476 oauth2_service_->set_refresh_token("refreshToken"); 492 oauth2_service_->set_refresh_token("refreshToken");
477 scoped_ptr<OAuth2TokenService::Request> request( 493 scoped_ptr<OAuth2TokenService::Request> request(
478 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 494 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
495 &consumer_));
479 496
480 oauth2_service_->set_refresh_token("refreshToken2"); 497 oauth2_service_->set_refresh_token("refreshToken2");
481 scoped_ptr<OAuth2TokenService::Request> request2( 498 scoped_ptr<OAuth2TokenService::Request> request2(
482 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 499 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
500 &consumer_));
483 501
484 base::RunLoop().RunUntilIdle(); 502 base::RunLoop().RunUntilIdle();
485 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 503 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
486 EXPECT_EQ(0, consumer_.number_of_errors_); 504 EXPECT_EQ(0, consumer_.number_of_errors_);
487 505
488 oauth2_service_->CancelAllRequestsForTest(); 506 oauth2_service_->CancelAllRequestsForTest();
489 507
490 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 508 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
491 EXPECT_EQ(2, consumer_.number_of_errors_); 509 EXPECT_EQ(2, consumer_.number_of_errors_);
492 } 510 }
493 511
494 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { 512 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
495 std::set<std::string> scope_set_1; 513 OAuth2TokenService::ScopeSet scope_set_1;
496 scope_set_1.insert("scope1"); 514 scope_set_1.insert("scope1");
497 scope_set_1.insert("scope2"); 515 scope_set_1.insert("scope2");
498 std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); 516 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(),
517 scope_set_1.end());
499 scope_set_2.insert("scope3"); 518 scope_set_2.insert("scope3");
500 519
501 oauth2_service_->set_refresh_token("refreshToken"); 520 oauth2_service_->set_refresh_token("refreshToken");
502 scoped_ptr<OAuth2TokenService::Request> request1( 521 scoped_ptr<OAuth2TokenService::Request> request1(
503 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 522 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
504 scoped_ptr<OAuth2TokenService::Request> request2( 523 scoped_ptr<OAuth2TokenService::Request> request2(
505 oauth2_service_->StartRequest(scope_set_2, &consumer_)); 524 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
506 525
507 oauth2_service_->set_refresh_token("refreshToken2"); 526 oauth2_service_->set_refresh_token("refreshToken2");
508 scoped_ptr<OAuth2TokenService::Request> request3( 527 scoped_ptr<OAuth2TokenService::Request> request3(
509 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 528 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
510 529
511 base::RunLoop().RunUntilIdle(); 530 base::RunLoop().RunUntilIdle();
512 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 531 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
513 EXPECT_EQ(0, consumer_.number_of_errors_); 532 EXPECT_EQ(0, consumer_.number_of_errors_);
514 533
515 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); 534 oauth2_service_->CancelRequestsForTokenForTest("refreshToken");
516 535
517 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 536 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
518 EXPECT_EQ(2, consumer_.number_of_errors_); 537 EXPECT_EQ(2, consumer_.number_of_errors_);
519 538
520 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); 539 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2");
521 540
522 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 541 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
523 EXPECT_EQ(3, consumer_.number_of_errors_); 542 EXPECT_EQ(3, consumer_.number_of_errors_);
524 } 543 }
525 544
526 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { 545 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
527 std::string client_id_1("client1"); 546 std::string client_id_1("client1");
528 std::string client_secret_1("secret1"); 547 std::string client_secret_1("secret1");
529 std::string client_id_2("client2"); 548 std::string client_id_2("client2");
530 std::string client_secret_2("secret2"); 549 std::string client_secret_2("secret2");
531 std::set<std::string> scope_set; 550 std::set<std::string> scope_set;
532 scope_set.insert("scope1"); 551 scope_set.insert("scope1");
533 scope_set.insert("scope2"); 552 scope_set.insert("scope2");
534 553
535 std::string refresh_token("refreshToken"); 554 std::string refresh_token("refreshToken");
536 oauth2_service_->set_refresh_token(refresh_token); 555 oauth2_service_->set_refresh_token(refresh_token);
537 556
538 scoped_ptr<OAuth2TokenService::Request> request1( 557 scoped_ptr<OAuth2TokenService::Request> request1(
539 oauth2_service_->StartRequestForClient(client_id_1, 558 oauth2_service_->StartRequestForClient(account_id_,
559 client_id_1,
540 client_secret_1, 560 client_secret_1,
541 scope_set, 561 scope_set,
542 &consumer_)); 562 &consumer_));
543 scoped_ptr<OAuth2TokenService::Request> request2( 563 scoped_ptr<OAuth2TokenService::Request> request2(
544 oauth2_service_->StartRequestForClient(client_id_2, 564 oauth2_service_->StartRequestForClient(account_id_,
565 client_id_2,
545 client_secret_2, 566 client_secret_2,
546 scope_set, 567 scope_set,
547 &consumer_)); 568 &consumer_));
548 // Start a request that should be duplicate of |request1|. 569 // Start a request that should be duplicate of |request1|.
549 scoped_ptr<OAuth2TokenService::Request> request3( 570 scoped_ptr<OAuth2TokenService::Request> request3(
550 oauth2_service_->StartRequestForClient(client_id_1, 571 oauth2_service_->StartRequestForClient(account_id_,
572 client_id_1,
551 client_secret_1, 573 client_secret_1,
552 scope_set, 574 scope_set,
553 &consumer_)); 575 &consumer_));
554 base::RunLoop().RunUntilIdle(); 576 base::RunLoop().RunUntilIdle();
555 577
556 ASSERT_EQ(2U, 578 ASSERT_EQ(2U,
557 oauth2_service_->GetNumPendingRequestsForTesting( 579 oauth2_service_->GetNumPendingRequestsForTesting(
558 client_id_1, 580 client_id_1,
559 refresh_token, 581 refresh_token,
560 scope_set)); 582 scope_set));
561 ASSERT_EQ(1U, 583 ASSERT_EQ(1U,
562 oauth2_service_->GetNumPendingRequestsForTesting( 584 oauth2_service_->GetNumPendingRequestsForTesting(
563 client_id_2, 585 client_id_2,
564 refresh_token, 586 refresh_token,
565 scope_set)); 587 scope_set));
566 } 588 }
567 589
568 TEST_F(OAuth2TokenServiceTest, ClientScopeSetOrderTest) { 590 TEST_F(OAuth2TokenServiceTest, RequestParametersOrderTest) {
569 OAuth2TokenService::ScopeSet set_0; 591 OAuth2TokenService::ScopeSet set_0;
570 OAuth2TokenService::ScopeSet set_1; 592 OAuth2TokenService::ScopeSet set_1;
571 set_1.insert("1"); 593 set_1.insert("1");
572 594
573 OAuth2TokenService::ClientScopeSet sets[] = { 595 OAuth2TokenService::RequestParameters params[] = {
574 OAuth2TokenService::ClientScopeSet("0", set_0), 596 OAuth2TokenService::RequestParameters("0", "0", set_0),
575 OAuth2TokenService::ClientScopeSet("0", set_1), 597 OAuth2TokenService::RequestParameters("0", "0", set_1),
576 OAuth2TokenService::ClientScopeSet("1", set_0), 598 OAuth2TokenService::RequestParameters("0", "1", set_0),
577 OAuth2TokenService::ClientScopeSet("1", set_1), 599 OAuth2TokenService::RequestParameters("0", "1", set_1),
578 }; 600 OAuth2TokenService::RequestParameters("1", "0", set_0),
579 601 OAuth2TokenService::RequestParameters("1", "0", set_1),
580 for (size_t i = 0; i < arraysize(sets); i++) { 602 OAuth2TokenService::RequestParameters("1", "1", set_0),
581 for (size_t j = 0; j < arraysize(sets); j++) { 603 OAuth2TokenService::RequestParameters("1", "1", set_1),
582 if (i == j) {
583 EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
584 EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
585 } else if (i < j) {
586 EXPECT_TRUE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
587 EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
588 } else {
589 EXPECT_TRUE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
590 EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
591 }
592 }
593 }
594 }
595
596 TEST_F(OAuth2TokenServiceTest, FetchParametersOrderTest) {
597 OAuth2TokenService::ScopeSet set_0;
598 OAuth2TokenService::ScopeSet set_1;
599 set_1.insert("1");
600
601 OAuth2TokenService::FetchParameters params[] = {
602 OAuth2TokenService::FetchParameters("0", "0", set_0),
603 OAuth2TokenService::FetchParameters("0", "0", set_1),
604 OAuth2TokenService::FetchParameters("0", "1", set_0),
605 OAuth2TokenService::FetchParameters("0", "1", set_1),
606 OAuth2TokenService::FetchParameters("1", "0", set_0),
607 OAuth2TokenService::FetchParameters("1", "0", set_1),
608 OAuth2TokenService::FetchParameters("1", "1", set_0),
609 OAuth2TokenService::FetchParameters("1", "1", set_1),
610 }; 604 };
611 605
612 for (size_t i = 0; i < arraysize(params); i++) { 606 for (size_t i = 0; i < arraysize(params); i++) {
613 for (size_t j = 0; j < arraysize(params); j++) { 607 for (size_t j = 0; j < arraysize(params); j++) {
614 if (i == j) { 608 if (i == j) {
615 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; 609 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
616 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; 610 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
617 } else if (i < j) { 611 } else if (i < j) {
618 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j; 612 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j;
619 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; 613 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
620 } else { 614 } else {
621 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j; 615 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j;
622 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; 616 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
623 } 617 }
624 } 618 }
625 } 619 }
626 } 620 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698