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

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

Issue 894583003: Rename PasswordForm::is_zero_click to PasswordForm::skip_next_zero_click. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix linux Created 5 years, 10 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 b5562617a30f02f010fd96d7180c176502df99c4..1eb437a58a46d441057494eb4c08399a0cc79057 100644
--- a/components/password_manager/core/browser/login_database_unittest.cc
+++ b/components/password_manager/core/browser/login_database_unittest.cc
@@ -11,6 +11,7 @@
#include "base/memory/scoped_vector.h"
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/histogram_tester.h"
#include "base/time/time.h"
@@ -65,7 +66,7 @@ void GenerateExamplePasswordForm(PasswordForm* form) {
form->display_name = ASCIIToUTF16("Mr. Smith");
form->avatar_url = GURL("https://accounts.google.com/Avatar");
form->federation_url = GURL("https://accounts.google.com/federation");
- form->is_zero_click = true;
+ form->skip_zero_click = true;
}
} // namespace
@@ -617,7 +618,7 @@ static bool AddTimestampedLogin(LoginDatabase* db,
form.display_name = ASCIIToUTF16(unique_string);
form.avatar_url = GURL("https://accounts.google.com/Avatar");
form.federation_url = GURL("https://accounts.google.com/federation");
- form.is_zero_click = true;
+ form.skip_zero_click = true;
if (date_is_creation)
form.date_created = time;
@@ -741,7 +742,7 @@ TEST_F(LoginDatabaseTest, BlacklistedLogins) {
form.display_name = ASCIIToUTF16("Mr. Smith");
form.avatar_url = GURL("https://accounts.google.com/Avatar");
form.federation_url = GURL("https://accounts.google.com/federation");
- form.is_zero_click = true;
+ form.skip_zero_click = true;
EXPECT_EQ(AddChangeForForm(form), db().AddLogin(form));
// Get all non-blacklisted logins (should be none).
@@ -980,7 +981,7 @@ TEST_F(LoginDatabaseTest, UpdateLogin) {
form.display_name = ASCIIToUTF16("Mr. Smith");
form.avatar_url = GURL("https://accounts.google.com/Avatar");
form.federation_url = GURL("https://accounts.google.com/federation");
- form.is_zero_click = true;
+ form.skip_zero_click = true;
EXPECT_EQ(UpdateChangeForForm(form), db().UpdateLogin(form));
ScopedVector<autofill::PasswordForm> result;
@@ -1099,7 +1100,8 @@ TEST_F(LoginDatabaseTest, FilePermissions) {
}
#endif // defined(OS_POSIX)
-class LoginDatabaseMigrationTest : public testing::Test {
+// Test the migration from GetParam() version to kCurrentVersionNumber.
+class LoginDatabaseMigrationTest : public testing::TestWithParam<int> {
protected:
void SetUp() override {
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
@@ -1110,12 +1112,12 @@ class LoginDatabaseMigrationTest : public testing::Test {
database_path_ = temp_dir_.path().AppendASCII("test.db");
}
- // Creates database of specific |version|.
- void CreateDatabase(std::string version) {
+ // Creates the databse from |sql_file|.
+ void CreateDatabase(base::StringPiece sql_file) {
base::FilePath database_dump;
- PathService::Get(base::DIR_SOURCE_ROOT, &database_dump);
- database_dump = database_dump.Append(database_dump_location_)
- .AppendASCII("login_db_v" + version + ".sql");
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &database_dump));
+ database_dump =
+ database_dump.Append(database_dump_location_).AppendASCII(sql_file);
ASSERT_TRUE(
sql::test::CreateDatabaseFromSQL(database_path_, database_dump));
}
@@ -1135,8 +1137,8 @@ class LoginDatabaseMigrationTest : public testing::Test {
return results;
sql::Statement s(db.GetCachedStatement(
- SQL_FROM_HERE,
- "SELECT date_created from logins order by username_value"));
+ SQL_FROM_HERE, "SELECT date_created FROM logins "
+ "ORDER BY username_value, date_created DESC"));
if (!s.is_valid()) {
db.Close();
return results;
@@ -1150,6 +1152,12 @@ class LoginDatabaseMigrationTest : public testing::Test {
return results;
}
+ // Returns the database version for the test.
+ int version() const { return GetParam(); }
+
+ // Actual test body.
+ void MigrationToVCurrent(base::StringPiece sql_file);
+
base::FilePath database_path_;
private:
@@ -1157,63 +1165,85 @@ class LoginDatabaseMigrationTest : public testing::Test {
base::ScopedTempDir temp_dir_;
};
-// Tests the migration of the login database from version 1 to version
-// kCurrentVersionNumber. This test will fail when kCurrentVersionNumber
-// will be changed to 10, because file login_db_v10.sql doesn't exist.
-// It has to be added in order to fix test.
-TEST_F(LoginDatabaseMigrationTest, MigrationV1ToVCurrent) {
- std::vector<std::string> versions;
- for (int version = 1; version < kCurrentVersionNumber; ++version)
- versions.push_back(base::IntToString(version));
- versions.push_back("9_without_use_additional_auth_field");
-
- for (const auto& version : versions) {
- CreateDatabase(version);
- SCOPED_TRACE(testing::Message("Version = ") << version);
- // Original date, in seconds since UTC epoch.
- std::vector<int64_t> date_created(GetDateCreated());
- int table_version;
- base::StringToInt(version, &table_version);
- // Migration to version 8 performs changes dates to the new format.
- // So for versions less of equal to 8 create date should be in old
- // format before migration and in new format after.
- if (table_version <= 8) {
- ASSERT_EQ(1402955745, date_created[0]);
- ASSERT_EQ(1402950000, date_created[1]);
- } else {
- ASSERT_EQ(13047429345000000, date_created[0]);
- ASSERT_EQ(13047423600000000, date_created[1]);
- }
+void LoginDatabaseMigrationTest::MigrationToVCurrent(
+ base::StringPiece sql_file) {
+ SCOPED_TRACE(testing::Message("Version file = ") << sql_file);
+ CreateDatabase(sql_file);
+ // Original date, in seconds since UTC epoch.
+ std::vector<int64_t> date_created(GetDateCreated());
+ ASSERT_EQ(2U, date_created.size());
+ // Migration to version 8 performs changes dates to the new format.
+ // So for versions less of equal to 8 create date should be in old
+ // format before migration and in new format after.
+ if (version() <= 8) {
+ ASSERT_EQ(1402955745, date_created[0]);
+ ASSERT_EQ(1402950000, date_created[1]);
+ } else {
+ ASSERT_EQ(13047429345000000, date_created[0]);
+ ASSERT_EQ(13047423600000000, date_created[1]);
+ }
- {
- // Assert that the database was successfully opened and updated
- // to current version.
- LoginDatabase db(database_path_);
- ASSERT_TRUE(db.Init());
- // Verifies that the final version can save all the appropriate fields.
- ScopedVector<autofill::PasswordForm> result;
- PasswordForm form;
- GenerateExamplePasswordForm(&form);
- db.AddLogin(form);
- EXPECT_TRUE(db.GetLogins(form, &result));
- ASSERT_EQ(1U, result.size());
- FormsAreEqual(form, *result[0]);
- EXPECT_TRUE(db.RemoveLogin(form));
- result.clear();
+ {
+ // Assert that the database was successfully opened and updated
+ // to current version.
+ LoginDatabase db(database_path_);
+ ASSERT_TRUE(db.Init());
+ // Verifies that the final version can save all the appropriate fields.
+ PasswordForm form;
+ GenerateExamplePasswordForm(&form);
+ // Add the same form twice to test the constraints in the database.
+ EXPECT_EQ(AddChangeForForm(form), db.AddLogin(form));
+ PasswordStoreChangeList list;
+ list.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form));
+ list.push_back(PasswordStoreChange(PasswordStoreChange::ADD, form));
+ EXPECT_EQ(list, db.AddLogin(form));
+
+ ScopedVector<autofill::PasswordForm> result;
+ EXPECT_TRUE(db.GetLogins(form, &result));
+ ASSERT_EQ(1U, result.size());
+ FormsAreEqual(form, *result[0]);
+ EXPECT_TRUE(db.RemoveLogin(form));
+ }
+ // New date, in microseconds since platform independent epoch.
+ std::vector<int64_t> new_date_created(GetDateCreated());
+ if (version() <= 8) {
+ ASSERT_EQ(2U, new_date_created.size());
+ // Check that the two dates match up.
+ for (size_t i = 0; i < date_created.size(); ++i) {
+ EXPECT_EQ(base::Time::FromInternalValue(new_date_created[i]),
+ base::Time::FromTimeT(date_created[i]));
}
- // New date, in microseconds since platform independent epoch.
- std::vector<int64_t> new_date_created(GetDateCreated());
+ } else if (version() == 10) {
+ // The test data is setup on this version to cause a unique key collision.
+ EXPECT_EQ(1U, new_date_created.size());
+ } else {
+ ASSERT_EQ(2U, new_date_created.size());
ASSERT_EQ(13047429345000000, new_date_created[0]);
ASSERT_EQ(13047423600000000, new_date_created[1]);
- if (table_version <= 8) {
- // Check that the two dates match up.
- for (size_t i = 0; i < date_created.size(); ++i) {
- EXPECT_EQ(base::Time::FromInternalValue(new_date_created[i]),
- base::Time::FromTimeT(date_created[i]));
- }
- }
- DestroyDatabase();
}
+ DestroyDatabase();
+}
+
+// Tests the migration of the login database from version() to
+// kCurrentVersionNumber.
+TEST_P(LoginDatabaseMigrationTest, MigrationToVCurrent) {
+ MigrationToVCurrent(base::StringPrintf("login_db_v%d.sql", version()));
+}
+
+class LoginDatabaseMigrationTestV9 : public LoginDatabaseMigrationTest {
+};
+
+// Tests migration from the alternative version #9, see crbug.com/423716.
+TEST_P(LoginDatabaseMigrationTestV9, V9WithoutUseAdditionalAuthField) {
+ ASSERT_EQ(9, version());
+ MigrationToVCurrent("login_db_v9_without_use_additional_auth_field.sql");
}
+INSTANTIATE_TEST_CASE_P(MigrationToVCurrent,
+ LoginDatabaseMigrationTest,
+ testing::Range(1, kCurrentVersionNumber));
+INSTANTIATE_TEST_CASE_P(MigrationToVCurrent,
+ LoginDatabaseMigrationTestV9,
+ testing::Values(9));
+
} // namespace password_manager
« no previous file with comments | « components/password_manager/core/browser/login_database.cc ('k') | components/test/data/password_manager/login_db_v10.sql » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698