Chromium Code Reviews| 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 c5bc4f32c7747ae37273708bf6d86b3ccb87edd1..b22eed654cdbc1545889a10626e683f73b3f195d 100644 |
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc |
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc |
| @@ -221,6 +221,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 |
| @@ -244,9 +246,54 @@ 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; |
| + scoped_ptr<PasswordFormManager> manager(new PasswordFormManager( |
| + NULL, client.get(), driver.get(), *observed_form(), false)); |
| + SimulateMatchingPhase(&*manager, false); |
|
Garrett Casto
2014/07/07 21:57:24
Nit: I realize &* is shorter, but I think that .ge
engedy
2014/07/09 14:15:47
Done, I have rebased this CL on some earlier refac
|
| + |
| + // 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 value to be the current password. However, given that the element |
| + // names will be probably different on a future login form, no element names |
| + // should be saved. |
| + EXPECT_TRUE(GetPendingCredentials(&*manager)->username_element.empty()); |
| + 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()); |
| +} |
| + |
| TEST_F(PasswordFormManagerTest, TestUpdatePassword) { |
| // Create a PasswordFormManager with observed_form, as if we just |
| // saw this form and need to find matching logins. |
| @@ -458,30 +505,52 @@ 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. |
| + PasswordForm new_credentials(*observed_form()); |
| + new_credentials.new_password_element = ASCIIToUTF16("NewPasswd"); |
| + new_credentials.new_password_value = ASCIIToUTF16("test1new"); |
| + |
| // 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) { |