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

Side by Side Diff: chrome/browser/chromeos/login/parallel_authenticator_unittest.cc

Issue 16998003: Update CrOS to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 (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/chromeos/login/parallel_authenticator.h" 5 #include "chrome/browser/chromeos/login/parallel_authenticator.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 227
228 TEST_F(ParallelAuthenticatorTest, OnLoginSuccess) { 228 TEST_F(ParallelAuthenticatorTest, OnLoginSuccess) {
229 EXPECT_CALL(consumer_, OnLoginSuccess(UserContext(username_, 229 EXPECT_CALL(consumer_, OnLoginSuccess(UserContext(username_,
230 password_, 230 password_,
231 std::string(), 231 std::string(),
232 username_hash_), 232 username_hash_),
233 false, false)) 233 false, false))
234 .Times(1) 234 .Times(1)
235 .RetiresOnSaturation(); 235 .RetiresOnSaturation();
236 236
237 SetAttemptState(auth_, state_.release()); 237 SetAttemptState(auth_.get(), state_.release());
238 auth_->OnLoginSuccess(false); 238 auth_->OnLoginSuccess(false);
239 } 239 }
240 240
241 TEST_F(ParallelAuthenticatorTest, OnPasswordChangeDetected) { 241 TEST_F(ParallelAuthenticatorTest, OnPasswordChangeDetected) {
242 EXPECT_CALL(consumer_, OnPasswordChangeDetected()) 242 EXPECT_CALL(consumer_, OnPasswordChangeDetected())
243 .Times(1) 243 .Times(1)
244 .RetiresOnSaturation(); 244 .RetiresOnSaturation();
245 SetAttemptState(auth_, state_.release()); 245 SetAttemptState(auth_.get(), state_.release());
246 auth_->OnPasswordChangeDetected(); 246 auth_->OnPasswordChangeDetected();
247 } 247 }
248 248
249 TEST_F(ParallelAuthenticatorTest, ResolveNothingDone) { 249 TEST_F(ParallelAuthenticatorTest, ResolveNothingDone) {
250 EXPECT_EQ(ParallelAuthenticator::CONTINUE, 250 EXPECT_EQ(ParallelAuthenticator::CONTINUE,
251 SetAndResolveState(auth_, state_.release())); 251 SetAndResolveState(auth_.get(), state_.release()));
252 } 252 }
253 253
254 TEST_F(ParallelAuthenticatorTest, ResolvePossiblePwChange) { 254 TEST_F(ParallelAuthenticatorTest, ResolvePossiblePwChange) {
255 // Set a fake online attempt so that we return intermediate cryptohome state. 255 // Set a fake online attempt so that we return intermediate cryptohome state.
256 FakeOnlineAttempt(); 256 FakeOnlineAttempt();
257 257
258 // Set up state as though a cryptohome mount attempt has occurred 258 // Set up state as though a cryptohome mount attempt has occurred
259 // and been rejected. 259 // and been rejected.
260 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE); 260 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
261 261
262 EXPECT_EQ(ParallelAuthenticator::POSSIBLE_PW_CHANGE, 262 EXPECT_EQ(ParallelAuthenticator::POSSIBLE_PW_CHANGE,
263 SetAndResolveState(auth_, state_.release())); 263 SetAndResolveState(auth_.get(), state_.release()));
264 } 264 }
265 265
266 TEST_F(ParallelAuthenticatorTest, ResolvePossiblePwChangeToFailedMount) { 266 TEST_F(ParallelAuthenticatorTest, ResolvePossiblePwChangeToFailedMount) {
267 // Set up state as though a cryptohome mount attempt has occurred 267 // Set up state as though a cryptohome mount attempt has occurred
268 // and been rejected. 268 // and been rejected.
269 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE); 269 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
270 270
271 // When there is no online attempt and online results, POSSIBLE_PW_CHANGE 271 // When there is no online attempt and online results, POSSIBLE_PW_CHANGE
272 EXPECT_EQ(ParallelAuthenticator::FAILED_MOUNT, 272 EXPECT_EQ(ParallelAuthenticator::FAILED_MOUNT,
273 SetAndResolveState(auth_, state_.release())); 273 SetAndResolveState(auth_.get(), state_.release()));
274 } 274 }
275 275
276 TEST_F(ParallelAuthenticatorTest, ResolveNeedOldPw) { 276 TEST_F(ParallelAuthenticatorTest, ResolveNeedOldPw) {
277 // Set up state as though a cryptohome mount attempt has occurred 277 // Set up state as though a cryptohome mount attempt has occurred
278 // and been rejected because of unmatched key; additionally, 278 // and been rejected because of unmatched key; additionally,
279 // an online auth attempt has completed successfully. 279 // an online auth attempt has completed successfully.
280 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE); 280 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
281 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 281 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
282 282
283 EXPECT_EQ(ParallelAuthenticator::NEED_OLD_PW, 283 EXPECT_EQ(ParallelAuthenticator::NEED_OLD_PW,
284 SetAndResolveState(auth_, state_.release())); 284 SetAndResolveState(auth_.get(), state_.release()));
285 } 285 }
286 286
287 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededDirectFailedMount) { 287 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededDirectFailedMount) {
288 // Set up state as though a cryptohome mount attempt has occurred 288 // Set up state as though a cryptohome mount attempt has occurred
289 // and succeeded but we are in safe mode and the current user is not owner. 289 // and succeeded but we are in safe mode and the current user is not owner.
290 // This is a high level test to verify the proper transitioning in this mode 290 // This is a high level test to verify the proper transitioning in this mode
291 // only. It is not testing that we properly verify that the user is an owner 291 // only. It is not testing that we properly verify that the user is an owner
292 // or that we really are in "safe-mode". 292 // or that we really are in "safe-mode".
293 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 293 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
294 SetOwnerState(true, false); 294 SetOwnerState(true, false);
295 295
296 EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED, 296 EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED,
297 SetAndResolveState(auth_, state_.release())); 297 SetAndResolveState(auth_.get(), state_.release()));
298 } 298 }
299 299
300 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededMount) { 300 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededMount) {
301 // Set up state as though a cryptohome mount attempt has occurred 301 // Set up state as though a cryptohome mount attempt has occurred
302 // and succeeded but we are in safe mode and the current user is not owner. 302 // and succeeded but we are in safe mode and the current user is not owner.
303 // This test will check that the "safe-mode" policy is not set and will let 303 // This test will check that the "safe-mode" policy is not set and will let
304 // the mount finish successfully. 304 // the mount finish successfully.
305 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 305 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
306 SetOwnerState(false, false); 306 SetOwnerState(false, false);
307 // and test that the mount has succeeded. 307 // and test that the mount has succeeded.
308 state_.reset(new TestAttemptState(UserContext(username_, 308 state_.reset(new TestAttemptState(UserContext(username_,
309 password_, 309 password_,
310 std::string()), 310 std::string()),
311 hash_ascii_, 311 hash_ascii_,
312 "", 312 "",
313 "", 313 "",
314 User::USER_TYPE_REGULAR, 314 User::USER_TYPE_REGULAR,
315 false)); 315 false));
316 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 316 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
317 EXPECT_EQ(ParallelAuthenticator::OFFLINE_LOGIN, 317 EXPECT_EQ(ParallelAuthenticator::OFFLINE_LOGIN,
318 SetAndResolveState(auth_, state_.release())); 318 SetAndResolveState(auth_.get(), state_.release()));
319 } 319 }
320 320
321 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededFailedMount) { 321 TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededFailedMount) {
322 FailOnLoginSuccess(); // Set failing on success as the default... 322 FailOnLoginSuccess(); // Set failing on success as the default...
323 LoginFailure failure = LoginFailure(LoginFailure::OWNER_REQUIRED); 323 LoginFailure failure = LoginFailure(LoginFailure::OWNER_REQUIRED);
324 ExpectLoginFailure(failure); 324 ExpectLoginFailure(failure);
325 325
326 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager = 326 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager =
327 new MockDBusThreadManagerWithoutGMock; 327 new MockDBusThreadManagerWithoutGMock;
328 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); 328 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager);
(...skipping 10 matching lines...) Expand all
339 // Remove the real DeviceSettingsProvider and replace it with a stub. 339 // Remove the real DeviceSettingsProvider and replace it with a stub.
340 device_settings_provider = 340 device_settings_provider =
341 CrosSettings::Get()->GetProvider(chromeos::kReportDeviceVersionInfo); 341 CrosSettings::Get()->GetProvider(chromeos::kReportDeviceVersionInfo);
342 EXPECT_TRUE(device_settings_provider != NULL); 342 EXPECT_TRUE(device_settings_provider != NULL);
343 EXPECT_TRUE( 343 EXPECT_TRUE(
344 CrosSettings::Get()->RemoveSettingsProvider(device_settings_provider)); 344 CrosSettings::Get()->RemoveSettingsProvider(device_settings_provider));
345 CrosSettings::Get()->AddSettingsProvider(&stub_settings_provider); 345 CrosSettings::Get()->AddSettingsProvider(&stub_settings_provider);
346 CrosSettings::Get()->SetBoolean(kPolicyMissingMitigationMode, true); 346 CrosSettings::Get()->SetBoolean(kPolicyMissingMitigationMode, true);
347 347
348 EXPECT_EQ(ParallelAuthenticator::CONTINUE, 348 EXPECT_EQ(ParallelAuthenticator::CONTINUE,
349 SetAndResolveState(auth_, state_.release())); 349 SetAndResolveState(auth_.get(), state_.release()));
350 // Let the owner verification run. 350 // Let the owner verification run.
351 device_settings_test_helper_.Flush(); 351 device_settings_test_helper_.Flush();
352 // and test that the mount has succeeded. 352 // and test that the mount has succeeded.
353 state_.reset(new TestAttemptState(UserContext(username_, 353 state_.reset(new TestAttemptState(UserContext(username_,
354 password_, 354 password_,
355 std::string()), 355 std::string()),
356 hash_ascii_, 356 hash_ascii_,
357 "", 357 "",
358 "", 358 "",
359 User::USER_TYPE_REGULAR, 359 User::USER_TYPE_REGULAR,
360 false)); 360 false));
361 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 361 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
362 EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED, 362 EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED,
363 SetAndResolveState(auth_, state_.release())); 363 SetAndResolveState(auth_.get(), state_.release()));
364 364
365 EXPECT_TRUE( 365 EXPECT_TRUE(
366 CrosSettings::Get()->RemoveSettingsProvider(&stub_settings_provider)); 366 CrosSettings::Get()->RemoveSettingsProvider(&stub_settings_provider));
367 CrosSettings::Get()->AddSettingsProvider(device_settings_provider); 367 CrosSettings::Get()->AddSettingsProvider(device_settings_provider);
368 DBusThreadManager::Get()->Shutdown(); 368 DBusThreadManager::Get()->Shutdown();
369 } 369 }
370 370
371 TEST_F(ParallelAuthenticatorTest, DriveFailedMount) { 371 TEST_F(ParallelAuthenticatorTest, DriveFailedMount) {
372 FailOnLoginSuccess(); 372 FailOnLoginSuccess();
373 ExpectLoginFailure(LoginFailure(LoginFailure::COULD_NOT_MOUNT_CRYPTOHOME)); 373 ExpectLoginFailure(LoginFailure(LoginFailure::COULD_NOT_MOUNT_CRYPTOHOME));
374 374
375 // Set up state as though a cryptohome mount attempt has occurred 375 // Set up state as though a cryptohome mount attempt has occurred
376 // and failed. 376 // and failed.
377 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_NONE); 377 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_NONE);
378 SetAttemptState(auth_, state_.release()); 378 SetAttemptState(auth_.get(), state_.release());
379 379
380 RunResolve(auth_.get()); 380 RunResolve(auth_.get());
381 } 381 }
382 382
383 TEST_F(ParallelAuthenticatorTest, DriveGuestLogin) { 383 TEST_F(ParallelAuthenticatorTest, DriveGuestLogin) {
384 ExpectGuestLoginSuccess(); 384 ExpectGuestLoginSuccess();
385 FailOnLoginFailure(); 385 FailOnLoginFailure();
386 386
387 // Set up mock cryptohome library to respond as though a tmpfs mount 387 // Set up mock cryptohome library to respond as though a tmpfs mount
388 // attempt has occurred and succeeded. 388 // attempt has occurred and succeeded.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 .RetiresOnSaturation(); 456 .RetiresOnSaturation();
457 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_, 457 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
458 cryptohome::CREATE_IF_MISSING, _)) 458 cryptohome::CREATE_IF_MISSING, _))
459 .Times(1) 459 .Times(1)
460 .RetiresOnSaturation(); 460 .RetiresOnSaturation();
461 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _)) 461 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
462 .Times(1) 462 .Times(1)
463 .RetiresOnSaturation(); 463 .RetiresOnSaturation();
464 464
465 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 465 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
466 SetAttemptState(auth_, state_.release()); 466 SetAttemptState(auth_.get(), state_.release());
467 467
468 auth_->ResyncEncryptedData(); 468 auth_->ResyncEncryptedData();
469 message_loop_.Run(); 469 message_loop_.Run();
470 } 470 }
471 471
472 TEST_F(ParallelAuthenticatorTest, DriveResyncFail) { 472 TEST_F(ParallelAuthenticatorTest, DriveResyncFail) {
473 FailOnLoginSuccess(); 473 FailOnLoginSuccess();
474 ExpectLoginFailure(LoginFailure(LoginFailure::DATA_REMOVAL_FAILED)); 474 ExpectLoginFailure(LoginFailure(LoginFailure::DATA_REMOVAL_FAILED));
475 475
476 // Set up mock cryptohome library to fail a cryptohome remove attempt. 476 // Set up mock cryptohome library to fail a cryptohome remove attempt.
477 mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_NONE); 477 mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_NONE);
478 EXPECT_CALL(*mock_caller_, AsyncRemove(username_, _)) 478 EXPECT_CALL(*mock_caller_, AsyncRemove(username_, _))
479 .Times(1) 479 .Times(1)
480 .RetiresOnSaturation(); 480 .RetiresOnSaturation();
481 481
482 SetAttemptState(auth_, state_.release()); 482 SetAttemptState(auth_.get(), state_.release());
483 483
484 auth_->ResyncEncryptedData(); 484 auth_->ResyncEncryptedData();
485 message_loop_.Run(); 485 message_loop_.Run();
486 } 486 }
487 487
488 TEST_F(ParallelAuthenticatorTest, DriveRequestOldPassword) { 488 TEST_F(ParallelAuthenticatorTest, DriveRequestOldPassword) {
489 FailOnLoginSuccess(); 489 FailOnLoginSuccess();
490 ExpectPasswordChange(); 490 ExpectPasswordChange();
491 491
492 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE); 492 state_->PresetCryptohomeStatus(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
493 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 493 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
494 SetAttemptState(auth_, state_.release()); 494 SetAttemptState(auth_.get(), state_.release());
495 495
496 RunResolve(auth_.get()); 496 RunResolve(auth_.get());
497 } 497 }
498 498
499 TEST_F(ParallelAuthenticatorTest, DriveDataRecover) { 499 TEST_F(ParallelAuthenticatorTest, DriveDataRecover) {
500 ExpectLoginSuccess(username_, 500 ExpectLoginSuccess(username_,
501 password_, 501 password_,
502 cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername, 502 cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername,
503 false); 503 false);
504 FailOnLoginFailure(); 504 FailOnLoginFailure();
505 505
506 // Set up mock cryptohome library to respond successfully to a key migration. 506 // Set up mock cryptohome library to respond successfully to a key migration.
507 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE); 507 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
508 EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _)) 508 EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _))
509 .Times(1) 509 .Times(1)
510 .RetiresOnSaturation(); 510 .RetiresOnSaturation();
511 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_, 511 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
512 cryptohome::MOUNT_FLAGS_NONE, _)) 512 cryptohome::MOUNT_FLAGS_NONE, _))
513 .Times(1) 513 .Times(1)
514 .RetiresOnSaturation(); 514 .RetiresOnSaturation();
515 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _)) 515 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
516 .Times(1) 516 .Times(1)
517 .RetiresOnSaturation(); 517 .RetiresOnSaturation();
518 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt()) 518 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt())
519 .WillOnce(Return(std::string())) 519 .WillOnce(Return(std::string()))
520 .RetiresOnSaturation(); 520 .RetiresOnSaturation();
521 521
522 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 522 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
523 SetAttemptState(auth_, state_.release()); 523 SetAttemptState(auth_.get(), state_.release());
524 524
525 auth_->RecoverEncryptedData(std::string()); 525 auth_->RecoverEncryptedData(std::string());
526 message_loop_.Run(); 526 message_loop_.Run();
527 } 527 }
528 528
529 TEST_F(ParallelAuthenticatorTest, DriveDataRecoverButFail) { 529 TEST_F(ParallelAuthenticatorTest, DriveDataRecoverButFail) {
530 FailOnLoginSuccess(); 530 FailOnLoginSuccess();
531 ExpectPasswordChange(); 531 ExpectPasswordChange();
532 532
533 // Set up mock cryptohome library to fail a key migration attempt, 533 // Set up mock cryptohome library to fail a key migration attempt,
534 // asserting that the wrong password was used. 534 // asserting that the wrong password was used.
535 mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_KEY_FAILURE); 535 mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
536 EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _)) 536 EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _))
537 .Times(1) 537 .Times(1)
538 .RetiresOnSaturation(); 538 .RetiresOnSaturation();
539 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt()) 539 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt())
540 .WillOnce(Return(std::string())) 540 .WillOnce(Return(std::string()))
541 .RetiresOnSaturation(); 541 .RetiresOnSaturation();
542 542
543 SetAttemptState(auth_, state_.release()); 543 SetAttemptState(auth_.get(), state_.release());
544 544
545 auth_->RecoverEncryptedData(std::string()); 545 auth_->RecoverEncryptedData(std::string());
546 message_loop_.Run(); 546 message_loop_.Run();
547 } 547 }
548 548
549 TEST_F(ParallelAuthenticatorTest, ResolveNoMount) { 549 TEST_F(ParallelAuthenticatorTest, ResolveNoMount) {
550 // Set a fake online attempt so that we return intermediate cryptohome state. 550 // Set a fake online attempt so that we return intermediate cryptohome state.
551 FakeOnlineAttempt(); 551 FakeOnlineAttempt();
552 552
553 // Set up state as though a cryptohome mount attempt has occurred 553 // Set up state as though a cryptohome mount attempt has occurred
554 // and been rejected because the user doesn't exist. 554 // and been rejected because the user doesn't exist.
555 state_->PresetCryptohomeStatus(false, 555 state_->PresetCryptohomeStatus(false,
556 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST); 556 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST);
557 557
558 EXPECT_EQ(ParallelAuthenticator::NO_MOUNT, 558 EXPECT_EQ(ParallelAuthenticator::NO_MOUNT,
559 SetAndResolveState(auth_, state_.release())); 559 SetAndResolveState(auth_.get(), state_.release()));
560 } 560 }
561 561
562 TEST_F(ParallelAuthenticatorTest, ResolveNoMountToFailedMount) { 562 TEST_F(ParallelAuthenticatorTest, ResolveNoMountToFailedMount) {
563 // Set up state as though a cryptohome mount attempt has occurred 563 // Set up state as though a cryptohome mount attempt has occurred
564 // and been rejected because the user doesn't exist. 564 // and been rejected because the user doesn't exist.
565 state_->PresetCryptohomeStatus(false, 565 state_->PresetCryptohomeStatus(false,
566 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST); 566 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST);
567 567
568 // When there is no online attempt and online results, NO_MOUNT will be 568 // When there is no online attempt and online results, NO_MOUNT will be
569 // resolved to FAILED_MOUNT. 569 // resolved to FAILED_MOUNT.
570 EXPECT_EQ(ParallelAuthenticator::FAILED_MOUNT, 570 EXPECT_EQ(ParallelAuthenticator::FAILED_MOUNT,
571 SetAndResolveState(auth_, state_.release())); 571 SetAndResolveState(auth_.get(), state_.release()));
572 } 572 }
573 573
574 TEST_F(ParallelAuthenticatorTest, ResolveCreateNew) { 574 TEST_F(ParallelAuthenticatorTest, ResolveCreateNew) {
575 // Set up state as though a cryptohome mount attempt has occurred 575 // Set up state as though a cryptohome mount attempt has occurred
576 // and been rejected because the user doesn't exist; additionally, 576 // and been rejected because the user doesn't exist; additionally,
577 // an online auth attempt has completed successfully. 577 // an online auth attempt has completed successfully.
578 state_->PresetCryptohomeStatus(false, 578 state_->PresetCryptohomeStatus(false,
579 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST); 579 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST);
580 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 580 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
581 581
582 EXPECT_EQ(ParallelAuthenticator::CREATE_NEW, 582 EXPECT_EQ(ParallelAuthenticator::CREATE_NEW,
583 SetAndResolveState(auth_, state_.release())); 583 SetAndResolveState(auth_.get(), state_.release()));
584 } 584 }
585 585
586 TEST_F(ParallelAuthenticatorTest, DriveCreateForNewUser) { 586 TEST_F(ParallelAuthenticatorTest, DriveCreateForNewUser) {
587 ExpectLoginSuccess(username_, 587 ExpectLoginSuccess(username_,
588 password_, 588 password_,
589 cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername, 589 cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername,
590 false); 590 false);
591 FailOnLoginFailure(); 591 FailOnLoginFailure();
592 592
593 // Set up mock cryptohome library to respond successfully to a cryptohome 593 // Set up mock cryptohome library to respond successfully to a cryptohome
594 // create attempt (indicated by the |CREATE_IF_MISSING| flag to AsyncMount). 594 // create attempt (indicated by the |CREATE_IF_MISSING| flag to AsyncMount).
595 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE); 595 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
596 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_, 596 EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
597 cryptohome::CREATE_IF_MISSING, _)) 597 cryptohome::CREATE_IF_MISSING, _))
598 .Times(1) 598 .Times(1)
599 .RetiresOnSaturation(); 599 .RetiresOnSaturation();
600 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _)) 600 EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
601 .Times(1) 601 .Times(1)
602 .RetiresOnSaturation(); 602 .RetiresOnSaturation();
603 603
604 // Set up state as though a cryptohome mount attempt has occurred 604 // Set up state as though a cryptohome mount attempt has occurred
605 // and been rejected because the user doesn't exist; additionally, 605 // and been rejected because the user doesn't exist; additionally,
606 // an online auth attempt has completed successfully. 606 // an online auth attempt has completed successfully.
607 state_->PresetCryptohomeStatus(false, 607 state_->PresetCryptohomeStatus(false,
608 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST); 608 cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST);
609 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 609 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
610 SetAttemptState(auth_, state_.release()); 610 SetAttemptState(auth_.get(), state_.release());
611 611
612 RunResolve(auth_.get()); 612 RunResolve(auth_.get());
613 } 613 }
614 614
615 TEST_F(ParallelAuthenticatorTest, DriveOfflineLogin) { 615 TEST_F(ParallelAuthenticatorTest, DriveOfflineLogin) {
616 ExpectLoginSuccess(username_, password_, username_hash_, false); 616 ExpectLoginSuccess(username_, password_, username_hash_, false);
617 FailOnLoginFailure(); 617 FailOnLoginFailure();
618 618
619 // Set up state as though a cryptohome mount attempt has occurred and 619 // Set up state as though a cryptohome mount attempt has occurred and
620 // succeeded. 620 // succeeded.
621 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 621 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
622 GoogleServiceAuthError error = 622 GoogleServiceAuthError error =
623 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET); 623 GoogleServiceAuthError::FromConnectionError(net::ERR_CONNECTION_RESET);
624 state_->PresetOnlineLoginStatus(LoginFailure::FromNetworkAuthFailure(error)); 624 state_->PresetOnlineLoginStatus(LoginFailure::FromNetworkAuthFailure(error));
625 SetAttemptState(auth_, state_.release()); 625 SetAttemptState(auth_.get(), state_.release());
626 626
627 RunResolve(auth_.get()); 627 RunResolve(auth_.get());
628 } 628 }
629 629
630 TEST_F(ParallelAuthenticatorTest, DriveOfflineLoginDelayedOnline) { 630 TEST_F(ParallelAuthenticatorTest, DriveOfflineLoginDelayedOnline) {
631 ExpectLoginSuccess(username_, password_, username_hash_, true); 631 ExpectLoginSuccess(username_, password_, username_hash_, true);
632 FailOnLoginFailure(); 632 FailOnLoginFailure();
633 633
634 // Set up state as though a cryptohome mount attempt has occurred and 634 // Set up state as though a cryptohome mount attempt has occurred and
635 // succeeded. 635 // succeeded.
636 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 636 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
637 // state_ is released further down. 637 // state_ is released further down.
638 SetAttemptState(auth_, state_.get()); 638 SetAttemptState(auth_.get(), state_.get());
639 RunResolve(auth_.get()); 639 RunResolve(auth_.get());
640 640
641 // Offline login has completed, so now we "complete" the online request. 641 // Offline login has completed, so now we "complete" the online request.
642 GoogleServiceAuthError error( 642 GoogleServiceAuthError error(
643 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); 643 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
644 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error); 644 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error);
645 state_.release()->PresetOnlineLoginStatus(failure); 645 state_.release()->PresetOnlineLoginStatus(failure);
646 ExpectLoginFailure(failure); 646 ExpectLoginFailure(failure);
647 647
648 RunResolve(auth_.get()); 648 RunResolve(auth_.get());
(...skipping 12 matching lines...) Expand all
661 .Times(1) 661 .Times(1)
662 .RetiresOnSaturation(); 662 .RetiresOnSaturation();
663 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt()) 663 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt())
664 .WillOnce(Return(std::string())) 664 .WillOnce(Return(std::string()))
665 .RetiresOnSaturation(); 665 .RetiresOnSaturation();
666 666
667 // Set up state as though a cryptohome mount attempt has occurred and 667 // Set up state as though a cryptohome mount attempt has occurred and
668 // succeeded; also, an online request that never made it. 668 // succeeded; also, an online request that never made it.
669 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 669 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
670 // state_ is released further down. 670 // state_ is released further down.
671 SetAttemptState(auth_, state_.get()); 671 SetAttemptState(auth_.get(), state_.get());
672 RunResolve(auth_.get()); 672 RunResolve(auth_.get());
673 673
674 // Offline login has completed, so now we "complete" the online request. 674 // Offline login has completed, so now we "complete" the online request.
675 GoogleServiceAuthError error( 675 GoogleServiceAuthError error(
676 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); 676 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
677 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error); 677 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error);
678 state_.release()->PresetOnlineLoginStatus(failure); 678 state_.release()->PresetOnlineLoginStatus(failure);
679 ExpectLoginFailure(failure); 679 ExpectLoginFailure(failure);
680 680
681 RunResolve(auth_.get()); 681 RunResolve(auth_.get());
(...skipping 18 matching lines...) Expand all
700 ExpectLoginSuccess(username_, password_, username_hash_, true); 700 ExpectLoginSuccess(username_, password_, username_hash_, true);
701 FailOnLoginFailure(); 701 FailOnLoginFailure();
702 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt()) 702 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt())
703 .WillOnce(Return(std::string())) 703 .WillOnce(Return(std::string()))
704 .RetiresOnSaturation(); 704 .RetiresOnSaturation();
705 705
706 // Set up state as though a cryptohome mount attempt has occurred and 706 // Set up state as though a cryptohome mount attempt has occurred and
707 // succeeded; also, an online request that never made it. 707 // succeeded; also, an online request that never made it.
708 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 708 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
709 // state_ is released further down. 709 // state_ is released further down.
710 SetAttemptState(auth_, state_.get()); 710 SetAttemptState(auth_.get(), state_.get());
711 RunResolve(auth_.get()); 711 RunResolve(auth_.get());
712 712
713 // Offline login has completed, so now we "complete" the online request. 713 // Offline login has completed, so now we "complete" the online request.
714 GoogleServiceAuthError error( 714 GoogleServiceAuthError error(
715 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); 715 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
716 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error); 716 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error);
717 state_.release()->PresetOnlineLoginStatus(failure); 717 state_.release()->PresetOnlineLoginStatus(failure);
718 ExpectLoginFailure(failure); 718 ExpectLoginFailure(failure);
719 719
720 RunResolve(auth_.get()); 720 RunResolve(auth_.get());
(...skipping 20 matching lines...) Expand all
741 } 741 }
742 742
743 TEST_F(ParallelAuthenticatorTest, DriveOnlineLogin) { 743 TEST_F(ParallelAuthenticatorTest, DriveOnlineLogin) {
744 ExpectLoginSuccess(username_, password_, username_hash_, false); 744 ExpectLoginSuccess(username_, password_, username_hash_, false);
745 FailOnLoginFailure(); 745 FailOnLoginFailure();
746 746
747 // Set up state as though a cryptohome mount attempt has occurred and 747 // Set up state as though a cryptohome mount attempt has occurred and
748 // succeeded. 748 // succeeded.
749 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 749 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
750 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone()); 750 state_->PresetOnlineLoginStatus(LoginFailure::LoginFailureNone());
751 SetAttemptState(auth_, state_.release()); 751 SetAttemptState(auth_.get(), state_.release());
752 752
753 RunResolve(auth_.get()); 753 RunResolve(auth_.get());
754 } 754 }
755 755
756 // http://crbug.com/106538 756 // http://crbug.com/106538
757 TEST_F(ParallelAuthenticatorTest, DISABLED_DriveNeedNewPassword) { 757 TEST_F(ParallelAuthenticatorTest, DISABLED_DriveNeedNewPassword) {
758 FailOnLoginSuccess(); // Set failing on success as the default... 758 FailOnLoginSuccess(); // Set failing on success as the default...
759 // ...but expect ONE successful login first. 759 // ...but expect ONE successful login first.
760 ExpectLoginSuccess(username_, password_, username_hash_, true); 760 ExpectLoginSuccess(username_, password_, username_hash_, true);
761 GoogleServiceAuthError error( 761 GoogleServiceAuthError error(
762 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); 762 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
763 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error); 763 LoginFailure failure = LoginFailure::FromNetworkAuthFailure(error);
764 ExpectLoginFailure(failure); 764 ExpectLoginFailure(failure);
765 765
766 // Set up state as though a cryptohome mount attempt has occurred and 766 // Set up state as though a cryptohome mount attempt has occurred and
767 // succeeded. 767 // succeeded.
768 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); 768 state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
769 state_->PresetOnlineLoginStatus(failure); 769 state_->PresetOnlineLoginStatus(failure);
770 SetAttemptState(auth_, state_.release()); 770 SetAttemptState(auth_.get(), state_.release());
771 771
772 RunResolve(auth_.get()); 772 RunResolve(auth_.get());
773 } 773 }
774 774
775 TEST_F(ParallelAuthenticatorTest, DriveUnlock) { 775 TEST_F(ParallelAuthenticatorTest, DriveUnlock) {
776 ExpectLoginSuccess(username_, std::string(), std::string(), false); 776 ExpectLoginSuccess(username_, std::string(), std::string(), false);
777 FailOnLoginFailure(); 777 FailOnLoginFailure();
778 778
779 // Set up mock cryptohome library to respond successfully to a cryptohome 779 // Set up mock cryptohome library to respond successfully to a cryptohome
780 // key-check attempt. 780 // key-check attempt.
781 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE); 781 mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
782 EXPECT_CALL(*mock_caller_, AsyncCheckKey(username_, _, _)) 782 EXPECT_CALL(*mock_caller_, AsyncCheckKey(username_, _, _))
783 .Times(1) 783 .Times(1)
784 .RetiresOnSaturation(); 784 .RetiresOnSaturation();
785 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt()) 785 EXPECT_CALL(*mock_cryptohome_library_, GetSystemSalt())
786 .WillOnce(Return(std::string())) 786 .WillOnce(Return(std::string()))
787 .RetiresOnSaturation(); 787 .RetiresOnSaturation();
788 788
789 auth_->AuthenticateToUnlock(UserContext(username_, 789 auth_->AuthenticateToUnlock(UserContext(username_,
790 std::string(), 790 std::string(),
791 std::string())); 791 std::string()));
792 message_loop_.Run(); 792 message_loop_.Run();
793 } 793 }
794 794
795 } // namespace chromeos 795 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/oauth2_login_verifier.cc ('k') | chrome/browser/chromeos/login/screen_locker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698