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