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

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

Issue 8761016: Shaving parallel authenticator yak to remove unnecessary dependency on this class from OAuth spec... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 240
241 // Mocks, destroyed by CrosLibrary class. 241 // Mocks, destroyed by CrosLibrary class.
242 MockCryptohomeLibrary* mock_library_; 242 MockCryptohomeLibrary* mock_library_;
243 MockLibraryLoader* loader_; 243 MockLibraryLoader* loader_;
244 244
245 MockConsumer consumer_; 245 MockConsumer consumer_;
246 scoped_refptr<ParallelAuthenticator> auth_; 246 scoped_refptr<ParallelAuthenticator> auth_;
247 scoped_ptr<TestAttemptState> state_; 247 scoped_ptr<TestAttemptState> state_;
248 }; 248 };
249 249
250 TEST_F(ParallelAuthenticatorTest, SaltToAscii) {
251 unsigned char fake_salt[8] = { 0 };
252 fake_salt[0] = 10;
253 fake_salt[1] = 1;
254 fake_salt[7] = 10 << 4;
255 std::vector<unsigned char> salt_v(fake_salt, fake_salt + sizeof(fake_salt));
256
257 ON_CALL(*mock_library_, GetSystemSalt())
258 .WillByDefault(Return(salt_v));
259 EXPECT_CALL(*mock_library_, GetSystemSalt())
260 .Times(1)
261 .RetiresOnSaturation();
262
263 EXPECT_EQ("0a010000000000a0", auth_->SaltAsAscii());
264 }
265
266 TEST_F(ParallelAuthenticatorTest, ReadLocalaccount) { 250 TEST_F(ParallelAuthenticatorTest, ReadLocalaccount) {
267 FilePath tmp_file_path = FakeLocalaccountFile(username_); 251 FilePath tmp_file_path = FakeLocalaccountFile(username_);
268 252
269 ReadLocalaccountFile(auth_.get(), tmp_file_path.BaseName().value()); 253 ReadLocalaccountFile(auth_.get(), tmp_file_path.BaseName().value());
270 EXPECT_EQ(auth_->localaccount_, username_); 254 EXPECT_EQ(auth_->localaccount_, username_);
271 Delete(tmp_file_path, false); 255 Delete(tmp_file_path, false);
272 } 256 }
273 257
274 TEST_F(ParallelAuthenticatorTest, ReadLocalaccountTrailingWS) { 258 TEST_F(ParallelAuthenticatorTest, ReadLocalaccountTrailingWS) {
275 FilePath tmp_file_path = 259 FilePath tmp_file_path =
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 FailOnLoginFailure(); 441 FailOnLoginFailure();
458 442
459 // Set up mock cryptohome library to respond successfully to a key migration. 443 // Set up mock cryptohome library to respond successfully to a key migration.
460 mock_library_->SetUp(true, 0); 444 mock_library_->SetUp(true, 0);
461 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_, _, hash_ascii_, _)) 445 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_, _, hash_ascii_, _))
462 .Times(1) 446 .Times(1)
463 .RetiresOnSaturation(); 447 .RetiresOnSaturation();
464 EXPECT_CALL(*mock_library_, AsyncMount(username_, hash_ascii_, false, _)) 448 EXPECT_CALL(*mock_library_, AsyncMount(username_, hash_ascii_, false, _))
465 .Times(1) 449 .Times(1)
466 .RetiresOnSaturation(); 450 .RetiresOnSaturation();
467 EXPECT_CALL(*mock_library_, GetSystemSalt())
468 .WillOnce(Return(CryptohomeBlob(2, 0)))
469 .RetiresOnSaturation();
470 451
471 state_->PresetOnlineLoginStatus(result_, LoginFailure::None()); 452 state_->PresetOnlineLoginStatus(result_, LoginFailure::None());
472 SetAttemptState(auth_, state_.release()); 453 SetAttemptState(auth_, state_.release());
473 454
474 auth_->RecoverEncryptedData(std::string(), result_); 455 auth_->RecoverEncryptedData(std::string(), result_);
475 message_loop_.Run(); 456 message_loop_.Run();
476 } 457 }
477 458
478 TEST_F(ParallelAuthenticatorTest, DriveDataRecoverButFail) { 459 TEST_F(ParallelAuthenticatorTest, DriveDataRecoverButFail) {
479 FailOnLoginSuccess(); 460 FailOnLoginSuccess();
480 ExpectPasswordChange(); 461 ExpectPasswordChange();
481 462
482 // Set up mock cryptohome library to fail a key migration attempt, 463 // Set up mock cryptohome library to fail a key migration attempt,
483 // asserting that the wrong password was used. 464 // asserting that the wrong password was used.
484 mock_library_->SetUp(false, chromeos::kCryptohomeMountErrorKeyFailure); 465 mock_library_->SetUp(false, chromeos::kCryptohomeMountErrorKeyFailure);
485 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_, _, hash_ascii_, _)) 466 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_, _, hash_ascii_, _))
486 .Times(1) 467 .Times(1)
487 .RetiresOnSaturation(); 468 .RetiresOnSaturation();
488 EXPECT_CALL(*mock_library_, GetSystemSalt())
489 .WillOnce(Return(CryptohomeBlob(2, 0)))
490 .RetiresOnSaturation();
491 469
492 SetAttemptState(auth_, state_.release()); 470 SetAttemptState(auth_, state_.release());
493 471
494 auth_->RecoverEncryptedData(std::string(), result_); 472 auth_->RecoverEncryptedData(std::string(), result_);
495 message_loop_.Run(); 473 message_loop_.Run();
496 } 474 }
497 475
498 TEST_F(ParallelAuthenticatorTest, ResolveNoMount) { 476 TEST_F(ParallelAuthenticatorTest, ResolveNoMount) {
499 // Set a fake online attempt so that we return intermediate cryptohome state. 477 // Set a fake online attempt so that we return intermediate cryptohome state.
500 FakeOnlineAttempt(); 478 FakeOnlineAttempt();
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 FailOnLoginFailure(); 587 FailOnLoginFailure();
610 588
611 // Set up mock cryptohome library to respond successfully to a key migration. 589 // Set up mock cryptohome library to respond successfully to a key migration.
612 mock_library_->SetUp(true, 0); 590 mock_library_->SetUp(true, 0);
613 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_, 591 EXPECT_CALL(*mock_library_, AsyncMigrateKey(username_,
614 state_->ascii_hash, 592 state_->ascii_hash,
615 _, 593 _,
616 _)) 594 _))
617 .Times(1) 595 .Times(1)
618 .RetiresOnSaturation(); 596 .RetiresOnSaturation();
619 EXPECT_CALL(*mock_library_, GetSystemSalt())
620 .WillOnce(Return(CryptohomeBlob(2, 0)))
621 .RetiresOnSaturation();
622 597
623 // Set up state as though a cryptohome mount attempt has occurred and 598 // Set up state as though a cryptohome mount attempt has occurred and
624 // succeeded; also, an online request that never made it. 599 // succeeded; also, an online request that never made it.
625 state_->PresetCryptohomeStatus(true, 0); 600 state_->PresetCryptohomeStatus(true, 0);
626 // state_ is released further down. 601 // state_ is released further down.
627 SetAttemptState(auth_, state_.get()); 602 SetAttemptState(auth_, state_.get());
628 RunResolve(auth_.get(), &message_loop_); 603 RunResolve(auth_.get(), &message_loop_);
629 604
630 // Offline login has completed, so now we "complete" the online request. 605 // Offline login has completed, so now we "complete" the online request.
631 GoogleServiceAuthError error( 606 GoogleServiceAuthError error(
(...skipping 14 matching lines...) Expand all
646 username_, 621 username_,
647 std::string(), 622 std::string(),
648 std::string(), 623 std::string(),
649 std::string()); 624 std::string());
650 message_loop_.Run(); 625 message_loop_.Run();
651 } 626 }
652 627
653 TEST_F(ParallelAuthenticatorTest, DriveOfflineLoginGetCaptchad) { 628 TEST_F(ParallelAuthenticatorTest, DriveOfflineLoginGetCaptchad) {
654 ExpectLoginSuccess(username_, password_, result_, true); 629 ExpectLoginSuccess(username_, password_, result_, true);
655 FailOnLoginFailure(); 630 FailOnLoginFailure();
656 EXPECT_CALL(*mock_library_, GetSystemSalt())
657 .WillOnce(Return(CryptohomeBlob(2, 0)))
658 .RetiresOnSaturation();
659 631
660 // Set up state as though a cryptohome mount attempt has occurred and 632 // Set up state as though a cryptohome mount attempt has occurred and
661 // succeeded; also, an online request that never made it. 633 // succeeded; also, an online request that never made it.
662 state_->PresetCryptohomeStatus(true, 0); 634 state_->PresetCryptohomeStatus(true, 0);
663 // state_ is released further down. 635 // state_ is released further down.
664 SetAttemptState(auth_, state_.get()); 636 SetAttemptState(auth_, state_.get());
665 RunResolve(auth_.get(), &message_loop_); 637 RunResolve(auth_.get(), &message_loop_);
666 638
667 // Offline login has completed, so now we "complete" the online request. 639 // Offline login has completed, so now we "complete" the online request.
668 GoogleServiceAuthError error( 640 GoogleServiceAuthError error(
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 TEST_F(ParallelAuthenticatorTest, DriveUnlock) { 731 TEST_F(ParallelAuthenticatorTest, DriveUnlock) {
760 ExpectLoginSuccess(username_, std::string(), result_, false); 732 ExpectLoginSuccess(username_, std::string(), result_, false);
761 FailOnLoginFailure(); 733 FailOnLoginFailure();
762 734
763 // Set up mock cryptohome library to respond successfully to a cryptohome 735 // Set up mock cryptohome library to respond successfully to a cryptohome
764 // key-check attempt. 736 // key-check attempt.
765 mock_library_->SetUp(true, 0); 737 mock_library_->SetUp(true, 0);
766 EXPECT_CALL(*mock_library_, AsyncCheckKey(username_, _, _)) 738 EXPECT_CALL(*mock_library_, AsyncCheckKey(username_, _, _))
767 .Times(1) 739 .Times(1)
768 .RetiresOnSaturation(); 740 .RetiresOnSaturation();
769 EXPECT_CALL(*mock_library_, GetSystemSalt())
770 .WillOnce(Return(CryptohomeBlob(2, 0)))
771 .RetiresOnSaturation();
772 741
773 auth_->AuthenticateToUnlock(username_, ""); 742 auth_->AuthenticateToUnlock(username_, "");
774 message_loop_.Run(); 743 message_loop_.Run();
775 } 744 }
776 745
777 TEST_F(ParallelAuthenticatorTest, DriveLocalUnlock) { 746 TEST_F(ParallelAuthenticatorTest, DriveLocalUnlock) {
778 ExpectLoginSuccess(username_, std::string(), result_, false); 747 ExpectLoginSuccess(username_, std::string(), result_, false);
779 FailOnLoginFailure(); 748 FailOnLoginFailure();
780 749
781 // Set up mock cryptohome library to fail a cryptohome key-check 750 // Set up mock cryptohome library to fail a cryptohome key-check
782 // attempt. 751 // attempt.
783 mock_library_->SetUp(false, 0); 752 mock_library_->SetUp(false, 0);
784 EXPECT_CALL(*mock_library_, AsyncCheckKey(username_, _, _)) 753 EXPECT_CALL(*mock_library_, AsyncCheckKey(username_, _, _))
785 .Times(1) 754 .Times(1)
786 .RetiresOnSaturation(); 755 .RetiresOnSaturation();
787 EXPECT_CALL(*mock_library_, GetSystemSalt())
788 .WillOnce(Return(CryptohomeBlob(2, 0)))
789 .RetiresOnSaturation();
790 756
791 // Deal with getting the localaccount file 757 // Deal with getting the localaccount file
792 FilePath tmp_file_path = FakeLocalaccountFile(username_); 758 FilePath tmp_file_path = FakeLocalaccountFile(username_);
793 ReadLocalaccountFile(auth_.get(), tmp_file_path.BaseName().value()); 759 ReadLocalaccountFile(auth_.get(), tmp_file_path.BaseName().value());
794 760
795 auth_->AuthenticateToUnlock(username_, ""); 761 auth_->AuthenticateToUnlock(username_, "");
796 message_loop_.Run(); 762 message_loop_.Run();
797 763
798 Delete(tmp_file_path, false); 764 Delete(tmp_file_path, false);
799 } 765 }
800 766
801 } // namespace chromeos 767 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698