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

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: Rebasing to include the update to ProfileSyncService: r224220 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 CancelRequestsForAccountForTest(const std::string& account_id) {
50 CancelRequestsForToken(refresh_token); 53 CancelRequestsForAccount(account_id);
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& account_id,
55 refresh_token_ = refresh_token; 58 const std::string& refresh_token) {
59 refresh_tokens_[account_id] = refresh_token;
56 } 60 }
57 61
58 protected: 62 protected:
59 virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; } 63 virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE {
64 // account_id explicitly ignored.
65 return refresh_tokens_[account_id];
66 }
60 67
61 private: 68 private:
62 // OAuth2TokenService implementation. 69 // OAuth2TokenService implementation.
63 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { 70 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE {
64 return request_context_getter_.get(); 71 return request_context_getter_.get();
65 } 72 }
66 73
67 std::string refresh_token_; 74 std::map<std::string, std::string> refresh_tokens_;
68 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 75 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
69 }; 76 };
70 77
71 class OAuth2TokenServiceTest : public testing::Test { 78 class OAuth2TokenServiceTest : public testing::Test {
72 public: 79 public:
73 virtual void SetUp() OVERRIDE { 80 virtual void SetUp() OVERRIDE {
74 oauth2_service_.reset( 81 oauth2_service_.reset(
75 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( 82 new TestOAuth2TokenService(new net::TestURLRequestContextGetter(
76 message_loop_.message_loop_proxy()))); 83 message_loop_.message_loop_proxy())));
84 account_id_ = "test_user@gmail.com";
77 } 85 }
78 86
79 virtual void TearDown() OVERRIDE { 87 virtual void TearDown() OVERRIDE {
80 // Makes sure that all the clean up tasks are run. 88 // Makes sure that all the clean up tasks are run.
81 base::RunLoop().RunUntilIdle(); 89 base::RunLoop().RunUntilIdle();
82 } 90 }
83 91
84 protected: 92 protected:
85 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. 93 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop.
86 net::TestURLFetcherFactory factory_; 94 net::TestURLFetcherFactory factory_;
87 scoped_ptr<TestOAuth2TokenService> oauth2_service_; 95 scoped_ptr<TestOAuth2TokenService> oauth2_service_;
96 std::string account_id_;
88 TestingOAuth2TokenServiceConsumer consumer_; 97 TestingOAuth2TokenServiceConsumer consumer_;
89 }; 98 };
90 99
91 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { 100 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) {
92 scoped_ptr<OAuth2TokenService::Request> request( 101 scoped_ptr<OAuth2TokenService::Request> request(
93 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 102 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
103 &consumer_));
94 base::RunLoop().RunUntilIdle(); 104 base::RunLoop().RunUntilIdle();
95 105
96 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 106 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
97 EXPECT_EQ(1, consumer_.number_of_errors_); 107 EXPECT_EQ(1, consumer_.number_of_errors_);
98 } 108 }
99 109
100 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { 110 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
101 oauth2_service_->set_refresh_token("refreshToken"); 111 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
102 scoped_ptr<OAuth2TokenService::Request> request( 112 scoped_ptr<OAuth2TokenService::Request> request(
103 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 113 oauth2_service_->StartRequest(account_id_,
114 OAuth2TokenService::ScopeSet(),
115 &consumer_));
104 base::RunLoop().RunUntilIdle(); 116 base::RunLoop().RunUntilIdle();
105 117
106 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 118 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
107 EXPECT_EQ(0, consumer_.number_of_errors_); 119 EXPECT_EQ(0, consumer_.number_of_errors_);
108 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 120 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
109 ASSERT_TRUE(fetcher); 121 ASSERT_TRUE(fetcher);
110 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 122 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
111 fetcher->SetResponseString(std::string()); 123 fetcher->SetResponseString(std::string());
112 fetcher->delegate()->OnURLFetchComplete(fetcher); 124 fetcher->delegate()->OnURLFetchComplete(fetcher);
113 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 125 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
114 EXPECT_EQ(1, consumer_.number_of_errors_); 126 EXPECT_EQ(1, consumer_.number_of_errors_);
115 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); 127 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
116 } 128 }
117 129
118 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { 130 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
119 oauth2_service_->set_refresh_token("refreshToken"); 131 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
120 scoped_ptr<OAuth2TokenService::Request> request( 132 scoped_ptr<OAuth2TokenService::Request> request(
121 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 133 oauth2_service_->StartRequest(account_id_,
134 OAuth2TokenService::ScopeSet(),
135 &consumer_));
122 base::RunLoop().RunUntilIdle(); 136 base::RunLoop().RunUntilIdle();
123 137
124 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 138 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
125 EXPECT_EQ(0, consumer_.number_of_errors_); 139 EXPECT_EQ(0, consumer_.number_of_errors_);
126 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 140 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
127 ASSERT_TRUE(fetcher); 141 ASSERT_TRUE(fetcher);
128 fetcher->set_response_code(net::HTTP_OK); 142 fetcher->set_response_code(net::HTTP_OK);
129 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 143 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
130 fetcher->delegate()->OnURLFetchComplete(fetcher); 144 fetcher->delegate()->OnURLFetchComplete(fetcher);
131 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 145 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
132 EXPECT_EQ(0, consumer_.number_of_errors_); 146 EXPECT_EQ(0, consumer_.number_of_errors_);
133 EXPECT_EQ("token", consumer_.last_token_); 147 EXPECT_EQ("token", consumer_.last_token_);
134 } 148 }
135 149
136 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { 150 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
137 std::set<std::string> scopes1; 151 OAuth2TokenService::ScopeSet scopes1;
138 scopes1.insert("s1"); 152 scopes1.insert("s1");
139 scopes1.insert("s2"); 153 scopes1.insert("s2");
140 std::set<std::string> scopes1_same; 154 OAuth2TokenService::ScopeSet scopes1_same;
141 scopes1_same.insert("s2"); 155 scopes1_same.insert("s2");
142 scopes1_same.insert("s1"); 156 scopes1_same.insert("s1");
143 std::set<std::string> scopes2; 157 OAuth2TokenService::ScopeSet scopes2;
144 scopes2.insert("s3"); 158 scopes2.insert("s3");
145 159
146 oauth2_service_->set_refresh_token("refreshToken"); 160 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
147 161
148 // First request. 162 // First request.
149 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 163 scoped_ptr<OAuth2TokenService::Request> request(
150 scopes1, &consumer_)); 164 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_));
151 base::RunLoop().RunUntilIdle(); 165 base::RunLoop().RunUntilIdle();
152 166
153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 167 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
154 EXPECT_EQ(0, consumer_.number_of_errors_); 168 EXPECT_EQ(0, consumer_.number_of_errors_);
155 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 169 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
156 ASSERT_TRUE(fetcher); 170 ASSERT_TRUE(fetcher);
157 fetcher->set_response_code(net::HTTP_OK); 171 fetcher->set_response_code(net::HTTP_OK);
158 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 172 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
159 fetcher->delegate()->OnURLFetchComplete(fetcher); 173 fetcher->delegate()->OnURLFetchComplete(fetcher);
160 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 174 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
161 EXPECT_EQ(0, consumer_.number_of_errors_); 175 EXPECT_EQ(0, consumer_.number_of_errors_);
162 EXPECT_EQ("token", consumer_.last_token_); 176 EXPECT_EQ("token", consumer_.last_token_);
163 177
164 // Second request to the same set of scopes, should return the same token 178 // Second request to the same set of scopes, should return the same token
165 // without needing a network request. 179 // without needing a network request.
166 scoped_ptr<OAuth2TokenService::Request> request2( 180 scoped_ptr<OAuth2TokenService::Request> request2(
167 oauth2_service_->StartRequest(scopes1_same, &consumer_)); 181 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_));
168 base::RunLoop().RunUntilIdle(); 182 base::RunLoop().RunUntilIdle();
169 183
170 // No new network fetcher. 184 // No new network fetcher.
171 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 185 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
172 EXPECT_EQ(0, consumer_.number_of_errors_); 186 EXPECT_EQ(0, consumer_.number_of_errors_);
173 EXPECT_EQ("token", consumer_.last_token_); 187 EXPECT_EQ("token", consumer_.last_token_);
174 188
175 // Third request to a new set of scopes, should return another token. 189 // Third request to a new set of scopes, should return another token.
176 scoped_ptr<OAuth2TokenService::Request> request3( 190 scoped_ptr<OAuth2TokenService::Request> request3(
177 oauth2_service_->StartRequest(scopes2, &consumer_)); 191 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_));
178 base::RunLoop().RunUntilIdle(); 192 base::RunLoop().RunUntilIdle();
179 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 193 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
180 EXPECT_EQ(0, consumer_.number_of_errors_); 194 EXPECT_EQ(0, consumer_.number_of_errors_);
181 fetcher = factory_.GetFetcherByID(0); 195 fetcher = factory_.GetFetcherByID(0);
182 ASSERT_TRUE(fetcher); 196 ASSERT_TRUE(fetcher);
183 fetcher->set_response_code(net::HTTP_OK); 197 fetcher->set_response_code(net::HTTP_OK);
184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 198 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
185 fetcher->delegate()->OnURLFetchComplete(fetcher); 199 fetcher->delegate()->OnURLFetchComplete(fetcher);
186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 200 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
187 EXPECT_EQ(0, consumer_.number_of_errors_); 201 EXPECT_EQ(0, consumer_.number_of_errors_);
188 EXPECT_EQ("token2", consumer_.last_token_); 202 EXPECT_EQ("token2", consumer_.last_token_);
189 } 203 }
190 204
191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { 205 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
192 oauth2_service_->set_refresh_token("refreshToken"); 206 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
193 207
194 // First request. 208 // First request.
195 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 209 scoped_ptr<OAuth2TokenService::Request> request(
196 std::set<std::string>(), &consumer_)); 210 oauth2_service_->StartRequest(account_id_,
211 OAuth2TokenService::ScopeSet(),
212 &consumer_));
197 base::RunLoop().RunUntilIdle(); 213 base::RunLoop().RunUntilIdle();
198 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 214 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
199 EXPECT_EQ(0, consumer_.number_of_errors_); 215 EXPECT_EQ(0, consumer_.number_of_errors_);
200 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 216 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
201 ASSERT_TRUE(fetcher); 217 ASSERT_TRUE(fetcher);
202 fetcher->set_response_code(net::HTTP_OK); 218 fetcher->set_response_code(net::HTTP_OK);
203 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 219 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
204 fetcher->delegate()->OnURLFetchComplete(fetcher); 220 fetcher->delegate()->OnURLFetchComplete(fetcher);
205 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 221 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
206 EXPECT_EQ(0, consumer_.number_of_errors_); 222 EXPECT_EQ(0, consumer_.number_of_errors_);
207 EXPECT_EQ("token", consumer_.last_token_); 223 EXPECT_EQ("token", consumer_.last_token_);
208 224
209 // Second request must try to access the network as the token has expired. 225 // Second request must try to access the network as the token has expired.
210 scoped_ptr<OAuth2TokenService::Request> request2( 226 scoped_ptr<OAuth2TokenService::Request> request2(
211 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 227 oauth2_service_->StartRequest(account_id_,
228 OAuth2TokenService::ScopeSet(),
229 &consumer_));
212 base::RunLoop().RunUntilIdle(); 230 base::RunLoop().RunUntilIdle();
213 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 231 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
214 EXPECT_EQ(0, consumer_.number_of_errors_); 232 EXPECT_EQ(0, consumer_.number_of_errors_);
215 233
216 // Network failure. 234 // Network failure.
217 fetcher = factory_.GetFetcherByID(0); 235 fetcher = factory_.GetFetcherByID(0);
218 ASSERT_TRUE(fetcher); 236 ASSERT_TRUE(fetcher);
219 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 237 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
220 fetcher->SetResponseString(std::string()); 238 fetcher->SetResponseString(std::string());
221 fetcher->delegate()->OnURLFetchComplete(fetcher); 239 fetcher->delegate()->OnURLFetchComplete(fetcher);
222 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
223 EXPECT_EQ(1, consumer_.number_of_errors_); 241 EXPECT_EQ(1, consumer_.number_of_errors_);
224 } 242 }
225 243
226 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { 244 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
227 oauth2_service_->set_refresh_token("refreshToken"); 245 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
228 246
229 // First request. 247 // First request.
230 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 248 scoped_ptr<OAuth2TokenService::Request> request(
231 std::set<std::string>(), &consumer_)); 249 oauth2_service_->StartRequest(account_id_,
250 OAuth2TokenService::ScopeSet(),
251 &consumer_));
232 base::RunLoop().RunUntilIdle(); 252 base::RunLoop().RunUntilIdle();
233 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 253 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
234 EXPECT_EQ(0, consumer_.number_of_errors_); 254 EXPECT_EQ(0, consumer_.number_of_errors_);
235 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 255 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
236 ASSERT_TRUE(fetcher); 256 ASSERT_TRUE(fetcher);
237 fetcher->set_response_code(net::HTTP_OK); 257 fetcher->set_response_code(net::HTTP_OK);
238 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); 258 fetcher->SetResponseString(GetValidTokenResponse("token", 0));
239 fetcher->delegate()->OnURLFetchComplete(fetcher); 259 fetcher->delegate()->OnURLFetchComplete(fetcher);
240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 260 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
241 EXPECT_EQ(0, consumer_.number_of_errors_); 261 EXPECT_EQ(0, consumer_.number_of_errors_);
242 EXPECT_EQ("token", consumer_.last_token_); 262 EXPECT_EQ("token", consumer_.last_token_);
243 263
244 // Second request must try to access the network as the token has expired. 264 // Second request must try to access the network as the token has expired.
245 scoped_ptr<OAuth2TokenService::Request> request2( 265 scoped_ptr<OAuth2TokenService::Request> request2(
246 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 266 oauth2_service_->StartRequest(account_id_,
267 OAuth2TokenService::ScopeSet(),
268 &consumer_));
247 base::RunLoop().RunUntilIdle(); 269 base::RunLoop().RunUntilIdle();
248 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 270 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
249 EXPECT_EQ(0, consumer_.number_of_errors_); 271 EXPECT_EQ(0, consumer_.number_of_errors_);
250 272
251 fetcher = factory_.GetFetcherByID(0); 273 fetcher = factory_.GetFetcherByID(0);
252 ASSERT_TRUE(fetcher); 274 ASSERT_TRUE(fetcher);
253 fetcher->set_response_code(net::HTTP_OK); 275 fetcher->set_response_code(net::HTTP_OK);
254 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); 276 fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
255 fetcher->delegate()->OnURLFetchComplete(fetcher); 277 fetcher->delegate()->OnURLFetchComplete(fetcher);
256 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 278 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
257 EXPECT_EQ(0, consumer_.number_of_errors_); 279 EXPECT_EQ(0, consumer_.number_of_errors_);
258 EXPECT_EQ("another token", consumer_.last_token_); 280 EXPECT_EQ("another token", consumer_.last_token_);
259 } 281 }
260 282
261 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { 283 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
262 oauth2_service_->set_refresh_token("refreshToken"); 284 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
263 285
264 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 286 scoped_ptr<OAuth2TokenService::Request> request(
265 std::set<std::string>(), &consumer_)); 287 oauth2_service_->StartRequest(account_id_,
288 OAuth2TokenService::ScopeSet(),
289 &consumer_));
266 base::RunLoop().RunUntilIdle(); 290 base::RunLoop().RunUntilIdle();
267 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 291 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
268 EXPECT_EQ(0, consumer_.number_of_errors_); 292 EXPECT_EQ(0, consumer_.number_of_errors_);
269 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 293 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
270 ASSERT_TRUE(fetcher); 294 ASSERT_TRUE(fetcher);
271 295
272 request.reset(); 296 request.reset();
273 297
274 fetcher->set_response_code(net::HTTP_OK); 298 fetcher->set_response_code(net::HTTP_OK);
275 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 299 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
276 fetcher->delegate()->OnURLFetchComplete(fetcher); 300 fetcher->delegate()->OnURLFetchComplete(fetcher);
277 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 301 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
278 EXPECT_EQ(0, consumer_.number_of_errors_); 302 EXPECT_EQ(0, consumer_.number_of_errors_);
279 } 303 }
280 304
281 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { 305 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
282 oauth2_service_->set_refresh_token("refreshToken"); 306 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
283 307
284 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 308 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
285 std::set<std::string>(), &consumer_)); 309 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
286 base::RunLoop().RunUntilIdle(); 310 base::RunLoop().RunUntilIdle();
287 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 311 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
288 ASSERT_TRUE(fetcher); 312 ASSERT_TRUE(fetcher);
289 fetcher->set_response_code(net::HTTP_OK); 313 fetcher->set_response_code(net::HTTP_OK);
290 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 314 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
291 fetcher->delegate()->OnURLFetchComplete(fetcher); 315 fetcher->delegate()->OnURLFetchComplete(fetcher);
292 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 316 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
293 EXPECT_EQ(0, consumer_.number_of_errors_); 317 EXPECT_EQ(0, consumer_.number_of_errors_);
294 EXPECT_EQ("token", consumer_.last_token_); 318 EXPECT_EQ("token", consumer_.last_token_);
295 319
296 request.reset(); 320 request.reset();
297 321
298 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 322 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
299 EXPECT_EQ(0, consumer_.number_of_errors_); 323 EXPECT_EQ(0, consumer_.number_of_errors_);
300 EXPECT_EQ("token", consumer_.last_token_); 324 EXPECT_EQ("token", consumer_.last_token_);
301 } 325 }
302 326
303 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { 327 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
304 oauth2_service_->set_refresh_token("refreshToken"); 328 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
305 329
306 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 330 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
307 std::set<std::string>(), &consumer_)); 331 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
308 base::RunLoop().RunUntilIdle(); 332 base::RunLoop().RunUntilIdle();
309 scoped_ptr<OAuth2TokenService::Request> request2( 333 scoped_ptr<OAuth2TokenService::Request> request2(
310 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 334 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
335 &consumer_));
311 base::RunLoop().RunUntilIdle(); 336 base::RunLoop().RunUntilIdle();
312 337
313 request.reset(); 338 request.reset();
314 339
315 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 340 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
316 ASSERT_TRUE(fetcher); 341 ASSERT_TRUE(fetcher);
317 fetcher->set_response_code(net::HTTP_OK); 342 fetcher->set_response_code(net::HTTP_OK);
318 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 343 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
319 fetcher->delegate()->OnURLFetchComplete(fetcher); 344 fetcher->delegate()->OnURLFetchComplete(fetcher);
320 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 345 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
321 EXPECT_EQ(0, consumer_.number_of_errors_); 346 EXPECT_EQ(0, consumer_.number_of_errors_);
322 } 347 }
323 348
324 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { 349 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
325 // We have a valid refresh token; the first request is successful. 350 // We have a valid refresh token; the first request is successful.
326 oauth2_service_->set_refresh_token("refreshToken"); 351 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
327 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 352 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
328 std::set<std::string>(), &consumer_)); 353 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
329 base::RunLoop().RunUntilIdle(); 354 base::RunLoop().RunUntilIdle();
330 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 355 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
331 ASSERT_TRUE(fetcher); 356 ASSERT_TRUE(fetcher);
332 fetcher->set_response_code(net::HTTP_OK); 357 fetcher->set_response_code(net::HTTP_OK);
333 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 358 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
334 fetcher->delegate()->OnURLFetchComplete(fetcher); 359 fetcher->delegate()->OnURLFetchComplete(fetcher);
335 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 360 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
336 EXPECT_EQ(0, consumer_.number_of_errors_); 361 EXPECT_EQ(0, consumer_.number_of_errors_);
337 EXPECT_EQ("token", consumer_.last_token_); 362 EXPECT_EQ("token", consumer_.last_token_);
338 363
339 // The refresh token is no longer available; subsequent requests fail. 364 // The refresh token is no longer available; subsequent requests fail.
340 oauth2_service_->set_refresh_token(""); 365 oauth2_service_->set_refresh_token(account_id_, "");
341 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); 366 request = oauth2_service_->StartRequest(account_id_,
367 OAuth2TokenService::ScopeSet(), &consumer_);
342 base::RunLoop().RunUntilIdle(); 368 base::RunLoop().RunUntilIdle();
343 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 369 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
344 EXPECT_EQ(1, consumer_.number_of_errors_); 370 EXPECT_EQ(1, consumer_.number_of_errors_);
345 } 371 }
346 372
347 TEST_F(OAuth2TokenServiceTest, 373 TEST_F(OAuth2TokenServiceTest,
348 ChangedRefreshTokenDoesNotAffectInFlightRequests) { 374 ChangedRefreshTokenDoesNotAffectInFlightRequests) {
349 oauth2_service_->set_refresh_token("first refreshToken"); 375 oauth2_service_->set_refresh_token(account_id_, "first refreshToken");
350 std::set<std::string> scopes; 376 OAuth2TokenService::ScopeSet scopes;
351 scopes.insert("s1"); 377 scopes.insert("s1");
352 scopes.insert("s2"); 378 scopes.insert("s2");
379 OAuth2TokenService::ScopeSet scopes1;
380 scopes.insert("s3");
381 scopes.insert("s4");
353 382
354 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 383 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
355 scopes, &consumer_)); 384 account_id_, scopes, &consumer_));
356 base::RunLoop().RunUntilIdle(); 385 base::RunLoop().RunUntilIdle();
357 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); 386 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
358 ASSERT_TRUE(fetcher1); 387 ASSERT_TRUE(fetcher1);
359 388
360 // Note |request| is still pending when the refresh token changes. 389 // Note |request| is still pending when the refresh token changes.
361 oauth2_service_->set_refresh_token("second refreshToken"); 390 oauth2_service_->set_refresh_token(account_id_, "second refreshToken");
362 391
363 // A 2nd request (using the new refresh token) that occurs and completes 392 // A 2nd request (using the new refresh token) that occurs and completes
364 // while the 1st request is in flight is successful. 393 // while the 1st request is in flight is successful.
365 TestingOAuth2TokenServiceConsumer consumer2; 394 TestingOAuth2TokenServiceConsumer consumer2;
366 scoped_ptr<OAuth2TokenService::Request> request2( 395 scoped_ptr<OAuth2TokenService::Request> request2(
367 oauth2_service_->StartRequest(scopes, &consumer2)); 396 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2));
368 base::RunLoop().RunUntilIdle(); 397 base::RunLoop().RunUntilIdle();
369 398
370 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); 399 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
371 fetcher2->set_response_code(net::HTTP_OK); 400 fetcher2->set_response_code(net::HTTP_OK);
372 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); 401 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
373 fetcher2->delegate()->OnURLFetchComplete(fetcher2); 402 fetcher2->delegate()->OnURLFetchComplete(fetcher2);
374 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); 403 EXPECT_EQ(1, consumer2.number_of_successful_tokens_);
375 EXPECT_EQ(0, consumer2.number_of_errors_); 404 EXPECT_EQ(0, consumer2.number_of_errors_);
376 EXPECT_EQ("second token", consumer2.last_token_); 405 EXPECT_EQ("second token", consumer2.last_token_);
377 406
378 fetcher1->set_response_code(net::HTTP_OK); 407 fetcher1->set_response_code(net::HTTP_OK);
379 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); 408 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600));
380 fetcher1->delegate()->OnURLFetchComplete(fetcher1); 409 fetcher1->delegate()->OnURLFetchComplete(fetcher1);
381 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 410 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
382 EXPECT_EQ(0, consumer_.number_of_errors_); 411 EXPECT_EQ(0, consumer_.number_of_errors_);
383 EXPECT_EQ("first token", consumer_.last_token_); 412 EXPECT_EQ("first token", consumer_.last_token_);
384 } 413 }
385 414
386 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { 415 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) {
387 oauth2_service_->set_refresh_token("refreshToken"); 416 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
388 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 417 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
389 std::set<std::string>(), &consumer_)); 418 account_id_, OAuth2TokenService::ScopeSet(), &consumer_));
390 base::RunLoop().RunUntilIdle(); 419 base::RunLoop().RunUntilIdle();
391 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 420 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
392 EXPECT_EQ(0, consumer_.number_of_errors_); 421 EXPECT_EQ(0, consumer_.number_of_errors_);
393 422
394 // The destructor should cancel all in-flight fetchers. 423 // The destructor should cancel all in-flight fetchers.
395 oauth2_service_.reset(NULL); 424 oauth2_service_.reset(NULL);
396 425
397 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 426 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
398 EXPECT_EQ(1, consumer_.number_of_errors_); 427 EXPECT_EQ(1, consumer_.number_of_errors_);
399 } 428 }
400 429
401 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { 430 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
402 oauth2_service_->set_refresh_token("refreshToken"); 431 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
403 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); 432 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(),
433 account_id_);
404 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( 434 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest(
405 std::set<std::string>(), &consumer)); 435 account_id_, OAuth2TokenService::ScopeSet(), &consumer));
406 base::RunLoop().RunUntilIdle(); 436 base::RunLoop().RunUntilIdle();
407 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 437 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
408 EXPECT_EQ(0, consumer.number_of_errors_); 438 EXPECT_EQ(0, consumer.number_of_errors_);
409 439
410 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 440 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
411 ASSERT_TRUE(fetcher); 441 ASSERT_TRUE(fetcher);
412 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 442 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
413 fetcher->SetResponseString(std::string()); 443 fetcher->SetResponseString(std::string());
414 fetcher->delegate()->OnURLFetchComplete(fetcher); 444 fetcher->delegate()->OnURLFetchComplete(fetcher);
415 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 445 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
416 EXPECT_EQ(1, consumer.number_of_errors_); 446 EXPECT_EQ(1, consumer.number_of_errors_);
417 447
418 fetcher = factory_.GetFetcherByID(0); 448 fetcher = factory_.GetFetcherByID(0);
419 ASSERT_TRUE(fetcher); 449 ASSERT_TRUE(fetcher);
420 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 450 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
421 fetcher->SetResponseString(std::string()); 451 fetcher->SetResponseString(std::string());
422 fetcher->delegate()->OnURLFetchComplete(fetcher); 452 fetcher->delegate()->OnURLFetchComplete(fetcher);
423 EXPECT_EQ(0, consumer.number_of_successful_tokens_); 453 EXPECT_EQ(0, consumer.number_of_successful_tokens_);
424 EXPECT_EQ(2, consumer.number_of_errors_); 454 EXPECT_EQ(2, consumer.number_of_errors_);
425 } 455 }
426 456
427 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { 457 TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
428 std::set<std::string> scopes; 458 OAuth2TokenService::ScopeSet scopes;
429 oauth2_service_->set_refresh_token("refreshToken"); 459 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
430 460
431 // First request. 461 // First request.
432 scoped_ptr<OAuth2TokenService::Request> request( 462 scoped_ptr<OAuth2TokenService::Request> request(
433 oauth2_service_->StartRequest(scopes, &consumer_)); 463 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
434 base::RunLoop().RunUntilIdle(); 464 base::RunLoop().RunUntilIdle();
435 465
436 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 466 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
437 EXPECT_EQ(0, consumer_.number_of_errors_); 467 EXPECT_EQ(0, consumer_.number_of_errors_);
438 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 468 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
439 ASSERT_TRUE(fetcher); 469 ASSERT_TRUE(fetcher);
440 fetcher->set_response_code(net::HTTP_OK); 470 fetcher->set_response_code(net::HTTP_OK);
441 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); 471 fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
442 fetcher->delegate()->OnURLFetchComplete(fetcher); 472 fetcher->delegate()->OnURLFetchComplete(fetcher);
443 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 473 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
444 EXPECT_EQ(0, consumer_.number_of_errors_); 474 EXPECT_EQ(0, consumer_.number_of_errors_);
445 EXPECT_EQ("token", consumer_.last_token_); 475 EXPECT_EQ("token", consumer_.last_token_);
446 476
447 // Second request, should return the same token without needing a network 477 // Second request, should return the same token without needing a network
448 // request. 478 // request.
449 scoped_ptr<OAuth2TokenService::Request> request2( 479 scoped_ptr<OAuth2TokenService::Request> request2(
450 oauth2_service_->StartRequest(scopes, &consumer_)); 480 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
451 base::RunLoop().RunUntilIdle(); 481 base::RunLoop().RunUntilIdle();
452 482
453 // No new network fetcher. 483 // No new network fetcher.
454 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 484 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
455 EXPECT_EQ(0, consumer_.number_of_errors_); 485 EXPECT_EQ(0, consumer_.number_of_errors_);
456 EXPECT_EQ("token", consumer_.last_token_); 486 EXPECT_EQ("token", consumer_.last_token_);
457 487
458 // Invalidating the token should return a new token on the next request. 488 // Invalidating the token should return a new token on the next request.
459 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); 489 oauth2_service_->InvalidateToken(account_id_, scopes, consumer_.last_token_);
460 scoped_ptr<OAuth2TokenService::Request> request3( 490 scoped_ptr<OAuth2TokenService::Request> request3(
461 oauth2_service_->StartRequest(scopes, &consumer_)); 491 oauth2_service_->StartRequest(account_id_, scopes, &consumer_));
462 base::RunLoop().RunUntilIdle(); 492 base::RunLoop().RunUntilIdle();
463 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); 493 EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
464 EXPECT_EQ(0, consumer_.number_of_errors_); 494 EXPECT_EQ(0, consumer_.number_of_errors_);
465 fetcher = factory_.GetFetcherByID(0); 495 fetcher = factory_.GetFetcherByID(0);
466 ASSERT_TRUE(fetcher); 496 ASSERT_TRUE(fetcher);
467 fetcher->set_response_code(net::HTTP_OK); 497 fetcher->set_response_code(net::HTTP_OK);
468 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); 498 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
469 fetcher->delegate()->OnURLFetchComplete(fetcher); 499 fetcher->delegate()->OnURLFetchComplete(fetcher);
470 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); 500 EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
471 EXPECT_EQ(0, consumer_.number_of_errors_); 501 EXPECT_EQ(0, consumer_.number_of_errors_);
472 EXPECT_EQ("token2", consumer_.last_token_); 502 EXPECT_EQ("token2", consumer_.last_token_);
473 } 503 }
474 504
475 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { 505 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) {
476 oauth2_service_->set_refresh_token("refreshToken"); 506 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
477 scoped_ptr<OAuth2TokenService::Request> request( 507 scoped_ptr<OAuth2TokenService::Request> request(
478 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 508 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
509 &consumer_));
479 510
480 oauth2_service_->set_refresh_token("refreshToken2"); 511 oauth2_service_->set_refresh_token("account_id_2", "refreshToken2");
481 scoped_ptr<OAuth2TokenService::Request> request2( 512 scoped_ptr<OAuth2TokenService::Request> request2(
482 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); 513 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(),
514 &consumer_));
483 515
484 base::RunLoop().RunUntilIdle(); 516 base::RunLoop().RunUntilIdle();
485 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 517 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
486 EXPECT_EQ(0, consumer_.number_of_errors_); 518 EXPECT_EQ(0, consumer_.number_of_errors_);
487 519
488 oauth2_service_->CancelAllRequestsForTest(); 520 oauth2_service_->CancelAllRequestsForTest();
489 521
490 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 522 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
491 EXPECT_EQ(2, consumer_.number_of_errors_); 523 EXPECT_EQ(2, consumer_.number_of_errors_);
492 } 524 }
493 525
494 TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) { 526 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) {
495 std::set<std::string> scope_set_1; 527 OAuth2TokenService::ScopeSet scope_set_1;
496 scope_set_1.insert("scope1"); 528 scope_set_1.insert("scope1");
497 scope_set_1.insert("scope2"); 529 scope_set_1.insert("scope2");
498 std::set<std::string> scope_set_2(scope_set_1.begin(), scope_set_1.end()); 530 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(),
531 scope_set_1.end());
499 scope_set_2.insert("scope3"); 532 scope_set_2.insert("scope3");
500 533
501 oauth2_service_->set_refresh_token("refreshToken"); 534 oauth2_service_->set_refresh_token(account_id_, "refreshToken");
502 scoped_ptr<OAuth2TokenService::Request> request1( 535 scoped_ptr<OAuth2TokenService::Request> request1(
503 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 536 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_));
504 scoped_ptr<OAuth2TokenService::Request> request2( 537 scoped_ptr<OAuth2TokenService::Request> request2(
505 oauth2_service_->StartRequest(scope_set_2, &consumer_)); 538 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_));
506 539
507 oauth2_service_->set_refresh_token("refreshToken2"); 540 std::string account_id_2("account_id_2");
541 oauth2_service_->set_refresh_token(account_id_2, "refreshToken2");
508 scoped_ptr<OAuth2TokenService::Request> request3( 542 scoped_ptr<OAuth2TokenService::Request> request3(
509 oauth2_service_->StartRequest(scope_set_1, &consumer_)); 543 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_));
510 544
511 base::RunLoop().RunUntilIdle(); 545 base::RunLoop().RunUntilIdle();
512 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 546 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
513 EXPECT_EQ(0, consumer_.number_of_errors_); 547 EXPECT_EQ(0, consumer_.number_of_errors_);
514 548
515 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); 549 oauth2_service_->CancelRequestsForAccountForTest(account_id_);
516 550
517 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 551 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
518 EXPECT_EQ(2, consumer_.number_of_errors_); 552 EXPECT_EQ(2, consumer_.number_of_errors_);
519 553
520 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); 554 oauth2_service_->CancelRequestsForAccountForTest(account_id_2);
521 555
522 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 556 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
523 EXPECT_EQ(3, consumer_.number_of_errors_); 557 EXPECT_EQ(3, consumer_.number_of_errors_);
524 } 558 }
525 559
526 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { 560 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
527 std::string client_id_1("client1"); 561 std::string client_id_1("client1");
528 std::string client_secret_1("secret1"); 562 std::string client_secret_1("secret1");
529 std::string client_id_2("client2"); 563 std::string client_id_2("client2");
530 std::string client_secret_2("secret2"); 564 std::string client_secret_2("secret2");
531 std::set<std::string> scope_set; 565 std::set<std::string> scope_set;
532 scope_set.insert("scope1"); 566 scope_set.insert("scope1");
533 scope_set.insert("scope2"); 567 scope_set.insert("scope2");
534 568
535 std::string refresh_token("refreshToken"); 569 std::string refresh_token("refreshToken");
536 oauth2_service_->set_refresh_token(refresh_token); 570 oauth2_service_->set_refresh_token(account_id_, refresh_token);
537 571
538 scoped_ptr<OAuth2TokenService::Request> request1( 572 scoped_ptr<OAuth2TokenService::Request> request1(
539 oauth2_service_->StartRequestForClient(client_id_1, 573 oauth2_service_->StartRequestForClient(account_id_,
574 client_id_1,
540 client_secret_1, 575 client_secret_1,
541 scope_set, 576 scope_set,
542 &consumer_)); 577 &consumer_));
543 scoped_ptr<OAuth2TokenService::Request> request2( 578 scoped_ptr<OAuth2TokenService::Request> request2(
544 oauth2_service_->StartRequestForClient(client_id_2, 579 oauth2_service_->StartRequestForClient(account_id_,
580 client_id_2,
545 client_secret_2, 581 client_secret_2,
546 scope_set, 582 scope_set,
547 &consumer_)); 583 &consumer_));
548 // Start a request that should be duplicate of |request1|. 584 // Start a request that should be duplicate of |request1|.
549 scoped_ptr<OAuth2TokenService::Request> request3( 585 scoped_ptr<OAuth2TokenService::Request> request3(
550 oauth2_service_->StartRequestForClient(client_id_1, 586 oauth2_service_->StartRequestForClient(account_id_,
587 client_id_1,
551 client_secret_1, 588 client_secret_1,
552 scope_set, 589 scope_set,
553 &consumer_)); 590 &consumer_));
554 base::RunLoop().RunUntilIdle(); 591 base::RunLoop().RunUntilIdle();
555 592
556 ASSERT_EQ(2U, 593 ASSERT_EQ(2U,
557 oauth2_service_->GetNumPendingRequestsForTesting( 594 oauth2_service_->GetNumPendingRequestsForTesting(
558 client_id_1, 595 client_id_1,
559 refresh_token, 596 account_id_,
560 scope_set)); 597 scope_set));
561 ASSERT_EQ(1U, 598 ASSERT_EQ(1U,
562 oauth2_service_->GetNumPendingRequestsForTesting( 599 oauth2_service_->GetNumPendingRequestsForTesting(
563 client_id_2, 600 client_id_2,
564 refresh_token, 601 account_id_,
565 scope_set)); 602 scope_set));
566 } 603 }
567 604
568 TEST_F(OAuth2TokenServiceTest, ClientScopeSetOrderTest) { 605 TEST_F(OAuth2TokenServiceTest, RequestParametersOrderTest) {
569 OAuth2TokenService::ScopeSet set_0; 606 OAuth2TokenService::ScopeSet set_0;
570 OAuth2TokenService::ScopeSet set_1; 607 OAuth2TokenService::ScopeSet set_1;
571 set_1.insert("1"); 608 set_1.insert("1");
572 609
573 OAuth2TokenService::ClientScopeSet sets[] = { 610 OAuth2TokenService::RequestParameters params[] = {
574 OAuth2TokenService::ClientScopeSet("0", set_0), 611 OAuth2TokenService::RequestParameters("0", "0", set_0),
575 OAuth2TokenService::ClientScopeSet("0", set_1), 612 OAuth2TokenService::RequestParameters("0", "0", set_1),
576 OAuth2TokenService::ClientScopeSet("1", set_0), 613 OAuth2TokenService::RequestParameters("0", "1", set_0),
577 OAuth2TokenService::ClientScopeSet("1", set_1), 614 OAuth2TokenService::RequestParameters("0", "1", set_1),
578 }; 615 OAuth2TokenService::RequestParameters("1", "0", set_0),
579 616 OAuth2TokenService::RequestParameters("1", "0", set_1),
580 for (size_t i = 0; i < arraysize(sets); i++) { 617 OAuth2TokenService::RequestParameters("1", "1", set_0),
581 for (size_t j = 0; j < arraysize(sets); j++) { 618 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 }; 619 };
611 620
612 for (size_t i = 0; i < arraysize(params); i++) { 621 for (size_t i = 0; i < arraysize(params); i++) {
613 for (size_t j = 0; j < arraysize(params); j++) { 622 for (size_t j = 0; j < arraysize(params); j++) {
614 if (i == j) { 623 if (i == j) {
615 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; 624 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
616 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; 625 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
617 } else if (i < j) { 626 } else if (i < j) {
618 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j; 627 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j;
619 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; 628 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
620 } else { 629 } else {
621 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j; 630 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j;
622 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; 631 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
623 } 632 }
624 } 633 }
625 } 634 }
626 } 635 }
OLDNEW
« no previous file with comments | « google_apis/gaia/oauth2_token_service.cc ('k') | sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698