| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "app/sql/statement.h" | 7 #include "app/sql/statement.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/scoped_temp_dir.h" | 9 #include "base/scoped_temp_dir.h" |
| 10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 179 |
| 180 // Assertion testing for migrating from version 27 and 28. | 180 // Assertion testing for migrating from version 27 and 28. |
| 181 void MigrateVersion28Assertions(); | 181 void MigrateVersion28Assertions(); |
| 182 | 182 |
| 183 private: | 183 private: |
| 184 ScopedTempDir temp_dir_; | 184 ScopedTempDir temp_dir_; |
| 185 | 185 |
| 186 DISALLOW_COPY_AND_ASSIGN(WebDatabaseMigrationTest); | 186 DISALLOW_COPY_AND_ASSIGN(WebDatabaseMigrationTest); |
| 187 }; | 187 }; |
| 188 | 188 |
| 189 const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 37; | 189 const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 38; |
| 190 | 190 |
| 191 void WebDatabaseMigrationTest::LoadDatabase(const FilePath::StringType& file) { | 191 void WebDatabaseMigrationTest::LoadDatabase(const FilePath::StringType& file) { |
| 192 std::string contents; | 192 std::string contents; |
| 193 ASSERT_TRUE(GetWebDatabaseData(FilePath(file), &contents)); | 193 ASSERT_TRUE(GetWebDatabaseData(FilePath(file), &contents)); |
| 194 | 194 |
| 195 sql::Connection connection; | 195 sql::Connection connection; |
| 196 ASSERT_TRUE(connection.Open(GetDatabasePath())); | 196 ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| 197 ASSERT_TRUE(connection.Execute(contents.data())); | 197 ASSERT_TRUE(connection.Execute(contents.data())); |
| 198 } | 198 } |
| 199 | 199 |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 | 447 |
| 448 // Verify post-conditions. These are expectations for current version of the | 448 // Verify post-conditions. These are expectations for current version of the |
| 449 // database. | 449 // database. |
| 450 { | 450 { |
| 451 sql::Connection connection; | 451 sql::Connection connection; |
| 452 ASSERT_TRUE(connection.Open(GetDatabasePath())); | 452 ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| 453 | 453 |
| 454 // Check version. | 454 // Check version. |
| 455 EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); | 455 EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); |
| 456 | 456 |
| 457 // |keywords| |logo_id| column should have been added. | 457 // |keywords| |created_by_policy| column should have been added. |
| 458 EXPECT_TRUE(connection.DoesColumnExist("keywords", "id")); | 458 EXPECT_TRUE(connection.DoesColumnExist("keywords", "id")); |
| 459 EXPECT_TRUE(connection.DoesColumnExist("keywords", "created_by_policy")); | 459 EXPECT_TRUE(connection.DoesColumnExist("keywords", "created_by_policy")); |
| 460 } | 460 } |
| 461 } | 461 } |
| 462 | 462 |
| 463 // Tests that the credit_cards.billing_address column is changed from a string | 463 // Tests that the credit_cards.billing_address column is changed from a string |
| 464 // to an int whilst preserving the associated billing address. This version of | 464 // to an int whilst preserving the associated billing address. This version of |
| 465 // the test makes sure a stored label is converted to an ID. | 465 // the test makes sure a stored label is converted to an ID. |
| 466 TEST_F(WebDatabaseMigrationTest, MigrateVersion26ToCurrentStringLabels) { | 466 TEST_F(WebDatabaseMigrationTest, MigrateVersion26ToCurrentStringLabels) { |
| 467 // This schema is taken from a build prior to the change of column type for | 467 // This schema is taken from a build prior to the change of column type for |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 | 580 |
| 581 // Verify post-conditions. These are expectations for current version of the | 581 // Verify post-conditions. These are expectations for current version of the |
| 582 // database. | 582 // database. |
| 583 { | 583 { |
| 584 sql::Connection connection; | 584 sql::Connection connection; |
| 585 ASSERT_TRUE(connection.Open(GetDatabasePath())); | 585 ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| 586 | 586 |
| 587 // Check version. | 587 // Check version. |
| 588 EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); | 588 EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); |
| 589 | 589 |
| 590 // |keywords| |logo_id| column should have been added. | 590 // |keywords| |created_by_policy| column should have been added. |
| 591 EXPECT_TRUE(connection.DoesColumnExist("keywords", "id")); | 591 EXPECT_TRUE(connection.DoesColumnExist("keywords", "id")); |
| 592 EXPECT_TRUE(connection.DoesColumnExist("keywords", "created_by_policy")); | 592 EXPECT_TRUE(connection.DoesColumnExist("keywords", "created_by_policy")); |
| 593 EXPECT_FALSE(connection.DoesColumnExist("credit_cards", "billing_address")); | 593 EXPECT_FALSE(connection.DoesColumnExist("credit_cards", "billing_address")); |
| 594 | 594 |
| 595 // Verify the credit card data is converted. | 595 // Verify the credit card data is converted. |
| 596 sql::Statement s(connection.GetUniqueStatement( | 596 sql::Statement s(connection.GetUniqueStatement( |
| 597 "SELECT guid, name_on_card, expiration_month, expiration_year, " | 597 "SELECT guid, name_on_card, expiration_month, expiration_year, " |
| 598 "card_number_encrypted, date_modified " | 598 "card_number_encrypted, date_modified " |
| 599 "FROM credit_cards")); | 599 "FROM credit_cards")); |
| 600 ASSERT_TRUE(s.Step()); | 600 ASSERT_TRUE(s.Step()); |
| 601 EXPECT_EQ("Jack", s.ColumnString(1)); | 601 EXPECT_EQ("Jack", s.ColumnString(1)); |
| 602 EXPECT_EQ(2, s.ColumnInt(2)); | 602 EXPECT_EQ(2, s.ColumnInt(2)); |
| 603 EXPECT_EQ(2012, s.ColumnInt(3)); | 603 EXPECT_EQ(2012, s.ColumnInt(3)); |
| 604 // Column 5 is encrypted credit card number blob. | 604 // Column 5 is encrypted credit card number blo b. |
| 605 // Column 6 is date_modified. | 605 // Column 6 is date_modified. |
| 606 } | 606 } |
| 607 } | 607 } |
| 608 | 608 |
| 609 // Tests migration from 27->current. This test is now the same as 28->current | 609 // Tests migration from 27->current. This test is now the same as 28->current |
| 610 // as the column added in 28 was nuked in 29. | 610 // as the column added in 28 was nuked in 29. |
| 611 TEST_F(WebDatabaseMigrationTest, MigrateVersion27ToCurrent) { | 611 TEST_F(WebDatabaseMigrationTest, MigrateVersion27ToCurrent) { |
| 612 // Initialize the database. | 612 // Initialize the database. |
| 613 ASSERT_NO_FATAL_FAILURE(LoadDatabase(FILE_PATH_LITERAL("version_27.sql"))); | 613 ASSERT_NO_FATAL_FAILURE(LoadDatabase(FILE_PATH_LITERAL("version_27.sql"))); |
| 614 | 614 |
| (...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 ASSERT_TRUE(s2.Step()); | 1417 ASSERT_TRUE(s2.Step()); |
| 1418 EXPECT_EQ("00000000-0000-0000-0000-000000000005", s2.ColumnString(0)); | 1418 EXPECT_EQ("00000000-0000-0000-0000-000000000005", s2.ColumnString(0)); |
| 1419 | 1419 |
| 1420 ASSERT_TRUE(s2.Step()); | 1420 ASSERT_TRUE(s2.Step()); |
| 1421 EXPECT_EQ("00000000-0000-0000-0000-000000000006", s2.ColumnString(0)); | 1421 EXPECT_EQ("00000000-0000-0000-0000-000000000006", s2.ColumnString(0)); |
| 1422 | 1422 |
| 1423 // That should be it. | 1423 // That should be it. |
| 1424 ASSERT_FALSE(s2.Step()); | 1424 ASSERT_FALSE(s2.Step()); |
| 1425 } | 1425 } |
| 1426 } | 1426 } |
| 1427 |
| 1428 // Tests that the |keywords| |last_modified| column gets added to the schema for |
| 1429 // a version 37 database. |
| 1430 TEST_F(WebDatabaseMigrationTest, MigrateVersion37ToCurrent) { |
| 1431 // This schema is taken from a build prior to the addition of the |keywords| |
| 1432 // |last_modified| column. |
| 1433 ASSERT_NO_FATAL_FAILURE(LoadDatabase(FILE_PATH_LITERAL("version_37.sql"))); |
| 1434 |
| 1435 // Verify pre-conditions. These are expectations for version 37 of the |
| 1436 // database. |
| 1437 { |
| 1438 sql::Connection connection; |
| 1439 ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| 1440 |
| 1441 // Columns existing and not existing before current version. |
| 1442 ASSERT_TRUE(connection.DoesColumnExist("keywords", "id")); |
| 1443 ASSERT_FALSE(connection.DoesColumnExist("keywords", "last_modified")); |
| 1444 } |
| 1445 |
| 1446 // Load the database via the WebDatabase class and migrate the database to |
| 1447 // the current version. |
| 1448 { |
| 1449 WebDatabase db; |
| 1450 ASSERT_EQ(sql::INIT_OK, db.Init(GetDatabasePath())); |
| 1451 } |
| 1452 |
| 1453 // Verify post-conditions. These are expectations for current version of the |
| 1454 // database. |
| 1455 { |
| 1456 sql::Connection connection; |
| 1457 ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| 1458 |
| 1459 // Check version. |
| 1460 EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection)); |
| 1461 |
| 1462 // |keywords| |last_modified| column should have been added. |
| 1463 EXPECT_TRUE(connection.DoesColumnExist("keywords", "id")); |
| 1464 EXPECT_TRUE(connection.DoesColumnExist("keywords", "last_modified")); |
| 1465 } |
| 1466 } |
| OLD | NEW |