Index: chrome/browser/webdata/web_database_migration_unittest.cc |
diff --git a/chrome/browser/webdata/web_database_migration_unittest.cc b/chrome/browser/webdata/web_database_migration_unittest.cc |
index 5cca55b96936d6ad6bbe10843bcd21b8a58902fd..aab7278553607ba785c0fe0e462508275d97d1e6 100644 |
--- a/chrome/browser/webdata/web_database_migration_unittest.cc |
+++ b/chrome/browser/webdata/web_database_migration_unittest.cc |
@@ -195,7 +195,7 @@ class WebDatabaseMigrationTest : public testing::Test { |
DISALLOW_COPY_AND_ASSIGN(WebDatabaseMigrationTest); |
}; |
-const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 47; |
+const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 48; |
void WebDatabaseMigrationTest::LoadDatabase(const FilePath::StringType& file) { |
std::string contents; |
@@ -2312,3 +2312,111 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion46CorruptBackupToCurrent) { |
EXPECT_FALSE(connection.DoesTableExist("keywords_backup")); |
} |
} |
+ |
+#if !defined(GOOGLE_CHROME_BUILD) |
+// Tests that the |search_terms_replacement_key| column is added to the keyword |
+// table schema for a version 48 database. |
+// |
+// This is enabled on Chromium only because a valid signature is required for |
+// this test, which makes it key-dependent. |
+TEST_F(WebDatabaseMigrationTest, MigrateVersion47ToCurrent) { |
+ ASSERT_NO_FATAL_FAILURE( |
+ LoadDatabase(FILE_PATH_LITERAL("version_47.sql"))); |
+ |
+ // Verify pre-conditions. These are expectations for version 47 of the |
+ // database. |
+ { |
+ sql::Connection connection; |
+ ASSERT_TRUE(connection.Open(GetDatabasePath())); |
+ ASSERT_TRUE(sql::MetaTable::DoesTableExist(&connection)); |
+ |
+ sql::MetaTable meta_table; |
+ ASSERT_TRUE(meta_table.Init(&connection, 47, 47)); |
+ |
+ ASSERT_FALSE(connection.DoesColumnExist("keywords", |
+ "search_terms_replacement_key")); |
+ ASSERT_FALSE(connection.DoesColumnExist("keywords_backup", |
+ "search_terms_replacement_key")); |
+ } |
+ |
+ // Load the database via the WebDatabase class and migrate the database to |
+ // the current version. |
+ { |
+ WebDatabase db; |
+ ASSERT_EQ(sql::INIT_OK, db.Init(GetDatabasePath())); |
+ ASSERT_FALSE(db.GetKeywordTable()->DidDefaultSearchProviderChange()); |
+ } |
+ |
+ // Verify post-conditions. These are expectations for current version of the |
+ // database. |
+ { |
+ sql::Connection connection; |
+ ASSERT_TRUE(connection.Open(GetDatabasePath())); |
+ ASSERT_TRUE(sql::MetaTable::DoesTableExist(&connection)); |
+ |
+ // Check version. |
+ EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); |
+ |
+ // A new column should have been created. |
+ EXPECT_TRUE(connection.DoesColumnExist("keywords", |
+ "search_terms_replacement_key")); |
+ ASSERT_TRUE(connection.DoesColumnExist("keywords_backup", |
+ "search_terms_replacement_key")); |
+ } |
+} |
+#endif // !defined(GOOGLE_CHROME_BUILD) |
+ |
+// Like MigrateVersion47ToCurrent above, but with a corrupt backup signature. |
+// This should result in us dropping the backup table but successfully migrating |
+// otherwise. |
+// |
+// Because this test doesn't rely on a valid signature, we can run it on |
dhollowa
2012/12/13 01:23:08
nit: This comment looks like a copy/paste error si
beaudoin
2012/12/13 17:14:53
"We _can_ run it on official builds as well." :)
|
+// official builds as well. |
+TEST_F(WebDatabaseMigrationTest, MigrateVersion47CorruptBackupToCurrent) { |
+ ASSERT_NO_FATAL_FAILURE( |
+ LoadDatabase(FILE_PATH_LITERAL("version_47_backup_corrupt.sql"))); |
+ |
+ // Verify pre-conditions. These are expectations for version 46 of the |
+ // database. |
+ { |
+ sql::Connection connection; |
+ ASSERT_TRUE(connection.Open(GetDatabasePath())); |
+ ASSERT_TRUE(sql::MetaTable::DoesTableExist(&connection)); |
+ |
+ sql::MetaTable meta_table; |
+ ASSERT_TRUE(meta_table.Init(&connection, 47, 47)); |
+ |
+ ASSERT_FALSE(connection.DoesColumnExist("keywords", |
+ "search_terms_replacement_key")); |
+ ASSERT_FALSE(connection.DoesColumnExist("keywords_backup", |
+ "search_terms_replacement_key")); |
+ } |
+ |
+ // Load the database via the WebDatabase class and migrate the database to |
+ // the current version. |
+ { |
+ WebDatabase db; |
+ ASSERT_EQ(sql::INIT_OK, db.Init(GetDatabasePath())); |
+ // We should detect a "search provider change" as a side effect of dropping |
+ // the backup table. |
+ ASSERT_TRUE(db.GetKeywordTable()->DidDefaultSearchProviderChange()); |
+ } |
+ |
+ // Verify post-conditions. These are expectations for current version of the |
+ // database. |
+ { |
+ sql::Connection connection; |
+ ASSERT_TRUE(connection.Open(GetDatabasePath())); |
+ ASSERT_TRUE(sql::MetaTable::DoesTableExist(&connection)); |
+ |
+ // Check version. |
+ EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); |
+ |
+ // A new column should have been created. |
+ EXPECT_TRUE(connection.DoesColumnExist("keywords", |
+ "search_terms_replacement_key")); |
+ |
+ // The backup table should be gone. |
+ EXPECT_FALSE(connection.DoesTableExist("keywords_backup")); |
+ } |
+} |