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 30b7e325daeac7c635ff8627f91dfc9ba0776955..566fa451b0f8ff92baf7de41a0e2612ff295e120 100644 |
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc |
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc |
| @@ -392,6 +392,7 @@ TEST_F(PasswordFormManagerTest, TestNewLoginFromNewPasswordElement) { |
| // Add a new password field to the test form. The PasswordFormManager should |
| // save the password from this field, instead of the current password field. |
| observed_form()->new_password_element = ASCIIToUTF16("NewPasswd"); |
| + observed_form()->username_marked_by_site = true; |
| PasswordFormManager manager(NULL, client(), kNoDriver, *observed_form(), |
| false); |
| @@ -1343,4 +1344,92 @@ TEST_F(PasswordFormManagerTest, DriverDeletedBeforeStoreDone) { |
| form_manager.OnGetPasswordStoreResults(results); |
| } |
| +TEST_F(PasswordFormManagerTest, |
| + SubmitIngnorableChanePasswordForm_MatchingUsernameAndPassword) { |
|
vabr (Chromium)
2015/02/06 16:27:07
Chane -> Change
Pritam Nikam
2015/02/09 15:48:17
Done.
|
| + observed_form()->new_password_element = |
| + base::ASCIIToUTF16("new_password_field"); |
| + |
| + TestPasswordManagerClient client_with_store(mock_store()); |
| + PasswordFormManager manager(NULL, &client_with_store, |
| + client_with_store.driver(), *observed_form(), |
| + false); |
| + EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) |
| + .WillRepeatedly(Return(false)); |
| + SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); |
| + |
| + // User submits ignorable change-password form (i.e. without |
| + // *autocomplete=username* markup) having matching username and password to |
| + // the stored form. |
| + PasswordForm credentials(*observed_form()); |
| + credentials.username_value = saved_match()->username_value; |
| + credentials.password_value = saved_match()->password_value; |
| + credentials.new_password_value = ASCIIToUTF16("NewPassword"); |
| + credentials.preferred = true; |
| + EXPECT_TRUE(manager.ProvisionallySave( |
| + credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES)); |
| + |
| + // Successful match found. The PasswordManager would instruct |
|
vabr (Chromium)
2015/02/06 16:27:07
would -> should
Pritam Nikam
2015/02/09 15:48:17
Done.
|
| + // PasswordFormManager to overwrite the password for stored form. |
| + EXPECT_FALSE(manager.IsNewLogin()); |
| + EXPECT_EQ(credentials.signon_realm, |
| + GetPendingCredentials(&manager)->signon_realm); |
| + EXPECT_EQ(credentials.username_value, |
| + GetPendingCredentials(&manager)->username_value); |
| + |
| + // By this point, the PasswordFormManager should have overwritten the new |
| + // password value to be the current password. |
| + EXPECT_EQ(credentials.new_password_value, |
| + GetPendingCredentials(&manager)->password_value); |
| +} |
| + |
| +TEST_F(PasswordFormManagerTest, |
| + SubmitIngnorableChanePasswordForm_NotMatchingPassword) { |
| + observed_form()->new_password_element = |
| + base::ASCIIToUTF16("new_password_field"); |
| + |
| + TestPasswordManagerClient client_with_store(mock_store()); |
| + PasswordFormManager manager(NULL, &client_with_store, |
| + client_with_store.driver(), *observed_form(), |
| + false); |
| + EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) |
| + .WillRepeatedly(Return(false)); |
| + SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); |
| + |
| + // User submits ignorable change-password form (i.e. without |
| + // *autocomplete=username* markup) having non-matching password to the stored |
| + // form. |
| + PasswordForm credentials(*observed_form()); |
| + credentials.username_value = saved_match()->username_value; |
| + credentials.password_value = ASCIIToUTF16("DifferntPassword"); |
| + credentials.new_password_value = ASCIIToUTF16("NewPassword"); |
| + credentials.preferred = true; |
| + EXPECT_FALSE(manager.ProvisionallySave( |
| + credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES)); |
| +} |
| + |
| +TEST_F(PasswordFormManagerTest, |
| + SubmitIngnorableChanePasswordForm_NotMatchingUsername) { |
| + observed_form()->new_password_element = |
| + base::ASCIIToUTF16("new_password_field"); |
| + |
| + TestPasswordManagerClient client_with_store(mock_store()); |
| + PasswordFormManager manager(NULL, &client_with_store, |
| + client_with_store.driver(), *observed_form(), |
| + false); |
| + EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) |
| + .WillRepeatedly(Return(false)); |
| + SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); |
| + |
| + // User submits ignorable change-password form (i.e. without |
| + // *autocomplete=username* markup) having non-matching username to the stored |
| + // form. |
| + PasswordForm credentials(*observed_form()); |
| + credentials.username_value = ASCIIToUTF16("DifferntUsername"); |
| + credentials.password_value = saved_match()->password_value; |
| + credentials.new_password_value = ASCIIToUTF16("NewPassword"); |
| + credentials.preferred = true; |
| + EXPECT_FALSE(manager.ProvisionallySave( |
| + credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES)); |
| +} |
| + |
| } // namespace password_manager |