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

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

Issue 299443002: Password Login Database: report correct changes from UpdateLogin(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added UpdateNonexistentLogin tests Created 6 years, 7 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/login_database_unittest.cc
diff --git a/components/password_manager/core/browser/login_database_unittest.cc b/components/password_manager/core/browser/login_database_unittest.cc
index 1039746f9cdfba080edbb429fc2050c9e70ebe7f..52c4c0dd2cd03f8955b28be37334c6fa9d694902 100644
--- a/components/password_manager/core/browser/login_database_unittest.cc
+++ b/components/password_manager/core/browser/login_database_unittest.cc
@@ -29,6 +29,11 @@ PasswordStoreChangeList AddChangeForForm(const PasswordForm& form) {
form));
}
+PasswordStoreChangeList UpdateChangeForForm(const PasswordForm& form) {
+ return PasswordStoreChangeList(1, PasswordStoreChange(
+ PasswordStoreChange::UPDATE, form));
+}
+
} // namespace
// Serialization routines for vectors implemented in login_database.cc.
@@ -214,9 +219,7 @@ TEST_F(LoginDatabaseTest, Logins) {
// We update, and check to make sure it matches the
// old form, and there is only one record.
- int rows_changed = 0;
- EXPECT_TRUE(db_.UpdateLogin(form6, &rows_changed));
- EXPECT_EQ(1, rows_changed);
+ EXPECT_EQ(UpdateChangeForForm(form6), db_.UpdateLogin(form6));
// matches
EXPECT_TRUE(db_.GetLogins(form5, &result));
EXPECT_EQ(1U, result.size());
@@ -748,7 +751,8 @@ TEST_F(LoginDatabaseTest, UpdateIncompleteCredentials) {
completed_form.username_element = encountered_form.username_element;
completed_form.password_element = encountered_form.password_element;
completed_form.submit_element = encountered_form.submit_element;
- EXPECT_TRUE(db_.UpdateLogin(completed_form, NULL));
+ EXPECT_EQ(AddChangeForForm(completed_form), db_.AddLogin(completed_form));
+ EXPECT_TRUE(db_.RemoveLogin(incomplete_form));
// Get matches for encountered_form again.
EXPECT_TRUE(db_.GetLogins(encountered_form, &result));
@@ -787,6 +791,9 @@ TEST_F(LoginDatabaseTest, UpdateOverlappingCredentials) {
complete_form.username_element = ASCIIToUTF16("username_element");
complete_form.password_element = ASCIIToUTF16("password_element");
complete_form.submit_element = ASCIIToUTF16("submit");
+
+ // An update fails because the primary key for |complete_form| is different.
+ EXPECT_EQ(PasswordStoreChangeList(), db_.UpdateLogin(complete_form));
EXPECT_EQ(AddChangeForForm(complete_form), db_.AddLogin(complete_form));
// Make sure both passwords exist.
@@ -797,19 +804,22 @@ TEST_F(LoginDatabaseTest, UpdateOverlappingCredentials) {
// Simulate the user changing their password.
complete_form.password_value = ASCIIToUTF16("new_password");
- EXPECT_TRUE(db_.UpdateLogin(complete_form, NULL));
+ EXPECT_EQ(UpdateChangeForForm(complete_form), db_.UpdateLogin(complete_form));
- // Only one updated form should exist now.
+ // Both still exist now.
EXPECT_TRUE(db_.GetAutofillableLogins(&result.get()));
- ASSERT_EQ(1U, result.size());
+ ASSERT_EQ(2U, result.size());
- PasswordForm expected_form(complete_form);
#if defined(OS_MACOSX) && !defined(OS_IOS)
// On Mac, passwords are not stored in login database, instead they're in
// the keychain.
- expected_form.password_value.clear();
+ complete_form.password_value.clear();
+ incomplete_form.password_value.clear();
#endif // OS_MACOSX && !OS_IOS
- EXPECT_EQ(expected_form, *result[0]);
+ if (result[0]->username_element.empty())
+ std::swap(result[0], result[1]);
+ EXPECT_EQ(complete_form, *result[0]);
+ EXPECT_EQ(incomplete_form, *result[1]);
}
TEST_F(LoginDatabaseTest, DoubleAdd) {

Powered by Google App Engine
This is Rietveld 408576698