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

Side by Side Diff: chrome/browser/signin/signin_tracker_unittest.cc

Issue 10335015: Treat SyncCredentialsLost as an auth error (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: git try Created 8 years, 7 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
« no previous file with comments | « chrome/browser/signin/signin_tracker.cc ('k') | chrome/browser/sync/profile_sync_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/signin/signin_tracker.h" 5 #include "chrome/browser/signin/signin_tracker.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 content::NotificationService::current()->Notify( 86 content::NotificationService::current()->Notify(
87 chrome::NOTIFICATION_GOOGLE_SIGNIN_FAILED, 87 chrome::NOTIFICATION_GOOGLE_SIGNIN_FAILED,
88 content::Source<Profile>(profile_.get()), 88 content::Source<Profile>(profile_.get()),
89 content::Details<const GoogleServiceAuthError>(&error)); 89 content::Details<const GoogleServiceAuthError>(&error));
90 } 90 }
91 91
92 TEST_F(SigninTrackerTest, GaiaSignInSucceeded) { 92 TEST_F(SigninTrackerTest, GaiaSignInSucceeded) {
93 // SIGNIN_SUCCEEDED notification should lead us to get a GaiCredentialsValid() 93 // SIGNIN_SUCCEEDED notification should lead us to get a GaiCredentialsValid()
94 // callback. 94 // callback.
95 EXPECT_CALL(observer_, GaiaCredentialsValid()); 95 EXPECT_CALL(observer_, GaiaCredentialsValid());
96 EXPECT_CALL(*mock_pss_, AreCredentialsAvailable()) 96 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn())
97 .WillRepeatedly(Return(false)); 97 .WillRepeatedly(Return(false));
98 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) 98 EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
99 .WillRepeatedly(Return(false)); 99 .WillRepeatedly(Return(false));
100 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); 100 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password");
101 content::NotificationService::current()->Notify( 101 content::NotificationService::current()->Notify(
102 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 102 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
103 content::Source<Profile>(profile_.get()), 103 content::Source<Profile>(profile_.get()),
104 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 104 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
105 } 105 }
106 106
107 static void ExpectSignedInSyncService(ProfileSyncServiceMock* sync_service, 107 static void ExpectSignedInSyncService(ProfileSyncServiceMock* sync_service,
108 MockTokenService* token_service, 108 MockTokenService* token_service,
109 const GoogleServiceAuthError& error) { 109 const GoogleServiceAuthError& error) {
110 if (token_service) { 110 if (token_service) {
111 EXPECT_CALL(*token_service, HasTokenForService(_)) 111 EXPECT_CALL(*token_service, HasTokenForService(_))
112 .WillRepeatedly(Return(true)); 112 .WillRepeatedly(Return(true));
113 } 113 }
114 EXPECT_CALL(*sync_service, AreCredentialsAvailable()).WillRepeatedly( 114 EXPECT_CALL(*sync_service, IsSyncEnabledAndLoggedIn()).WillRepeatedly(
115 Return(true));
116 EXPECT_CALL(*sync_service, IsSyncTokenAvailable()).WillRepeatedly(
115 Return(true)); 117 Return(true));
116 EXPECT_CALL(*sync_service, waiting_for_auth()).WillRepeatedly(Return(false)); 118 EXPECT_CALL(*sync_service, waiting_for_auth()).WillRepeatedly(Return(false));
117 EXPECT_CALL(*sync_service, GetAuthError()).WillRepeatedly(ReturnRef(error)); 119 EXPECT_CALL(*sync_service, GetAuthError()).WillRepeatedly(ReturnRef(error));
118 EXPECT_CALL(*sync_service, unrecoverable_error_detected()).WillRepeatedly( 120 EXPECT_CALL(*sync_service, unrecoverable_error_detected()).WillRepeatedly(
119 Return(false)); 121 Return(false));
120 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(true)); 122 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(true));
121 123
122 } 124 }
123 125
124 TEST_F(SigninTrackerTest, GaiaSigninWhenServicesAlreadyRunning) { 126 TEST_F(SigninTrackerTest, GaiaSigninWhenServicesAlreadyRunning) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 content::Source<TokenService>(mock_token_service_), 212 content::Source<TokenService>(mock_token_service_),
211 content::Details<const TokenService::TokenRequestFailedDetails>(&failed)); 213 content::Details<const TokenService::TokenRequestFailedDetails>(&failed));
212 } 214 }
213 215
214 TEST_F(SigninTrackerTest, NoGaiaSigninWhenServicesNotRunning) { 216 TEST_F(SigninTrackerTest, NoGaiaSigninWhenServicesNotRunning) {
215 // SIGNIN_SUCCEEDED notification should not result in a SigninSuccess() 217 // SIGNIN_SUCCEEDED notification should not result in a SigninSuccess()
216 // callback if we're not already signed in. 218 // callback if we're not already signed in.
217 EXPECT_CALL(observer_, GaiaCredentialsValid()); 219 EXPECT_CALL(observer_, GaiaCredentialsValid());
218 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) 220 EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
219 .WillRepeatedly(Return(true)); 221 .WillRepeatedly(Return(true));
220 EXPECT_CALL(*mock_pss_, AreCredentialsAvailable()).WillRepeatedly( 222 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly(
223 Return(false));
224 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly(
221 Return(false)); 225 Return(false));
222 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); 226 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password");
223 content::NotificationService::current()->Notify( 227 content::NotificationService::current()->Notify(
224 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 228 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
225 content::Source<Profile>(profile_.get()), 229 content::Source<Profile>(profile_.get()),
226 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 230 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
227 } 231 }
228 232
229 TEST_F(SigninTrackerTest, GaiaSigninAfterSyncStarts) { 233 TEST_F(SigninTrackerTest, GaiaSigninAfterSyncStarts) {
230 // Make sure that we don't get a SigninSuccess() callback until after the 234 // Make sure that we don't get a SigninSuccess() callback until after the
231 // sync service reports that it's signed in. 235 // sync service reports that it's signed in.
232 EXPECT_CALL(observer_, GaiaCredentialsValid()); 236 EXPECT_CALL(observer_, GaiaCredentialsValid());
233 EXPECT_CALL(*mock_pss_, AreCredentialsAvailable()).WillOnce( 237 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillOnce(
234 Return(false)); 238 Return(false));
235 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) 239 EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
236 .WillRepeatedly(Return(true)); 240 .WillRepeatedly(Return(true));
237 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); 241 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password");
238 content::NotificationService::current()->Notify( 242 content::NotificationService::current()->Notify(
239 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 243 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
240 content::Source<Profile>(profile_.get()), 244 content::Source<Profile>(profile_.get()),
241 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 245 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
242 Mock::VerifyAndClearExpectations(mock_pss_); 246 Mock::VerifyAndClearExpectations(mock_pss_);
243 // Mimic the sync engine getting credentials. 247 // Mimic the sync engine getting credentials.
244 EXPECT_CALL(observer_, SigninSuccess()); 248 EXPECT_CALL(observer_, SigninSuccess());
245 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); 249 GoogleServiceAuthError error(GoogleServiceAuthError::NONE);
246 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); 250 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error);
247 tracker_->OnStateChanged(); 251 tracker_->OnStateChanged();
248 } 252 }
249 253
250 TEST_F(SigninTrackerTest, SyncSigninError) { 254 TEST_F(SigninTrackerTest, SyncSigninError) {
251 // Make sure that we get a SigninFailed() callback if sync gets an error after 255 // Make sure that we get a SigninFailed() callback if sync gets an error after
252 // initializaiton. 256 // initializaiton.
253 EXPECT_CALL(observer_, GaiaCredentialsValid()); 257 EXPECT_CALL(observer_, GaiaCredentialsValid());
254 EXPECT_CALL(*mock_pss_, AreCredentialsAvailable()).WillRepeatedly( 258 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly(
259 Return(false));
260 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly(
255 Return(false)); 261 Return(false));
256 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) 262 EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
257 .WillRepeatedly(Return(true)); 263 .WillRepeatedly(Return(true));
258 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); 264 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password");
259 content::NotificationService::current()->Notify( 265 content::NotificationService::current()->Notify(
260 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 266 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
261 content::Source<Profile>(profile_.get()), 267 content::Source<Profile>(profile_.get()),
262 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 268 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
263 269
264 // Still waiting for auth, so sync state changes should be ignored. 270 // Still waiting for auth, so sync state changes should be ignored.
265 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(true)); 271 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(true));
266 tracker_->OnStateChanged(); 272 tracker_->OnStateChanged();
267 // Now mimic an auth error - this should cause us to fail (not waiting for 273 // Now mimic an auth error - this should cause us to fail (not waiting for
268 // auth, but still have no credentials). 274 // auth, but still have no credentials).
269 GoogleServiceAuthError error( 275 GoogleServiceAuthError error(
270 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); 276 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
271 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error)); 277 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error));
272 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(false)); 278 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(false));
273 EXPECT_CALL(observer_, SigninFailed(error)); 279 EXPECT_CALL(observer_, SigninFailed(error));
274 tracker_->OnStateChanged(); 280 tracker_->OnStateChanged();
275 } 281 }
276 282
277 // TODO(kochi) Add tests with initial state != WATIING_FOR_GAIA_VALIDATION. 283 // TODO(kochi) Add tests with initial state != WATIING_FOR_GAIA_VALIDATION.
OLDNEW
« no previous file with comments | « chrome/browser/signin/signin_tracker.cc ('k') | chrome/browser/sync/profile_sync_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698