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