Index: chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc |
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc b/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc |
index 37ce31a3ffcb9f18835bba8db54bfdd1b337e5b3..039d6d5b190eafd0f7dac8e7ade916ac7ee8f9e4 100644 |
--- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc |
+++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc |
@@ -2,8 +2,8 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/chromeos/login/quick_unlock/pin_storage.h" |
-#include "chrome/browser/chromeos/login/quick_unlock/pin_storage_factory.h" |
+#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h" |
+#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h" |
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/testing_profile.h" |
@@ -15,13 +15,6 @@ |
namespace chromeos { |
namespace { |
-void SetConfirmationFrequency( |
- PrefService* pref_service, |
- quick_unlock::PasswordConfirmationFrequency frequency) { |
- pref_service->SetInteger(prefs::kQuickUnlockTimeout, |
- static_cast<int>(frequency)); |
-} |
- |
class PinStorageUnitTest : public testing::Test { |
protected: |
PinStorageUnitTest() : profile_(new TestingProfile()) {} |
@@ -45,19 +38,17 @@ class PinStorageTestApi { |
explicit PinStorageTestApi(quick_unlock::PinStorage* pin_storage) |
: pin_storage_(pin_storage) {} |
- // Reduces the amount of strong auth time available by |time_delta|. |
- void ReduceRemainingStrongAuthTimeBy(const base::TimeDelta& time_delta) { |
- pin_storage_->last_strong_auth_ -= time_delta; |
- } |
- |
- bool HasStrongAuthInfo() { |
- return !pin_storage_->last_strong_auth_.is_null(); |
- } |
- |
std::string PinSalt() const { return pin_storage_->PinSalt(); } |
std::string PinSecret() const { return pin_storage_->PinSecret(); } |
+ bool IsPinAuthenticationAvailable() const { |
+ return pin_storage_->IsPinAuthenticationAvailable(); |
+ } |
+ bool TryAuthenticatePin(const std::string& pin) { |
+ return pin_storage_->TryAuthenticatePin(pin); |
+ } |
+ |
private: |
quick_unlock::PinStorage* pin_storage_; |
@@ -75,7 +66,8 @@ TEST_F(PinStorageUnitTest, PinStorageWritesToPrefs) { |
EXPECT_EQ("", prefs->GetString(prefs::kQuickUnlockPinSecret)); |
quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
+ quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) |
+ ->pin_storage(); |
PinStorageTestApi pin_storage_test(pin_storage); |
pin_storage->SetPin("1111"); |
@@ -99,7 +91,8 @@ TEST_F(PinStorageUnitTest, PinStorageWritesToPrefs) { |
// 3. Resetting unlock attempt count correctly sets attempt count to 0. |
TEST_F(PinStorageUnitTest, UnlockAttemptCount) { |
quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
+ quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) |
+ ->pin_storage(); |
EXPECT_EQ(0, pin_storage->unlock_attempt_count()); |
@@ -112,126 +105,36 @@ TEST_F(PinStorageUnitTest, UnlockAttemptCount) { |
EXPECT_EQ(0, pin_storage->unlock_attempt_count()); |
} |
-// Verifies that marking the strong auth makes TimeSinceLastStrongAuth a > zero |
-// value. |
-TEST_F(PinStorageUnitTest, TimeSinceLastStrongAuthReturnsPositiveValue) { |
- quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
- PinStorageTestApi pin_storage_test(pin_storage); |
- |
- EXPECT_FALSE(pin_storage_test.HasStrongAuthInfo()); |
- |
- pin_storage->MarkStrongAuth(); |
- |
- EXPECT_TRUE(pin_storage_test.HasStrongAuthInfo()); |
- pin_storage_test.ReduceRemainingStrongAuthTimeBy( |
- base::TimeDelta::FromSeconds(60)); |
- |
- EXPECT_TRUE(pin_storage->TimeSinceLastStrongAuth() >= |
- base::TimeDelta::FromSeconds(30)); |
-} |
- |
-// Verifies that by altering the password confirmation preference, the pin |
-// storage will request password reconfirmation as expected. |
-TEST_F(PinStorageUnitTest, QuickUnlockPasswordConfirmationFrequencyPreference) { |
- quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
- PrefService* pref_service = profile_->GetPrefs(); |
- PinStorageTestApi test_api(pin_storage); |
- |
- // The default is one day, so verify moving the last strong auth time back 13 |
- // hours should not request strong auth. |
- pin_storage->MarkStrongAuth(); |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(13)); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
- |
- // Verify moving the last strong auth time back another 13 hours should |
- // request strong auth. |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(13)); |
- EXPECT_FALSE(pin_storage->HasStrongAuth()); |
- |
- // Verify that by changing the frequency of required password confirmation to |
- // six hours, moving the last strong auth interval back by 4 hours will not |
- // trigger a request for strong auth, but moving it by an additional 4 hours |
- // will. |
- pin_storage->MarkStrongAuth(); |
- SetConfirmationFrequency( |
- pref_service, quick_unlock::PasswordConfirmationFrequency::SIX_HOURS); |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(4)); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(4)); |
- EXPECT_FALSE(pin_storage->HasStrongAuth()); |
- |
- // A valid strong auth becomes invalid if the confirmation frequency is |
- // shortened to less than the expiration time. |
- pin_storage->MarkStrongAuth(); |
- SetConfirmationFrequency( |
- pref_service, quick_unlock::PasswordConfirmationFrequency::TWELVE_HOURS); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(8)); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
- SetConfirmationFrequency( |
- pref_service, quick_unlock::PasswordConfirmationFrequency::SIX_HOURS); |
- EXPECT_FALSE(pin_storage->HasStrongAuth()); |
- |
- // An expired strong auth becomes usable if the confirmation frequency gets |
- // extended past the expiration time. |
- pin_storage->MarkStrongAuth(); |
- SetConfirmationFrequency( |
- pref_service, quick_unlock::PasswordConfirmationFrequency::SIX_HOURS); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
- test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(8)); |
- EXPECT_FALSE(pin_storage->HasStrongAuth()); |
- SetConfirmationFrequency( |
- pref_service, quick_unlock::PasswordConfirmationFrequency::TWELVE_HOURS); |
- EXPECT_TRUE(pin_storage->HasStrongAuth()); |
-} |
- |
// Verifies that the correct pin can be used to authenticate. |
TEST_F(PinStorageUnitTest, AuthenticationSucceedsWithRightPin) { |
quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
+ quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) |
+ ->pin_storage(); |
+ PinStorageTestApi pin_storage_test(pin_storage); |
pin_storage->SetPin("1111"); |
- pin_storage->MarkStrongAuth(); |
- EXPECT_TRUE(pin_storage->TryAuthenticatePin("1111")); |
+ EXPECT_TRUE(pin_storage_test.TryAuthenticatePin("1111")); |
} |
// Verifies that the correct pin will fail to authenticate if too many |
// authentication attempts have been made. |
TEST_F(PinStorageUnitTest, AuthenticationFailsFromTooManyAttempts) { |
quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
+ quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) |
+ ->pin_storage(); |
+ PinStorageTestApi pin_storage_test(pin_storage); |
pin_storage->SetPin("1111"); |
// Use up all of the authentication attempts so authentication fails. |
- pin_storage->MarkStrongAuth(); |
- EXPECT_TRUE(pin_storage->IsPinAuthenticationAvailable()); |
+ EXPECT_TRUE(pin_storage_test.IsPinAuthenticationAvailable()); |
for (int i = 0; i < quick_unlock::PinStorage::kMaximumUnlockAttempts; ++i) |
- EXPECT_FALSE(pin_storage->TryAuthenticatePin("foobar")); |
+ EXPECT_FALSE(pin_storage_test.TryAuthenticatePin("foobar")); |
// We used up all of the attempts, so entering the right PIN will still fail. |
- EXPECT_FALSE(pin_storage->IsPinAuthenticationAvailable()); |
- EXPECT_FALSE(pin_storage->TryAuthenticatePin("1111")); |
+ EXPECT_FALSE(pin_storage_test.IsPinAuthenticationAvailable()); |
+ EXPECT_FALSE(pin_storage_test.TryAuthenticatePin("1111")); |
} |
-// Verifies that the correct pin will fail to authenticate if it has been too |
-// long since a strong-auth/password authentication. |
-TEST_F(PinStorageUnitTest, AuthenticationFailsFromTimeout) { |
- quick_unlock::PinStorage* pin_storage = |
- quick_unlock::PinStorageFactory::GetForProfile(profile_.get()); |
- PinStorageTestApi pin_storage_test(pin_storage); |
- |
- pin_storage->SetPin("1111"); |
- pin_storage->MarkStrongAuth(); |
- EXPECT_TRUE(pin_storage->IsPinAuthenticationAvailable()); |
- |
- // Remove all of the strong auth time so that we have a strong auth timeout. |
- pin_storage_test.ReduceRemainingStrongAuthTimeBy( |
- base::TimeDelta::FromDays(10)); |
- |
- EXPECT_FALSE(pin_storage->IsPinAuthenticationAvailable()); |
-} |
} // namespace chromeos |