| Index: chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc
|
| diff --git a/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc b/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc
|
| index c3c7fff22e8f01783aa555facc16d7bf06d3ad89..0a7d37168df9a2cf8130c5f98c38708270047407 100644
|
| --- a/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc
|
| +++ b/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "chrome/browser/chromeos/login/auth/key.h"
|
| #include "chrome/browser/chromeos/login/auth/mock_login_status_consumer.h"
|
| #include "chrome/browser/chromeos/login/auth/mock_url_fetchers.h"
|
| #include "chrome/browser/chromeos/login/auth/test_attempt_state.h"
|
| @@ -46,14 +47,14 @@ namespace chromeos {
|
| class ParallelAuthenticatorTest : public testing::Test {
|
| public:
|
| ParallelAuthenticatorTest()
|
| - : username_("me@nowhere.org"),
|
| - password_("fakepass"),
|
| - hash_ascii_(ParallelAuthenticator::HashPassword(
|
| - password_,
|
| - SystemSaltGetter::ConvertRawSaltToHexString(
|
| - FakeCryptohomeClient::GetStubSystemSalt()))),
|
| + : user_context_("me@nowhere.org"),
|
| user_manager_enabler_(new MockUserManager),
|
| mock_caller_(NULL) {
|
| + user_context_.SetKey(Key("fakepass"));
|
| + transformed_key_ = *user_context_.GetKey();
|
| + transformed_key_.Transform(Key::KEY_TYPE_SALTED_SHA256_TOP_HALF,
|
| + SystemSaltGetter::ConvertRawSaltToHexString(
|
| + FakeCryptohomeClient::GetStubSystemSalt()));
|
| }
|
|
|
| virtual ~ParallelAuthenticatorTest() {
|
| @@ -75,9 +76,7 @@ class ParallelAuthenticatorTest : public testing::Test {
|
| SystemSaltGetter::Initialize();
|
|
|
| auth_ = new ParallelAuthenticator(&consumer_);
|
| - UserContext user_context(username_);
|
| - user_context.SetPassword(password_);
|
| - state_.reset(new TestAttemptState(user_context, false));
|
| + state_.reset(new TestAttemptState(user_context_, false));
|
| }
|
|
|
| // Tears down the test fixture.
|
| @@ -138,13 +137,7 @@ class ParallelAuthenticatorTest : public testing::Test {
|
| .RetiresOnSaturation();
|
| }
|
|
|
| - void ExpectLoginSuccess(const std::string& username,
|
| - const std::string& password,
|
| - const std::string& username_hash,
|
| - bool pending) {
|
| - UserContext user_context(username);
|
| - user_context.SetPassword(password);
|
| - user_context.SetUserIDHash(username_hash);
|
| + void ExpectLoginSuccess(const UserContext& user_context) {
|
| EXPECT_CALL(consumer_, OnLoginSuccess(user_context))
|
| .WillOnce(Invoke(MockConsumer::OnSuccessQuit))
|
| .RetiresOnSaturation();
|
| @@ -183,10 +176,8 @@ class ParallelAuthenticatorTest : public testing::Test {
|
|
|
| content::TestBrowserThreadBundle thread_bundle_;
|
|
|
| - std::string username_;
|
| - std::string password_;
|
| - std::string username_hash_;
|
| - std::string hash_ascii_;
|
| + UserContext user_context_;
|
| + Key transformed_key_;
|
|
|
| ScopedDeviceSettingsTestHelper device_settings_test_helper_;
|
| ScopedTestCrosSettings test_cros_settings_;
|
| @@ -202,10 +193,7 @@ class ParallelAuthenticatorTest : public testing::Test {
|
| };
|
|
|
| TEST_F(ParallelAuthenticatorTest, OnLoginSuccess) {
|
| - UserContext user_context(username_);
|
| - user_context.SetPassword(password_);
|
| - user_context.SetUserIDHash(username_hash_);
|
| - EXPECT_CALL(consumer_, OnLoginSuccess(user_context))
|
| + EXPECT_CALL(consumer_, OnLoginSuccess(user_context_))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -268,10 +256,8 @@ TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededMount) {
|
| // the mount finish successfully.
|
| state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
|
| SetOwnerState(false, false);
|
| - // and test that the mount has succeeded.
|
| - UserContext user_context(username_);
|
| - user_context.SetPassword(password_);
|
| - state_.reset(new TestAttemptState(user_context, false));
|
| + // Test that the mount has succeeded.
|
| + state_.reset(new TestAttemptState(user_context_, false));
|
| state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
|
| EXPECT_EQ(ParallelAuthenticator::OFFLINE_LOGIN,
|
| SetAndResolveState(auth_.get(), state_.release()));
|
| @@ -313,10 +299,8 @@ TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededFailedMount) {
|
| // Flush all the pending operations. The operations should induce an owner
|
| // verification.
|
| device_settings_test_helper_.Flush();
|
| - // and test that the mount has succeeded.
|
| - UserContext user_context(username_);
|
| - user_context.SetPassword(password_);
|
| - state_.reset(new TestAttemptState(user_context, false));
|
| + // Test that the mount has succeeded.
|
| + state_.reset(new TestAttemptState(user_context_, false));
|
| state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE);
|
| EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED,
|
| SetAndResolveState(auth_.get(), state_.release()));
|
| @@ -401,24 +385,27 @@ TEST_F(ParallelAuthenticatorTest, DriveRetailModeLoginButFail) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveDataResync) {
|
| - ExpectLoginSuccess(username_,
|
| - password_,
|
| - cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername,
|
| - false);
|
| + UserContext expected_user_context(user_context_);
|
| + expected_user_context.SetUserIDHash(
|
| + cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername);
|
| + ExpectLoginSuccess(expected_user_context);
|
| FailOnLoginFailure();
|
|
|
| // Set up mock async method caller to respond successfully to a cryptohome
|
| // remove attempt and a cryptohome create attempt (indicated by the
|
| // |CREATE_IF_MISSING| flag to AsyncMount).
|
| mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
|
| - EXPECT_CALL(*mock_caller_, AsyncRemove(username_, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncRemove(user_context_.GetUserID(), _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
|
| - cryptohome::CREATE_IF_MISSING, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncMount(user_context_.GetUserID(),
|
| + transformed_key_.GetSecret(),
|
| + cryptohome::CREATE_IF_MISSING,
|
| + _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
|
| + EXPECT_CALL(*mock_caller_,
|
| + AsyncGetSanitizedUsername(user_context_.GetUserID(), _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -435,7 +422,7 @@ TEST_F(ParallelAuthenticatorTest, DriveResyncFail) {
|
|
|
| // Set up mock async method caller to fail a cryptohome remove attempt.
|
| mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_NONE);
|
| - EXPECT_CALL(*mock_caller_, AsyncRemove(username_, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncRemove(user_context_.GetUserID(), _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -457,22 +444,28 @@ TEST_F(ParallelAuthenticatorTest, DriveRequestOldPassword) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveDataRecover) {
|
| - ExpectLoginSuccess(username_,
|
| - password_,
|
| - cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername,
|
| - false);
|
| + UserContext expected_user_context(user_context_);
|
| + expected_user_context.SetUserIDHash(
|
| + cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername);
|
| + ExpectLoginSuccess(expected_user_context);
|
| FailOnLoginFailure();
|
|
|
| // Set up mock async method caller to respond successfully to a key migration.
|
| mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
|
| - EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncMigrateKey(user_context_.GetUserID(),
|
| + _,
|
| + transformed_key_.GetSecret(),
|
| + _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
|
| - cryptohome::MOUNT_FLAGS_NONE, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncMount(user_context_.GetUserID(),
|
| + transformed_key_.GetSecret(),
|
| + cryptohome::MOUNT_FLAGS_NONE,
|
| + _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
|
| + EXPECT_CALL(*mock_caller_,
|
| + AsyncGetSanitizedUsername(user_context_.GetUserID(), _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -490,7 +483,10 @@ TEST_F(ParallelAuthenticatorTest, DriveDataRecoverButFail) {
|
| // Set up mock async method caller to fail a key migration attempt,
|
| // asserting that the wrong password was used.
|
| mock_caller_->SetUp(false, cryptohome::MOUNT_ERROR_KEY_FAILURE);
|
| - EXPECT_CALL(*mock_caller_, AsyncMigrateKey(username_, _, hash_ascii_, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncMigrateKey(user_context_.GetUserID(),
|
| + _,
|
| + transformed_key_.GetSecret(),
|
| + _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -525,20 +521,23 @@ TEST_F(ParallelAuthenticatorTest, ResolveCreateNew) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveCreateForNewUser) {
|
| - ExpectLoginSuccess(username_,
|
| - password_,
|
| - cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername,
|
| - false);
|
| + UserContext expected_user_context(user_context_);
|
| + expected_user_context.SetUserIDHash(
|
| + cryptohome::MockAsyncMethodCaller::kFakeSanitizedUsername);
|
| + ExpectLoginSuccess(expected_user_context);
|
| FailOnLoginFailure();
|
|
|
| // Set up mock async method caller to respond successfully to a cryptohome
|
| // create attempt (indicated by the |CREATE_IF_MISSING| flag to AsyncMount).
|
| mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
|
| - EXPECT_CALL(*mock_caller_, AsyncMount(username_, hash_ascii_,
|
| - cryptohome::CREATE_IF_MISSING, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncMount(user_context_.GetUserID(),
|
| + transformed_key_.GetSecret(),
|
| + cryptohome::CREATE_IF_MISSING,
|
| + _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - EXPECT_CALL(*mock_caller_, AsyncGetSanitizedUsername(username_, _))
|
| + EXPECT_CALL(*mock_caller_,
|
| + AsyncGetSanitizedUsername(user_context_.GetUserID(), _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| @@ -554,7 +553,7 @@ TEST_F(ParallelAuthenticatorTest, DriveCreateForNewUser) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveOfflineLogin) {
|
| - ExpectLoginSuccess(username_, password_, username_hash_, false);
|
| + ExpectLoginSuccess(user_context_);
|
| FailOnLoginFailure();
|
|
|
| // Set up state as though a cryptohome mount attempt has occurred and
|
| @@ -566,7 +565,7 @@ TEST_F(ParallelAuthenticatorTest, DriveOfflineLogin) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveOnlineLogin) {
|
| - ExpectLoginSuccess(username_, password_, username_hash_, false);
|
| + ExpectLoginSuccess(user_context_);
|
| FailOnLoginFailure();
|
|
|
| // Set up state as though a cryptohome mount attempt has occurred and
|
| @@ -579,17 +578,17 @@ TEST_F(ParallelAuthenticatorTest, DriveOnlineLogin) {
|
| }
|
|
|
| TEST_F(ParallelAuthenticatorTest, DriveUnlock) {
|
| - ExpectLoginSuccess(username_, std::string(), std::string(), false);
|
| + ExpectLoginSuccess(user_context_);
|
| FailOnLoginFailure();
|
|
|
| // Set up mock async method caller to respond successfully to a cryptohome
|
| // key-check attempt.
|
| mock_caller_->SetUp(true, cryptohome::MOUNT_ERROR_NONE);
|
| - EXPECT_CALL(*mock_caller_, AsyncCheckKey(username_, _, _))
|
| + EXPECT_CALL(*mock_caller_, AsyncCheckKey(user_context_.GetUserID(), _, _))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
|
|
| - auth_->AuthenticateToUnlock(UserContext(username_));
|
| + auth_->AuthenticateToUnlock(user_context_);
|
| base::MessageLoop::current()->Run();
|
| }
|
|
|
|
|