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

Unified Diff: components/password_manager/core/browser/password_form_manager_unittest.cc

Issue 356223002: PasswordForm: move from current/old password scheme to current/new. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix problems with discrepancies between |observed_form_| and |form|, and revert former to constref. Created 6 years, 6 months 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: components/password_manager/core/browser/password_form_manager_unittest.cc
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index 62152b61ec525641b6bd2f6eb4f2254778731d77..3dd8aa3a0048afbef70fdc090271febed2801aee 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -122,6 +122,11 @@ class PasswordFormManagerTest : public testing::Test {
ASCIIToUTF16("test2@gmail.com"));
}
+ void AddNewPasswordElement() {
+ observed_form_.new_password_element = ASCIIToUTF16("NewPasswd");
+ observed_form_.new_password_value = ASCIIToUTF16("test1new");
+ }
+
virtual void TearDown() {
if (mock_store_)
mock_store_->Shutdown();
@@ -220,6 +225,8 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
GetPendingCredentials(manager)->password_value);
EXPECT_EQ(saved_match()->username_value,
GetPendingCredentials(manager)->username_value);
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
// Now, suppose the user re-visits the site and wants to save an additional
// login for the site with a new username. In this case, the matching phase
@@ -243,6 +250,49 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
EXPECT_TRUE(GetPendingCredentials(manager)->preferred);
EXPECT_EQ(new_pass, GetPendingCredentials(manager)->password_value);
EXPECT_EQ(new_user, GetPendingCredentials(manager)->username_value);
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
+ delete manager;
+}
+
+TEST_F(PasswordFormManagerTest, TestNewLoginWithNewPasswordElement) {
+ // Alter the test form so it only has a password field that identified as
+ // being the new password.
+ observed_form()->new_password_element.swap(observed_form()->password_element);
+
+ scoped_ptr<TestPasswordManagerClient> client(
+ new TestPasswordManagerClient(NULL));
+ scoped_ptr<StubPasswordManagerDriver> driver;
+ PasswordFormManager* manager = new PasswordFormManager(
+ NULL, client.get(), driver.get(), *observed_form(), false);
+ SimulateMatchingPhase(manager, false);
+
+ // User submits credentials for the observed form.
+ PasswordForm credentials(*observed_form());
+ credentials.username_value = saved_match()->username_value;
+ credentials.new_password_value = saved_match()->password_value;
+ credentials.preferred = true;
+ manager->ProvisionallySave(
+ credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
+
+ // Successful login. The PasswordManager would instruct PasswordFormManager
+ // to save, which should know this is a new login.
+ EXPECT_TRUE(manager->IsNewLogin());
+ EXPECT_EQ(observed_form()->origin.spec(),
+ GetPendingCredentials(manager)->origin.spec());
+ EXPECT_EQ(observed_form()->signon_realm,
+ GetPendingCredentials(manager)->signon_realm);
+ EXPECT_EQ(observed_form()->action, GetPendingCredentials(manager)->action);
+ EXPECT_TRUE(GetPendingCredentials(manager)->preferred);
+ EXPECT_EQ(saved_match()->username_value,
+ GetPendingCredentials(manager)->username_value);
+ // At this point, the PasswordFormManager should have promoted the new
+ // password element/value to current password element/value.
+ EXPECT_TRUE(GetPendingCredentials(manager)->password_element.empty());
+ EXPECT_EQ(saved_match()->password_value,
+ GetPendingCredentials(manager)->password_value);
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
delete manager;
}
@@ -457,30 +507,51 @@ TEST_F(PasswordFormManagerTest, TestValidForms) {
credentials.username_value = saved_match()->username_value;
credentials.password_value = saved_match()->password_value;
+ // An alternate version of the form that also has a new_password_element.
+ AddNewPasswordElement();
+ PasswordForm new_credentials(*observed_form());
+
// Form with both username_element and password_element.
PasswordFormManager manager1(NULL, NULL, NULL, credentials, false);
SimulateMatchingPhase(&manager1, false);
EXPECT_TRUE(manager1.HasValidPasswordForm());
+ // Form with username_element, password_element, and new_password_element.
+ PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager2, false);
+ EXPECT_TRUE(manager2.HasValidPasswordForm());
+
+ // Form with username_element and only new_password_element.
+ new_credentials.password_element.clear();
+ PasswordFormManager manager3(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager3, false);
+ EXPECT_TRUE(manager3.HasValidPasswordForm());
+
// Form without a username_element but with a password_element.
credentials.username_element.clear();
- PasswordFormManager manager2(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager2, false);
- EXPECT_FALSE(manager2.HasValidPasswordForm());
+ PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager4, false);
+ EXPECT_FALSE(manager4.HasValidPasswordForm());
+
+ // Form without a username_element but with a new_password_element.
+ new_credentials.username_element.clear();
+ PasswordFormManager manager5(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager5, false);
+ EXPECT_FALSE(manager5.HasValidPasswordForm());
// Form without a password_element but with a username_element.
credentials.username_element = saved_match()->username_element;
credentials.password_element.clear();
- PasswordFormManager manager3(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager3, false);
- EXPECT_FALSE(manager3.HasValidPasswordForm());
+ PasswordFormManager manager6(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager6, false);
+ EXPECT_FALSE(manager6.HasValidPasswordForm());
// Form with neither a password_element nor a username_element.
credentials.username_element.clear();
credentials.password_element.clear();
- PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager4, false);
- EXPECT_FALSE(manager4.HasValidPasswordForm());
+ PasswordFormManager manager7(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager7, false);
+ EXPECT_FALSE(manager7.HasValidPasswordForm());
}
TEST_F(PasswordFormManagerTest, TestValidFormsBasic) {

Powered by Google App Engine
This is Rietveld 408576698