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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 void OnGetTokenFailure(const OAuth2TokenService::Request* request, | 36 void OnGetTokenFailure(const OAuth2TokenService::Request* request, |
37 const GoogleServiceAuthError& error) override { | 37 const GoogleServiceAuthError& error) override { |
38 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); | 38 TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(request, error); |
39 request_.reset(oauth2_service_->StartRequest( | 39 request_.reset(oauth2_service_->StartRequest( |
40 account_id_, OAuth2TokenService::ScopeSet(), this).release()); | 40 account_id_, OAuth2TokenService::ScopeSet(), this).release()); |
41 } | 41 } |
42 | 42 |
43 OAuth2TokenService* oauth2_service_; | 43 OAuth2TokenService* oauth2_service_; |
44 std::string account_id_; | 44 std::string account_id_; |
45 scoped_ptr<OAuth2TokenService::Request> request_; | 45 std::unique_ptr<OAuth2TokenService::Request> request_; |
46 }; | 46 }; |
47 | 47 |
48 class TestOAuth2TokenService : public OAuth2TokenService { | 48 class TestOAuth2TokenService : public OAuth2TokenService { |
49 public: | 49 public: |
50 explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate) | 50 explicit TestOAuth2TokenService(FakeOAuth2TokenServiceDelegate* delegate) |
51 : OAuth2TokenService(delegate) {} | 51 : OAuth2TokenService(delegate) {} |
52 | 52 |
53 void CancelAllRequestsForTest() { CancelAllRequests(); } | 53 void CancelAllRequestsForTest() { CancelAllRequests(); } |
54 | 54 |
55 void CancelRequestsForAccountForTest(const std::string& account_id) { | 55 void CancelRequestsForAccountForTest(const std::string& account_id) { |
(...skipping 15 matching lines...) Expand all Loading... |
71 } | 71 } |
72 | 72 |
73 void TearDown() override { | 73 void TearDown() override { |
74 // Makes sure that all the clean up tasks are run. | 74 // Makes sure that all the clean up tasks are run. |
75 base::RunLoop().RunUntilIdle(); | 75 base::RunLoop().RunUntilIdle(); |
76 } | 76 } |
77 | 77 |
78 protected: | 78 protected: |
79 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. | 79 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. |
80 net::TestURLFetcherFactory factory_; | 80 net::TestURLFetcherFactory factory_; |
81 scoped_ptr<TestOAuth2TokenService> oauth2_service_; | 81 std::unique_ptr<TestOAuth2TokenService> oauth2_service_; |
82 std::string account_id_; | 82 std::string account_id_; |
83 TestingOAuth2TokenServiceConsumer consumer_; | 83 TestingOAuth2TokenServiceConsumer consumer_; |
84 }; | 84 }; |
85 | 85 |
86 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { | 86 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
87 scoped_ptr<OAuth2TokenService::Request> request( | 87 std::unique_ptr<OAuth2TokenService::Request> request( |
88 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 88 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
89 &consumer_)); | 89 &consumer_)); |
90 base::RunLoop().RunUntilIdle(); | 90 base::RunLoop().RunUntilIdle(); |
91 | 91 |
92 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 92 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
93 EXPECT_EQ(1, consumer_.number_of_errors_); | 93 EXPECT_EQ(1, consumer_.number_of_errors_); |
94 } | 94 } |
95 | 95 |
96 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { | 96 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
97 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 97 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
98 account_id_, "refreshToken"); | 98 account_id_, "refreshToken"); |
99 scoped_ptr<OAuth2TokenService::Request> request( | 99 std::unique_ptr<OAuth2TokenService::Request> request( |
100 oauth2_service_->StartRequest(account_id_, | 100 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
101 OAuth2TokenService::ScopeSet(), | |
102 &consumer_)); | 101 &consumer_)); |
103 base::RunLoop().RunUntilIdle(); | 102 base::RunLoop().RunUntilIdle(); |
104 | 103 |
105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 104 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
106 EXPECT_EQ(0, consumer_.number_of_errors_); | 105 EXPECT_EQ(0, consumer_.number_of_errors_); |
107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 106 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
108 ASSERT_TRUE(fetcher); | 107 ASSERT_TRUE(fetcher); |
109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 108 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
110 fetcher->SetResponseString(std::string()); | 109 fetcher->SetResponseString(std::string()); |
111 fetcher->delegate()->OnURLFetchComplete(fetcher); | 110 fetcher->delegate()->OnURLFetchComplete(fetcher); |
112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 111 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
113 EXPECT_EQ(1, consumer_.number_of_errors_); | 112 EXPECT_EQ(1, consumer_.number_of_errors_); |
114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 113 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
115 } | 114 } |
116 | 115 |
117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { | 116 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
118 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 117 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
119 account_id_, "refreshToken"); | 118 account_id_, "refreshToken"); |
120 scoped_ptr<OAuth2TokenService::Request> request( | 119 std::unique_ptr<OAuth2TokenService::Request> request( |
121 oauth2_service_->StartRequest(account_id_, | 120 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
122 OAuth2TokenService::ScopeSet(), | |
123 &consumer_)); | 121 &consumer_)); |
124 base::RunLoop().RunUntilIdle(); | 122 base::RunLoop().RunUntilIdle(); |
125 | 123 |
126 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 124 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
127 EXPECT_EQ(0, consumer_.number_of_errors_); | 125 EXPECT_EQ(0, consumer_.number_of_errors_); |
128 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 126 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
129 ASSERT_TRUE(fetcher); | 127 ASSERT_TRUE(fetcher); |
130 fetcher->set_response_code(net::HTTP_OK); | 128 fetcher->set_response_code(net::HTTP_OK); |
131 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 129 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
132 fetcher->delegate()->OnURLFetchComplete(fetcher); | 130 fetcher->delegate()->OnURLFetchComplete(fetcher); |
133 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 131 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
134 EXPECT_EQ(0, consumer_.number_of_errors_); | 132 EXPECT_EQ(0, consumer_.number_of_errors_); |
135 EXPECT_EQ("token", consumer_.last_token_); | 133 EXPECT_EQ("token", consumer_.last_token_); |
136 } | 134 } |
137 | 135 |
138 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { | 136 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
139 OAuth2TokenService::ScopeSet scopes1; | 137 OAuth2TokenService::ScopeSet scopes1; |
140 scopes1.insert("s1"); | 138 scopes1.insert("s1"); |
141 scopes1.insert("s2"); | 139 scopes1.insert("s2"); |
142 OAuth2TokenService::ScopeSet scopes1_same; | 140 OAuth2TokenService::ScopeSet scopes1_same; |
143 scopes1_same.insert("s2"); | 141 scopes1_same.insert("s2"); |
144 scopes1_same.insert("s1"); | 142 scopes1_same.insert("s1"); |
145 OAuth2TokenService::ScopeSet scopes2; | 143 OAuth2TokenService::ScopeSet scopes2; |
146 scopes2.insert("s3"); | 144 scopes2.insert("s3"); |
147 | 145 |
148 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 146 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
149 account_id_, "refreshToken"); | 147 account_id_, "refreshToken"); |
150 | 148 |
151 // First request. | 149 // First request. |
152 scoped_ptr<OAuth2TokenService::Request> request( | 150 std::unique_ptr<OAuth2TokenService::Request> request( |
153 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_)); | 151 oauth2_service_->StartRequest(account_id_, scopes1, &consumer_)); |
154 base::RunLoop().RunUntilIdle(); | 152 base::RunLoop().RunUntilIdle(); |
155 | 153 |
156 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 154 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
157 EXPECT_EQ(0, consumer_.number_of_errors_); | 155 EXPECT_EQ(0, consumer_.number_of_errors_); |
158 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 156 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
159 ASSERT_TRUE(fetcher); | 157 ASSERT_TRUE(fetcher); |
160 fetcher->set_response_code(net::HTTP_OK); | 158 fetcher->set_response_code(net::HTTP_OK); |
161 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 159 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
162 fetcher->delegate()->OnURLFetchComplete(fetcher); | 160 fetcher->delegate()->OnURLFetchComplete(fetcher); |
163 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 161 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
164 EXPECT_EQ(0, consumer_.number_of_errors_); | 162 EXPECT_EQ(0, consumer_.number_of_errors_); |
165 EXPECT_EQ("token", consumer_.last_token_); | 163 EXPECT_EQ("token", consumer_.last_token_); |
166 | 164 |
167 // Second request to the same set of scopes, should return the same token | 165 // Second request to the same set of scopes, should return the same token |
168 // without needing a network request. | 166 // without needing a network request. |
169 scoped_ptr<OAuth2TokenService::Request> request2( | 167 std::unique_ptr<OAuth2TokenService::Request> request2( |
170 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); | 168 oauth2_service_->StartRequest(account_id_, scopes1_same, &consumer_)); |
171 base::RunLoop().RunUntilIdle(); | 169 base::RunLoop().RunUntilIdle(); |
172 | 170 |
173 // No new network fetcher. | 171 // No new network fetcher. |
174 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 172 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
175 EXPECT_EQ(0, consumer_.number_of_errors_); | 173 EXPECT_EQ(0, consumer_.number_of_errors_); |
176 EXPECT_EQ("token", consumer_.last_token_); | 174 EXPECT_EQ("token", consumer_.last_token_); |
177 | 175 |
178 // Third request to a new set of scopes, should return another token. | 176 // Third request to a new set of scopes, should return another token. |
179 scoped_ptr<OAuth2TokenService::Request> request3( | 177 std::unique_ptr<OAuth2TokenService::Request> request3( |
180 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); | 178 oauth2_service_->StartRequest(account_id_, scopes2, &consumer_)); |
181 base::RunLoop().RunUntilIdle(); | 179 base::RunLoop().RunUntilIdle(); |
182 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 180 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
183 EXPECT_EQ(0, consumer_.number_of_errors_); | 181 EXPECT_EQ(0, consumer_.number_of_errors_); |
184 fetcher = factory_.GetFetcherByID(0); | 182 fetcher = factory_.GetFetcherByID(0); |
185 ASSERT_TRUE(fetcher); | 183 ASSERT_TRUE(fetcher); |
186 fetcher->set_response_code(net::HTTP_OK); | 184 fetcher->set_response_code(net::HTTP_OK); |
187 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 185 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
188 fetcher->delegate()->OnURLFetchComplete(fetcher); | 186 fetcher->delegate()->OnURLFetchComplete(fetcher); |
189 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 187 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
190 EXPECT_EQ(0, consumer_.number_of_errors_); | 188 EXPECT_EQ(0, consumer_.number_of_errors_); |
191 EXPECT_EQ("token2", consumer_.last_token_); | 189 EXPECT_EQ("token2", consumer_.last_token_); |
192 } | 190 } |
193 | 191 |
194 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { | 192 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
195 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 193 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
196 account_id_, "refreshToken"); | 194 account_id_, "refreshToken"); |
197 | 195 |
198 // First request. | 196 // First request. |
199 scoped_ptr<OAuth2TokenService::Request> request( | 197 std::unique_ptr<OAuth2TokenService::Request> request( |
200 oauth2_service_->StartRequest(account_id_, | 198 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
201 OAuth2TokenService::ScopeSet(), | |
202 &consumer_)); | 199 &consumer_)); |
203 base::RunLoop().RunUntilIdle(); | 200 base::RunLoop().RunUntilIdle(); |
204 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 201 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
205 EXPECT_EQ(0, consumer_.number_of_errors_); | 202 EXPECT_EQ(0, consumer_.number_of_errors_); |
206 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 203 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
207 ASSERT_TRUE(fetcher); | 204 ASSERT_TRUE(fetcher); |
208 fetcher->set_response_code(net::HTTP_OK); | 205 fetcher->set_response_code(net::HTTP_OK); |
209 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 206 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
210 fetcher->delegate()->OnURLFetchComplete(fetcher); | 207 fetcher->delegate()->OnURLFetchComplete(fetcher); |
211 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 208 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
212 EXPECT_EQ(0, consumer_.number_of_errors_); | 209 EXPECT_EQ(0, consumer_.number_of_errors_); |
213 EXPECT_EQ("token", consumer_.last_token_); | 210 EXPECT_EQ("token", consumer_.last_token_); |
214 | 211 |
215 // Second request must try to access the network as the token has expired. | 212 // Second request must try to access the network as the token has expired. |
216 scoped_ptr<OAuth2TokenService::Request> request2( | 213 std::unique_ptr<OAuth2TokenService::Request> request2( |
217 oauth2_service_->StartRequest(account_id_, | 214 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
218 OAuth2TokenService::ScopeSet(), | |
219 &consumer_)); | 215 &consumer_)); |
220 base::RunLoop().RunUntilIdle(); | 216 base::RunLoop().RunUntilIdle(); |
221 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 217 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
222 EXPECT_EQ(0, consumer_.number_of_errors_); | 218 EXPECT_EQ(0, consumer_.number_of_errors_); |
223 | 219 |
224 // Network failure. | 220 // Network failure. |
225 fetcher = factory_.GetFetcherByID(0); | 221 fetcher = factory_.GetFetcherByID(0); |
226 ASSERT_TRUE(fetcher); | 222 ASSERT_TRUE(fetcher); |
227 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 223 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
228 fetcher->SetResponseString(std::string()); | 224 fetcher->SetResponseString(std::string()); |
229 fetcher->delegate()->OnURLFetchComplete(fetcher); | 225 fetcher->delegate()->OnURLFetchComplete(fetcher); |
230 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 226 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
231 EXPECT_EQ(1, consumer_.number_of_errors_); | 227 EXPECT_EQ(1, consumer_.number_of_errors_); |
232 } | 228 } |
233 | 229 |
234 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { | 230 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
235 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 231 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
236 account_id_, "refreshToken"); | 232 account_id_, "refreshToken"); |
237 | 233 |
238 // First request. | 234 // First request. |
239 scoped_ptr<OAuth2TokenService::Request> request( | 235 std::unique_ptr<OAuth2TokenService::Request> request( |
240 oauth2_service_->StartRequest(account_id_, | 236 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
241 OAuth2TokenService::ScopeSet(), | |
242 &consumer_)); | 237 &consumer_)); |
243 base::RunLoop().RunUntilIdle(); | 238 base::RunLoop().RunUntilIdle(); |
244 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 239 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
245 EXPECT_EQ(0, consumer_.number_of_errors_); | 240 EXPECT_EQ(0, consumer_.number_of_errors_); |
246 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 241 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
247 ASSERT_TRUE(fetcher); | 242 ASSERT_TRUE(fetcher); |
248 fetcher->set_response_code(net::HTTP_OK); | 243 fetcher->set_response_code(net::HTTP_OK); |
249 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 244 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
250 fetcher->delegate()->OnURLFetchComplete(fetcher); | 245 fetcher->delegate()->OnURLFetchComplete(fetcher); |
251 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 246 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
252 EXPECT_EQ(0, consumer_.number_of_errors_); | 247 EXPECT_EQ(0, consumer_.number_of_errors_); |
253 EXPECT_EQ("token", consumer_.last_token_); | 248 EXPECT_EQ("token", consumer_.last_token_); |
254 | 249 |
255 // Second request must try to access the network as the token has expired. | 250 // Second request must try to access the network as the token has expired. |
256 scoped_ptr<OAuth2TokenService::Request> request2( | 251 std::unique_ptr<OAuth2TokenService::Request> request2( |
257 oauth2_service_->StartRequest(account_id_, | 252 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
258 OAuth2TokenService::ScopeSet(), | |
259 &consumer_)); | 253 &consumer_)); |
260 base::RunLoop().RunUntilIdle(); | 254 base::RunLoop().RunUntilIdle(); |
261 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 255 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
262 EXPECT_EQ(0, consumer_.number_of_errors_); | 256 EXPECT_EQ(0, consumer_.number_of_errors_); |
263 | 257 |
264 fetcher = factory_.GetFetcherByID(0); | 258 fetcher = factory_.GetFetcherByID(0); |
265 ASSERT_TRUE(fetcher); | 259 ASSERT_TRUE(fetcher); |
266 fetcher->set_response_code(net::HTTP_OK); | 260 fetcher->set_response_code(net::HTTP_OK); |
267 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); | 261 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); |
268 fetcher->delegate()->OnURLFetchComplete(fetcher); | 262 fetcher->delegate()->OnURLFetchComplete(fetcher); |
269 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 263 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
270 EXPECT_EQ(0, consumer_.number_of_errors_); | 264 EXPECT_EQ(0, consumer_.number_of_errors_); |
271 EXPECT_EQ("another token", consumer_.last_token_); | 265 EXPECT_EQ("another token", consumer_.last_token_); |
272 } | 266 } |
273 | 267 |
274 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { | 268 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
275 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 269 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
276 account_id_, "refreshToken"); | 270 account_id_, "refreshToken"); |
277 | 271 |
278 scoped_ptr<OAuth2TokenService::Request> request( | 272 std::unique_ptr<OAuth2TokenService::Request> request( |
279 oauth2_service_->StartRequest(account_id_, | 273 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
280 OAuth2TokenService::ScopeSet(), | |
281 &consumer_)); | 274 &consumer_)); |
282 base::RunLoop().RunUntilIdle(); | 275 base::RunLoop().RunUntilIdle(); |
283 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 276 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
284 EXPECT_EQ(0, consumer_.number_of_errors_); | 277 EXPECT_EQ(0, consumer_.number_of_errors_); |
285 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 278 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
286 ASSERT_TRUE(fetcher); | 279 ASSERT_TRUE(fetcher); |
287 | 280 |
288 request.reset(); | 281 request.reset(); |
289 | 282 |
290 fetcher->set_response_code(net::HTTP_OK); | 283 fetcher->set_response_code(net::HTTP_OK); |
291 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 284 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
292 fetcher->delegate()->OnURLFetchComplete(fetcher); | 285 fetcher->delegate()->OnURLFetchComplete(fetcher); |
293 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 286 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
294 EXPECT_EQ(0, consumer_.number_of_errors_); | 287 EXPECT_EQ(0, consumer_.number_of_errors_); |
295 } | 288 } |
296 | 289 |
297 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { | 290 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
298 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 291 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
299 account_id_, "refreshToken"); | 292 account_id_, "refreshToken"); |
300 | 293 |
301 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 294 std::unique_ptr<OAuth2TokenService::Request> request( |
302 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 295 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 296 &consumer_)); |
303 base::RunLoop().RunUntilIdle(); | 297 base::RunLoop().RunUntilIdle(); |
304 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 298 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
305 ASSERT_TRUE(fetcher); | 299 ASSERT_TRUE(fetcher); |
306 fetcher->set_response_code(net::HTTP_OK); | 300 fetcher->set_response_code(net::HTTP_OK); |
307 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 301 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
308 fetcher->delegate()->OnURLFetchComplete(fetcher); | 302 fetcher->delegate()->OnURLFetchComplete(fetcher); |
309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 303 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
310 EXPECT_EQ(0, consumer_.number_of_errors_); | 304 EXPECT_EQ(0, consumer_.number_of_errors_); |
311 EXPECT_EQ("token", consumer_.last_token_); | 305 EXPECT_EQ("token", consumer_.last_token_); |
312 | 306 |
313 request.reset(); | 307 request.reset(); |
314 | 308 |
315 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 309 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
316 EXPECT_EQ(0, consumer_.number_of_errors_); | 310 EXPECT_EQ(0, consumer_.number_of_errors_); |
317 EXPECT_EQ("token", consumer_.last_token_); | 311 EXPECT_EQ("token", consumer_.last_token_); |
318 } | 312 } |
319 | 313 |
320 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { | 314 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
321 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 315 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
322 account_id_, "refreshToken"); | 316 account_id_, "refreshToken"); |
323 | 317 |
324 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 318 std::unique_ptr<OAuth2TokenService::Request> request( |
325 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 319 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 320 &consumer_)); |
326 base::RunLoop().RunUntilIdle(); | 321 base::RunLoop().RunUntilIdle(); |
327 scoped_ptr<OAuth2TokenService::Request> request2( | 322 std::unique_ptr<OAuth2TokenService::Request> request2( |
328 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 323 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
329 &consumer_)); | 324 &consumer_)); |
330 base::RunLoop().RunUntilIdle(); | 325 base::RunLoop().RunUntilIdle(); |
331 | 326 |
332 request.reset(); | 327 request.reset(); |
333 | 328 |
334 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 329 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
335 ASSERT_TRUE(fetcher); | 330 ASSERT_TRUE(fetcher); |
336 fetcher->set_response_code(net::HTTP_OK); | 331 fetcher->set_response_code(net::HTTP_OK); |
337 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 332 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
338 fetcher->delegate()->OnURLFetchComplete(fetcher); | 333 fetcher->delegate()->OnURLFetchComplete(fetcher); |
339 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 334 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
340 EXPECT_EQ(0, consumer_.number_of_errors_); | 335 EXPECT_EQ(0, consumer_.number_of_errors_); |
341 } | 336 } |
342 | 337 |
343 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { | 338 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
344 // We have a valid refresh token; the first request is successful. | 339 // We have a valid refresh token; the first request is successful. |
345 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 340 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
346 account_id_, "refreshToken"); | 341 account_id_, "refreshToken"); |
347 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 342 std::unique_ptr<OAuth2TokenService::Request> request( |
348 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 343 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 344 &consumer_)); |
349 base::RunLoop().RunUntilIdle(); | 345 base::RunLoop().RunUntilIdle(); |
350 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 346 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
351 ASSERT_TRUE(fetcher); | 347 ASSERT_TRUE(fetcher); |
352 fetcher->set_response_code(net::HTTP_OK); | 348 fetcher->set_response_code(net::HTTP_OK); |
353 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 349 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
354 fetcher->delegate()->OnURLFetchComplete(fetcher); | 350 fetcher->delegate()->OnURLFetchComplete(fetcher); |
355 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 351 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
356 EXPECT_EQ(0, consumer_.number_of_errors_); | 352 EXPECT_EQ(0, consumer_.number_of_errors_); |
357 EXPECT_EQ("token", consumer_.last_token_); | 353 EXPECT_EQ("token", consumer_.last_token_); |
358 | 354 |
(...skipping 11 matching lines...) Expand all Loading... |
370 ChangedRefreshTokenDoesNotAffectInFlightRequests) { | 366 ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
371 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 367 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
372 account_id_, "first refreshToken"); | 368 account_id_, "first refreshToken"); |
373 OAuth2TokenService::ScopeSet scopes; | 369 OAuth2TokenService::ScopeSet scopes; |
374 scopes.insert("s1"); | 370 scopes.insert("s1"); |
375 scopes.insert("s2"); | 371 scopes.insert("s2"); |
376 OAuth2TokenService::ScopeSet scopes1; | 372 OAuth2TokenService::ScopeSet scopes1; |
377 scopes.insert("s3"); | 373 scopes.insert("s3"); |
378 scopes.insert("s4"); | 374 scopes.insert("s4"); |
379 | 375 |
380 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 376 std::unique_ptr<OAuth2TokenService::Request> request( |
381 account_id_, scopes, &consumer_)); | 377 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
382 base::RunLoop().RunUntilIdle(); | 378 base::RunLoop().RunUntilIdle(); |
383 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); | 379 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
384 ASSERT_TRUE(fetcher1); | 380 ASSERT_TRUE(fetcher1); |
385 | 381 |
386 // Note |request| is still pending when the refresh token changes. | 382 // Note |request| is still pending when the refresh token changes. |
387 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 383 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
388 account_id_, "second refreshToken"); | 384 account_id_, "second refreshToken"); |
389 | 385 |
390 // A 2nd request (using the new refresh token) that occurs and completes | 386 // A 2nd request (using the new refresh token) that occurs and completes |
391 // while the 1st request is in flight is successful. | 387 // while the 1st request is in flight is successful. |
392 TestingOAuth2TokenServiceConsumer consumer2; | 388 TestingOAuth2TokenServiceConsumer consumer2; |
393 scoped_ptr<OAuth2TokenService::Request> request2( | 389 std::unique_ptr<OAuth2TokenService::Request> request2( |
394 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2)); | 390 oauth2_service_->StartRequest(account_id_, scopes1, &consumer2)); |
395 base::RunLoop().RunUntilIdle(); | 391 base::RunLoop().RunUntilIdle(); |
396 | 392 |
397 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); | 393 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
398 fetcher2->set_response_code(net::HTTP_OK); | 394 fetcher2->set_response_code(net::HTTP_OK); |
399 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); | 395 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); |
400 fetcher2->delegate()->OnURLFetchComplete(fetcher2); | 396 fetcher2->delegate()->OnURLFetchComplete(fetcher2); |
401 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); | 397 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); |
402 EXPECT_EQ(0, consumer2.number_of_errors_); | 398 EXPECT_EQ(0, consumer2.number_of_errors_); |
403 EXPECT_EQ("second token", consumer2.last_token_); | 399 EXPECT_EQ("second token", consumer2.last_token_); |
404 | 400 |
405 fetcher1->set_response_code(net::HTTP_OK); | 401 fetcher1->set_response_code(net::HTTP_OK); |
406 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); | 402 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); |
407 fetcher1->delegate()->OnURLFetchComplete(fetcher1); | 403 fetcher1->delegate()->OnURLFetchComplete(fetcher1); |
408 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 404 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
409 EXPECT_EQ(0, consumer_.number_of_errors_); | 405 EXPECT_EQ(0, consumer_.number_of_errors_); |
410 EXPECT_EQ("first token", consumer_.last_token_); | 406 EXPECT_EQ("first token", consumer_.last_token_); |
411 } | 407 } |
412 | 408 |
413 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { | 409 TEST_F(OAuth2TokenServiceTest, ServiceShutDownBeforeFetchComplete) { |
414 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 410 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
415 account_id_, "refreshToken"); | 411 account_id_, "refreshToken"); |
416 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 412 std::unique_ptr<OAuth2TokenService::Request> request( |
417 account_id_, OAuth2TokenService::ScopeSet(), &consumer_)); | 413 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 414 &consumer_)); |
418 base::RunLoop().RunUntilIdle(); | 415 base::RunLoop().RunUntilIdle(); |
419 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 416 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
420 EXPECT_EQ(0, consumer_.number_of_errors_); | 417 EXPECT_EQ(0, consumer_.number_of_errors_); |
421 | 418 |
422 // The destructor should cancel all in-flight fetchers. | 419 // The destructor should cancel all in-flight fetchers. |
423 oauth2_service_.reset(NULL); | 420 oauth2_service_.reset(NULL); |
424 | 421 |
425 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 422 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
426 EXPECT_EQ(1, consumer_.number_of_errors_); | 423 EXPECT_EQ(1, consumer_.number_of_errors_); |
427 } | 424 } |
428 | 425 |
429 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { | 426 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
430 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 427 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
431 account_id_, "refreshToken"); | 428 account_id_, "refreshToken"); |
432 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), | 429 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get(), |
433 account_id_); | 430 account_id_); |
434 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 431 std::unique_ptr<OAuth2TokenService::Request> request( |
435 account_id_, OAuth2TokenService::ScopeSet(), &consumer)); | 432 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
| 433 &consumer)); |
436 base::RunLoop().RunUntilIdle(); | 434 base::RunLoop().RunUntilIdle(); |
437 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 435 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
438 EXPECT_EQ(0, consumer.number_of_errors_); | 436 EXPECT_EQ(0, consumer.number_of_errors_); |
439 | 437 |
440 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 438 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
441 ASSERT_TRUE(fetcher); | 439 ASSERT_TRUE(fetcher); |
442 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 440 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
443 fetcher->SetResponseString(std::string()); | 441 fetcher->SetResponseString(std::string()); |
444 fetcher->delegate()->OnURLFetchComplete(fetcher); | 442 fetcher->delegate()->OnURLFetchComplete(fetcher); |
445 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 443 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
446 EXPECT_EQ(1, consumer.number_of_errors_); | 444 EXPECT_EQ(1, consumer.number_of_errors_); |
447 | 445 |
448 fetcher = factory_.GetFetcherByID(0); | 446 fetcher = factory_.GetFetcherByID(0); |
449 ASSERT_TRUE(fetcher); | 447 ASSERT_TRUE(fetcher); |
450 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 448 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
451 fetcher->SetResponseString(std::string()); | 449 fetcher->SetResponseString(std::string()); |
452 fetcher->delegate()->OnURLFetchComplete(fetcher); | 450 fetcher->delegate()->OnURLFetchComplete(fetcher); |
453 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 451 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
454 EXPECT_EQ(2, consumer.number_of_errors_); | 452 EXPECT_EQ(2, consumer.number_of_errors_); |
455 } | 453 } |
456 | 454 |
457 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { | 455 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
458 OAuth2TokenService::ScopeSet scopes; | 456 OAuth2TokenService::ScopeSet scopes; |
459 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 457 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
460 account_id_, "refreshToken"); | 458 account_id_, "refreshToken"); |
461 | 459 |
462 // First request. | 460 // First request. |
463 scoped_ptr<OAuth2TokenService::Request> request( | 461 std::unique_ptr<OAuth2TokenService::Request> request( |
464 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 462 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
465 base::RunLoop().RunUntilIdle(); | 463 base::RunLoop().RunUntilIdle(); |
466 | 464 |
467 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 465 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
468 EXPECT_EQ(0, consumer_.number_of_errors_); | 466 EXPECT_EQ(0, consumer_.number_of_errors_); |
469 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 467 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
470 ASSERT_TRUE(fetcher); | 468 ASSERT_TRUE(fetcher); |
471 fetcher->set_response_code(net::HTTP_OK); | 469 fetcher->set_response_code(net::HTTP_OK); |
472 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 470 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
473 fetcher->delegate()->OnURLFetchComplete(fetcher); | 471 fetcher->delegate()->OnURLFetchComplete(fetcher); |
474 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 472 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
475 EXPECT_EQ(0, consumer_.number_of_errors_); | 473 EXPECT_EQ(0, consumer_.number_of_errors_); |
476 EXPECT_EQ("token", consumer_.last_token_); | 474 EXPECT_EQ("token", consumer_.last_token_); |
477 | 475 |
478 // Second request, should return the same token without needing a network | 476 // Second request, should return the same token without needing a network |
479 // request. | 477 // request. |
480 scoped_ptr<OAuth2TokenService::Request> request2( | 478 std::unique_ptr<OAuth2TokenService::Request> request2( |
481 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 479 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
482 base::RunLoop().RunUntilIdle(); | 480 base::RunLoop().RunUntilIdle(); |
483 | 481 |
484 // No new network fetcher. | 482 // No new network fetcher. |
485 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 483 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
486 EXPECT_EQ(0, consumer_.number_of_errors_); | 484 EXPECT_EQ(0, consumer_.number_of_errors_); |
487 EXPECT_EQ("token", consumer_.last_token_); | 485 EXPECT_EQ("token", consumer_.last_token_); |
488 | 486 |
489 // Invalidating the token should return a new token on the next request. | 487 // Invalidating the token should return a new token on the next request. |
490 oauth2_service_->InvalidateAccessToken(account_id_, scopes, | 488 oauth2_service_->InvalidateAccessToken(account_id_, scopes, |
491 consumer_.last_token_); | 489 consumer_.last_token_); |
492 scoped_ptr<OAuth2TokenService::Request> request3( | 490 std::unique_ptr<OAuth2TokenService::Request> request3( |
493 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); | 491 oauth2_service_->StartRequest(account_id_, scopes, &consumer_)); |
494 base::RunLoop().RunUntilIdle(); | 492 base::RunLoop().RunUntilIdle(); |
495 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 493 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
496 EXPECT_EQ(0, consumer_.number_of_errors_); | 494 EXPECT_EQ(0, consumer_.number_of_errors_); |
497 fetcher = factory_.GetFetcherByID(0); | 495 fetcher = factory_.GetFetcherByID(0); |
498 ASSERT_TRUE(fetcher); | 496 ASSERT_TRUE(fetcher); |
499 fetcher->set_response_code(net::HTTP_OK); | 497 fetcher->set_response_code(net::HTTP_OK); |
500 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 498 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
501 fetcher->delegate()->OnURLFetchComplete(fetcher); | 499 fetcher->delegate()->OnURLFetchComplete(fetcher); |
502 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 500 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
503 EXPECT_EQ(0, consumer_.number_of_errors_); | 501 EXPECT_EQ(0, consumer_.number_of_errors_); |
504 EXPECT_EQ("token2", consumer_.last_token_); | 502 EXPECT_EQ("token2", consumer_.last_token_); |
505 } | 503 } |
506 | 504 |
507 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { | 505 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
508 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 506 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
509 account_id_, "refreshToken"); | 507 account_id_, "refreshToken"); |
510 scoped_ptr<OAuth2TokenService::Request> request( | 508 std::unique_ptr<OAuth2TokenService::Request> request( |
511 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 509 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
512 &consumer_)); | 510 &consumer_)); |
513 | 511 |
514 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 512 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
515 "account_id_2", "refreshToken2"); | 513 "account_id_2", "refreshToken2"); |
516 scoped_ptr<OAuth2TokenService::Request> request2( | 514 std::unique_ptr<OAuth2TokenService::Request> request2( |
517 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), | 515 oauth2_service_->StartRequest(account_id_, OAuth2TokenService::ScopeSet(), |
518 &consumer_)); | 516 &consumer_)); |
519 | 517 |
520 base::RunLoop().RunUntilIdle(); | 518 base::RunLoop().RunUntilIdle(); |
521 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 519 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
522 EXPECT_EQ(0, consumer_.number_of_errors_); | 520 EXPECT_EQ(0, consumer_.number_of_errors_); |
523 | 521 |
524 oauth2_service_->CancelAllRequestsForTest(); | 522 oauth2_service_->CancelAllRequestsForTest(); |
525 | 523 |
526 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 524 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
527 EXPECT_EQ(2, consumer_.number_of_errors_); | 525 EXPECT_EQ(2, consumer_.number_of_errors_); |
528 } | 526 } |
529 | 527 |
530 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) { | 528 TEST_F(OAuth2TokenServiceTest, CancelRequestsForAccount) { |
531 OAuth2TokenService::ScopeSet scope_set_1; | 529 OAuth2TokenService::ScopeSet scope_set_1; |
532 scope_set_1.insert("scope1"); | 530 scope_set_1.insert("scope1"); |
533 scope_set_1.insert("scope2"); | 531 scope_set_1.insert("scope2"); |
534 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), | 532 OAuth2TokenService::ScopeSet scope_set_2(scope_set_1.begin(), |
535 scope_set_1.end()); | 533 scope_set_1.end()); |
536 scope_set_2.insert("scope3"); | 534 scope_set_2.insert("scope3"); |
537 | 535 |
538 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 536 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
539 account_id_, "refreshToken"); | 537 account_id_, "refreshToken"); |
540 scoped_ptr<OAuth2TokenService::Request> request1( | 538 std::unique_ptr<OAuth2TokenService::Request> request1( |
541 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); | 539 oauth2_service_->StartRequest(account_id_, scope_set_1, &consumer_)); |
542 scoped_ptr<OAuth2TokenService::Request> request2( | 540 std::unique_ptr<OAuth2TokenService::Request> request2( |
543 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); | 541 oauth2_service_->StartRequest(account_id_, scope_set_2, &consumer_)); |
544 | 542 |
545 std::string account_id_2("account_id_2"); | 543 std::string account_id_2("account_id_2"); |
546 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 544 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
547 account_id_2, "refreshToken2"); | 545 account_id_2, "refreshToken2"); |
548 scoped_ptr<OAuth2TokenService::Request> request3( | 546 std::unique_ptr<OAuth2TokenService::Request> request3( |
549 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_)); | 547 oauth2_service_->StartRequest(account_id_2, scope_set_1, &consumer_)); |
550 | 548 |
551 base::RunLoop().RunUntilIdle(); | 549 base::RunLoop().RunUntilIdle(); |
552 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 550 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
553 EXPECT_EQ(0, consumer_.number_of_errors_); | 551 EXPECT_EQ(0, consumer_.number_of_errors_); |
554 | 552 |
555 oauth2_service_->CancelRequestsForAccountForTest(account_id_); | 553 oauth2_service_->CancelRequestsForAccountForTest(account_id_); |
556 | 554 |
557 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 555 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
558 EXPECT_EQ(2, consumer_.number_of_errors_); | 556 EXPECT_EQ(2, consumer_.number_of_errors_); |
(...skipping 10 matching lines...) Expand all Loading... |
569 std::string client_id_2("client2"); | 567 std::string client_id_2("client2"); |
570 std::string client_secret_2("secret2"); | 568 std::string client_secret_2("secret2"); |
571 std::set<std::string> scope_set; | 569 std::set<std::string> scope_set; |
572 scope_set.insert("scope1"); | 570 scope_set.insert("scope1"); |
573 scope_set.insert("scope2"); | 571 scope_set.insert("scope2"); |
574 | 572 |
575 std::string refresh_token("refreshToken"); | 573 std::string refresh_token("refreshToken"); |
576 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 574 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
577 account_id_, refresh_token); | 575 account_id_, refresh_token); |
578 | 576 |
579 scoped_ptr<OAuth2TokenService::Request> request1( | 577 std::unique_ptr<OAuth2TokenService::Request> request1( |
580 oauth2_service_->StartRequestForClient(account_id_, | 578 oauth2_service_->StartRequestForClient( |
581 client_id_1, | 579 account_id_, client_id_1, client_secret_1, scope_set, &consumer_)); |
582 client_secret_1, | 580 std::unique_ptr<OAuth2TokenService::Request> request2( |
583 scope_set, | 581 oauth2_service_->StartRequestForClient( |
584 &consumer_)); | 582 account_id_, client_id_2, client_secret_2, scope_set, &consumer_)); |
585 scoped_ptr<OAuth2TokenService::Request> request2( | |
586 oauth2_service_->StartRequestForClient(account_id_, | |
587 client_id_2, | |
588 client_secret_2, | |
589 scope_set, | |
590 &consumer_)); | |
591 // Start a request that should be duplicate of |request1|. | 583 // Start a request that should be duplicate of |request1|. |
592 scoped_ptr<OAuth2TokenService::Request> request3( | 584 std::unique_ptr<OAuth2TokenService::Request> request3( |
593 oauth2_service_->StartRequestForClient(account_id_, | 585 oauth2_service_->StartRequestForClient( |
594 client_id_1, | 586 account_id_, client_id_1, client_secret_1, scope_set, &consumer_)); |
595 client_secret_1, | |
596 scope_set, | |
597 &consumer_)); | |
598 base::RunLoop().RunUntilIdle(); | 587 base::RunLoop().RunUntilIdle(); |
599 | 588 |
600 ASSERT_EQ(2U, | 589 ASSERT_EQ(2U, |
601 oauth2_service_->GetNumPendingRequestsForTesting( | 590 oauth2_service_->GetNumPendingRequestsForTesting( |
602 client_id_1, | 591 client_id_1, |
603 account_id_, | 592 account_id_, |
604 scope_set)); | 593 scope_set)); |
605 ASSERT_EQ(1U, | 594 ASSERT_EQ(1U, |
606 oauth2_service_->GetNumPendingRequestsForTesting( | 595 oauth2_service_->GetNumPendingRequestsForTesting( |
607 client_id_2, | 596 client_id_2, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 } | 629 } |
641 } | 630 } |
642 } | 631 } |
643 | 632 |
644 TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) { | 633 TEST_F(OAuth2TokenServiceTest, UpdateClearsCache) { |
645 std::string kEmail = "test@gmail.com"; | 634 std::string kEmail = "test@gmail.com"; |
646 std::set<std::string> scope_list; | 635 std::set<std::string> scope_list; |
647 scope_list.insert("scope"); | 636 scope_list.insert("scope"); |
648 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( | 637 oauth2_service_->GetFakeOAuth2TokenServiceDelegate()->UpdateCredentials( |
649 kEmail, "refreshToken"); | 638 kEmail, "refreshToken"); |
650 scoped_ptr<OAuth2TokenService::Request> request( | 639 std::unique_ptr<OAuth2TokenService::Request> request( |
651 oauth2_service_->StartRequest(kEmail, scope_list, &consumer_)); | 640 oauth2_service_->StartRequest(kEmail, scope_list, &consumer_)); |
652 base::RunLoop().RunUntilIdle(); | 641 base::RunLoop().RunUntilIdle(); |
653 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 642 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
654 ASSERT_TRUE(fetcher); | 643 ASSERT_TRUE(fetcher); |
655 fetcher->set_response_code(net::HTTP_OK); | 644 fetcher->set_response_code(net::HTTP_OK); |
656 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 645 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
657 fetcher->delegate()->OnURLFetchComplete(fetcher); | 646 fetcher->delegate()->OnURLFetchComplete(fetcher); |
658 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 647 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
659 EXPECT_EQ(0, consumer_.number_of_errors_); | 648 EXPECT_EQ(0, consumer_.number_of_errors_); |
660 EXPECT_EQ("token", consumer_.last_token_); | 649 EXPECT_EQ("token", consumer_.last_token_); |
(...skipping 10 matching lines...) Expand all Loading... |
671 fetcher = factory_.GetFetcherByID(0); | 660 fetcher = factory_.GetFetcherByID(0); |
672 // ASSERT_TRUE(fetcher); | 661 // ASSERT_TRUE(fetcher); |
673 fetcher->set_response_code(net::HTTP_OK); | 662 fetcher->set_response_code(net::HTTP_OK); |
674 fetcher->SetResponseString(GetValidTokenResponse("another token", 3600)); | 663 fetcher->SetResponseString(GetValidTokenResponse("another token", 3600)); |
675 fetcher->delegate()->OnURLFetchComplete(fetcher); | 664 fetcher->delegate()->OnURLFetchComplete(fetcher); |
676 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 665 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
677 EXPECT_EQ(0, consumer_.number_of_errors_); | 666 EXPECT_EQ(0, consumer_.number_of_errors_); |
678 EXPECT_EQ("another token", consumer_.last_token_); | 667 EXPECT_EQ("another token", consumer_.last_token_); |
679 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size()); | 668 EXPECT_EQ(1, (int)oauth2_service_->token_cache_.size()); |
680 } | 669 } |
OLD | NEW |