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

Unified Diff: chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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 d0266f8f59eb96504b8a62f03f17a92a790002c5..b3a937a39daa207d1502be07c59aefec09cd43ef 100644
--- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc
+++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc
@@ -8,11 +8,19 @@
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_profile.h"
#include "components/prefs/pref_service.h"
+#include "components/prefs/scoped_user_pref_update.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
+void SetConfirmationFrequency(
+ PrefService* pref_service,
+ chromeos::QuickUnlockPasswordConfirmationFrequency frequency) {
+ pref_service->SetInteger(prefs::kQuickUnlockTimeout,
+ static_cast<int>(frequency));
+}
+
class PinStorageUnitTest : public testing::Test {
protected:
PinStorageUnitTest() : profile_(new TestingProfile()) {}
@@ -41,6 +49,10 @@ class PinStorageTestApi {
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(); }
@@ -106,11 +118,11 @@ TEST_F(PinStorageUnitTest, TimeSinceLastStrongAuthReturnsPositiveValue) {
chromeos::PinStorageFactory::GetForProfile(profile_.get());
PinStorageTestApi pin_storage_test(pin_storage);
- EXPECT_FALSE(pin_storage->HasStrongAuth());
+ EXPECT_FALSE(pin_storage_test.HasStrongAuthInfo());
pin_storage->MarkStrongAuth();
- EXPECT_TRUE(pin_storage->HasStrongAuth());
+ EXPECT_TRUE(pin_storage_test.HasStrongAuthInfo());
pin_storage_test.ReduceRemainingStrongAuthTimeBy(
base::TimeDelta::FromSeconds(60));
@@ -118,6 +130,67 @@ TEST_F(PinStorageUnitTest, TimeSinceLastStrongAuthReturnsPositiveValue) {
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) {
+ chromeos::PinStorage* pin_storage =
+ chromeos::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,
+ chromeos::QuickUnlockPasswordConfirmationFrequency::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,
+ chromeos::QuickUnlockPasswordConfirmationFrequency::TWELVE_HOURS);
+ EXPECT_TRUE(pin_storage->HasStrongAuth());
+ test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(8));
+ EXPECT_TRUE(pin_storage->HasStrongAuth());
+ SetConfirmationFrequency(
+ pref_service,
+ chromeos::QuickUnlockPasswordConfirmationFrequency::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,
+ chromeos::QuickUnlockPasswordConfirmationFrequency::SIX_HOURS);
+ EXPECT_TRUE(pin_storage->HasStrongAuth());
+ test_api.ReduceRemainingStrongAuthTimeBy(base::TimeDelta::FromHours(8));
+ EXPECT_FALSE(pin_storage->HasStrongAuth());
+ SetConfirmationFrequency(
+ pref_service,
+ chromeos::QuickUnlockPasswordConfirmationFrequency::TWELVE_HOURS);
+ EXPECT_TRUE(pin_storage->HasStrongAuth());
+}
+
// Verifies that the correct pin can be used to authenticate.
TEST_F(PinStorageUnitTest, AuthenticationSucceedsWithRightPin) {
chromeos::PinStorage* pin_storage =
@@ -161,7 +234,7 @@ TEST_F(PinStorageUnitTest, AuthenticationFailsFromTimeout) {
// Remove all of the strong auth time so that we have a strong auth timeout.
pin_storage_test.ReduceRemainingStrongAuthTimeBy(
- chromeos::PinStorage::kStrongAuthTimeout + base::TimeDelta::FromHours(1));
+ base::TimeDelta::FromDays(10));
EXPECT_FALSE(pin_storage->IsPinAuthenticationAvailable());
}

Powered by Google App Engine
This is Rietveld 408576698