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

Side by Side Diff: components/signin/ios/browser/profile_oauth2_token_service_ios_unittest.mm

Issue 489113003: Remove MutableProfileOAuth2TokenService on iOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove DCHECK(getter). Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/run_loop.h" 5 #include "base/run_loop.h"
6 #include "components/signin/core/browser/profile_oauth2_token_service.h" 6 #include "components/signin/core/browser/profile_oauth2_token_service.h"
7 #include "components/signin/core/browser/test_signin_client.h" 7 #include "components/signin/core/browser/test_signin_client.h"
8 #include "components/signin/ios/browser/profile_oauth2_token_service_ios.h" 8 #include "components/signin/ios/browser/profile_oauth2_token_service_ios.h"
9 #include "google_apis/gaia/gaia_urls.h" 9 #include "google_apis/gaia/gaia_urls.h"
10 #include "google_apis/gaia/oauth2_token_service_test_util.h" 10 #include "google_apis/gaia/oauth2_token_service_test_util.h"
(...skipping 14 matching lines...) Expand all
25 access_token_success_(0), 25 access_token_success_(0),
26 access_token_failure_(0), 26 access_token_failure_(0),
27 last_access_token_error_(GoogleServiceAuthError::NONE) {} 27 last_access_token_error_(GoogleServiceAuthError::NONE) {}
28 28
29 virtual void SetUp() OVERRIDE { 29 virtual void SetUp() OVERRIDE {
30 factory_.SetFakeResponse(GaiaUrls::GetInstance()->oauth2_revoke_url(), 30 factory_.SetFakeResponse(GaiaUrls::GetInstance()->oauth2_revoke_url(),
31 "", 31 "",
32 net::HTTP_OK, 32 net::HTTP_OK,
33 net::URLRequestStatus::SUCCESS); 33 net::URLRequestStatus::SUCCESS);
34 fake_provider_ = client_.GetIOSProviderAsFake(); 34 fake_provider_ = client_.GetIOSProviderAsFake();
35 fake_provider_->set_using_shared_authentication(true);
36 oauth2_service_.Initialize(&client_); 35 oauth2_service_.Initialize(&client_);
37 oauth2_service_.AddObserver(this); 36 oauth2_service_.AddObserver(this);
38 } 37 }
39 38
40 virtual void TearDown() OVERRIDE { 39 virtual void TearDown() OVERRIDE {
41 oauth2_service_.RemoveObserver(this); 40 oauth2_service_.RemoveObserver(this);
42 oauth2_service_.Shutdown(); 41 oauth2_service_.Shutdown();
43 } 42 }
44 43
45 // OAuth2TokenService::Consumer implementation. 44 // OAuth2TokenService::Consumer implementation.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 oauth2_service_.StartRequest("account_id_1", scopes, this)); 189 oauth2_service_.StartRequest("account_id_1", scopes, this));
191 EXPECT_EQ(0, access_token_success_); 190 EXPECT_EQ(0, access_token_success_);
192 EXPECT_EQ(0, access_token_failure_); 191 EXPECT_EQ(0, access_token_failure_);
193 192
194 ResetObserverCounts(); 193 ResetObserverCounts();
195 fake_provider_->IssueAccessTokenErrorForAllRequests(); 194 fake_provider_->IssueAccessTokenErrorForAllRequests();
196 base::RunLoop().RunUntilIdle(); 195 base::RunLoop().RunUntilIdle();
197 EXPECT_EQ(0, access_token_success_); 196 EXPECT_EQ(0, access_token_success_);
198 EXPECT_EQ(1, access_token_failure_); 197 EXPECT_EQ(1, access_token_failure_);
199 } 198 }
200
201 TEST_F(ProfileOAuth2TokenServiceIOSTest, Migration) {
202 fake_provider_->set_using_shared_authentication(false);
203 oauth2_service_.LoadCredentials("account_id_1");
204 base::RunLoop().RunUntilIdle();
205
206 ResetObserverCounts();
207 oauth2_service_.UpdateCredentials("account_id_1", "pre_sso_refresh_token_1");
208 oauth2_service_.UpdateCredentials("account_id_2", "pre_sso_refresh_token_2");
209 EXPECT_EQ(2, token_available_count_);
210 EXPECT_EQ(0, tokens_loaded_count_);
211 EXPECT_EQ(0, token_revoked_count_);
212 EXPECT_EQ(2U, oauth2_service_.GetAccounts().size());
213 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
214 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_2"));
215 EXPECT_EQ("pre_sso_refresh_token_1",
216 oauth2_service_.GetRefreshTokenWhenNotUsingSharedAuthentication(
217 "account_id_1"));
218 EXPECT_EQ("pre_sso_refresh_token_2",
219 oauth2_service_.GetRefreshTokenWhenNotUsingSharedAuthentication(
220 "account_id_2"));
221
222 ResetObserverCounts();
223 oauth2_service_.StartUsingSharedAuthentication();
224 EXPECT_EQ(0, token_available_count_);
225 EXPECT_EQ(0, tokens_loaded_count_);
226 EXPECT_EQ(2, token_revoked_count_);
227 EXPECT_EQ(0U, oauth2_service_.GetAccounts().size());
228 EXPECT_FALSE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
229 EXPECT_FALSE(oauth2_service_.RefreshTokenIsAvailable("account_id_2"));
230
231 ResetObserverCounts();
232 fake_provider_->AddAccount("account_id_1");
233 oauth2_service_.ReloadCredentials();
234 EXPECT_EQ(1, token_available_count_);
235 EXPECT_EQ(0, tokens_loaded_count_);
236 EXPECT_EQ(0, token_revoked_count_);
237 EXPECT_EQ(1U, oauth2_service_.GetAccounts().size());
238 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
239 EXPECT_FALSE(oauth2_service_.RefreshTokenIsAvailable("account_id_2"));
240 }
241
242 TEST_F(ProfileOAuth2TokenServiceIOSTest, ForceInvalidGrantResponses) {
243 fake_provider_->set_using_shared_authentication(false);
244 oauth2_service_.LoadCredentials("account_id_1");
245 base::RunLoop().RunUntilIdle();
246 oauth2_service_.UpdateCredentials("account_id_1", "pre_sso_refresh_token_1");
247 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
248
249 // First call revokes the existing token and then updates the credentials
250 // with a fake token.
251 ResetObserverCounts();
252 oauth2_service_.ForceInvalidGrantResponses();
253 EXPECT_EQ(1, token_available_count_);
254 EXPECT_EQ(0, tokens_loaded_count_);
255 EXPECT_EQ(1, token_revoked_count_);
256 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
257
258 // Fetching access tokens fails with invalid grant responses.
259 OAuth2TokenService::ScopeSet scopes;
260 scopes.insert("scope");
261 scoped_ptr<OAuth2TokenService::Request> request(
262 oauth2_service_.StartRequest("account_id_1", scopes, this));
263 base::RunLoop().RunUntilIdle();
264 EXPECT_EQ(0, access_token_success_);
265 EXPECT_EQ(1, access_token_failure_);
266 EXPECT_EQ(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS,
267 last_access_token_error_.state());
268
269 // Second call to force invalid grant responses is ignored.
270 ResetObserverCounts();
271 oauth2_service_.ForceInvalidGrantResponses();
272 EXPECT_EQ(0, token_available_count_);
273 EXPECT_EQ(0, tokens_loaded_count_);
274 EXPECT_EQ(0, token_revoked_count_);
275 EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable("account_id_1"));
276 }
OLDNEW
« no previous file with comments | « components/signin/ios/browser/profile_oauth2_token_service_ios.mm ('k') | google_apis/gaia/oauth2_token_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698