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 37f6005e979e41032f2e7b195f5a0a7d5454a896..7ff4a2c9671f098fca6d5ff531ff3f98099ba98f 100644 |
--- a/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc |
+++ b/chrome/browser/chromeos/login/auth/parallel_authenticator_unittest.cc |
@@ -24,8 +24,11 @@ |
#include "chrome/browser/chromeos/profiles/profile_helper.h" |
#include "chrome/browser/chromeos/settings/cros_settings.h" |
#include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
+#include "chrome/browser/chromeos/settings/mock_owner_key_util.h" |
#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" |
+#include "chrome/test/base/testing_browser_process.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/testing_profile_manager.h" |
#include "chromeos/chromeos_switches.h" |
#include "chromeos/cryptohome/mock_async_method_caller.h" |
#include "chromeos/cryptohome/system_salt_getter.h" |
@@ -34,6 +37,7 @@ |
#include "chromeos/login/auth/key.h" |
#include "chromeos/login/auth/user_context.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
+#include "crypto/nss_util.h" |
#include "google_apis/gaia/mock_url_fetcher_factory.h" |
#include "net/base/net_errors.h" |
#include "net/url_request/url_request_status.h" |
@@ -54,8 +58,10 @@ class ParallelAuthenticatorTest : public testing::Test { |
: user_context_("me@nowhere.org"), |
user_manager_(new FakeUserManager()), |
user_manager_enabler_(user_manager_), |
- mock_caller_(NULL) { |
+ mock_caller_(NULL), |
+ owner_key_util_(new MockOwnerKeyUtil) { |
user_context_.SetKey(Key("fakepass")); |
+ user_context_.SetUserIDHash("me_nowhere_com_hash"); |
const User* user = user_manager_->AddUser(user_context_.GetUserID()); |
profile_.set_profile_name(user_context_.GetUserID()); |
@@ -67,9 +73,7 @@ class ParallelAuthenticatorTest : public testing::Test { |
FakeCryptohomeClient::GetStubSystemSalt())); |
} |
- virtual ~ParallelAuthenticatorTest() { |
- DCHECK(!mock_caller_); |
- } |
+ virtual ~ParallelAuthenticatorTest() {} |
virtual void SetUp() { |
CommandLine::ForCurrentProcess()->AppendSwitch(switches::kLoginManager); |
@@ -85,12 +89,15 @@ class ParallelAuthenticatorTest : public testing::Test { |
SystemSaltGetter::Initialize(); |
+ OwnerSettingsService::SetOwnerKeyUtilForTesting(owner_key_util_); |
+ |
auth_ = new ParallelAuthenticator(&consumer_); |
state_.reset(new TestAttemptState(user_context_, false)); |
} |
// Tears down the test fixture. |
virtual void TearDown() { |
+ OwnerSettingsService::SetOwnerKeyUtilForTesting(NULL); |
SystemSaltGetter::Shutdown(); |
DBusThreadManager::Shutdown(); |
@@ -193,15 +200,20 @@ class ParallelAuthenticatorTest : public testing::Test { |
ScopedTestCrosSettings test_cros_settings_; |
TestingProfile profile_; |
+ scoped_ptr<TestingProfileManager> profile_manager_; |
FakeUserManager* user_manager_; |
ScopedUserManagerEnabler user_manager_enabler_; |
cryptohome::MockAsyncMethodCaller* mock_caller_; |
+ crypto::ScopedTestNSSDB test_nssdb_; |
+ |
MockConsumer consumer_; |
scoped_refptr<ParallelAuthenticator> auth_; |
scoped_ptr<TestAttemptState> state_; |
FakeCryptohomeClient* fake_cryptohome_client_; |
+ |
+ scoped_refptr<MockOwnerKeyUtil> owner_key_util_; |
}; |
TEST_F(ParallelAuthenticatorTest, OnLoginSuccess) { |
@@ -276,6 +288,10 @@ TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededMount) { |
} |
TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededFailedMount) { |
+ profile_manager_.reset( |
+ new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
+ ASSERT_TRUE(profile_manager_->SetUp()); |
+ |
FailOnLoginSuccess(); // Set failing on success as the default... |
LoginFailure failure = LoginFailure(LoginFailure::OWNER_REQUIRED); |
ExpectLoginFailure(failure); |
@@ -305,20 +321,18 @@ TEST_F(ParallelAuthenticatorTest, ResolveOwnerNeededFailedMount) { |
SetAndResolveState(auth_.get(), state_.release())); |
EXPECT_TRUE(LoginState::Get()->IsInSafeMode()); |
- // Simulate TPM token ready event. |
- OwnerSettingsService* service = |
- OwnerSettingsServiceFactory::GetForProfile(&profile_); |
- ASSERT_TRUE(service); |
- service->OnTPMTokenReady(); |
- |
// Flush all the pending operations. The operations should induce an owner |
// verification. |
device_settings_test_helper_.Flush(); |
- // Test that the mount has succeeded. |
+ |
state_.reset(new TestAttemptState(user_context_, false)); |
state_->PresetCryptohomeStatus(true, cryptohome::MOUNT_ERROR_NONE); |
+ |
+ // The owner key util should not have found the owner key, so login should |
+ // not be allowed. |
EXPECT_EQ(ParallelAuthenticator::OWNER_REQUIRED, |
SetAndResolveState(auth_.get(), state_.release())); |
+ EXPECT_TRUE(LoginState::Get()->IsInSafeMode()); |
// Unset global objects used by this test. |
LoginState::Shutdown(); |