Index: chrome/browser/sync/util/user_settings_unittest.cc |
=================================================================== |
--- chrome/browser/sync/util/user_settings_unittest.cc (revision 0) |
+++ chrome/browser/sync/util/user_settings_unittest.cc (revision 0) |
@@ -0,0 +1,86 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE entry. |
+ |
+#include "base/file_util.h" |
+#include "base/test_file_util.h" |
+#include "chrome/browser/sync/syncable/directory_manager.h" |
+#include "chrome/browser/sync/util/user_settings.h" |
+#include "chrome/browser/sync/util/query_helpers.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using browser_sync::UserSettings; |
+ |
+static const wchar_t* kV10UserSettingsDB = L"Version10Settings.sqlite3"; |
+static const wchar_t* kOldStyleSyncDataDB = L"OldStyleSyncData.sqlite3"; |
+ |
+class UserSettingsTest : public testing::Test { |
+ public: |
+ UserSettingsTest() : sync_data_("Some sync data") { } |
+ void SetUpVersion10Databases() { |
+ CleanUpVersion10Databases(); |
+ sqlite3* primer_handle = NULL; |
+ ASSERT_EQ(SQLITE_OK, SqliteOpen(kV10UserSettingsDB, |
+ &primer_handle)); |
+ FilePath old_sync_data(kOldStyleSyncDataDB); |
+ |
+ ASSERT_EQ(sync_data_.length(), file_util::WriteFile( |
+ old_sync_data, sync_data_.data(), sync_data_.length())); |
+ |
+ // Create settings table. |
+ ExecOrDie(primer_handle, "CREATE TABLE settings" |
+ " (email, key, value, " |
+ " PRIMARY KEY(email, key) ON CONFLICT REPLACE)"); |
+ |
+ // Create and populate version table. |
+ ExecOrDie(primer_handle, "CREATE TABLE db_version ( version )"); |
+ ExecOrDie(primer_handle, "INSERT INTO db_version values ( ? )", 10); |
+ // Create shares table. |
+ ExecOrDie(primer_handle, "CREATE TABLE shares" |
+ " (email, share_name, file_name," |
+ " PRIMARY KEY(email, share_name) ON CONFLICT REPLACE)"); |
+ // Populate a share. |
+ ExecOrDie(primer_handle, "INSERT INTO shares values ( ?, ?, ?)", |
+ "foo@foo.com", "foo@foo.com", WideToUTF8(kOldStyleSyncDataDB)); |
+ sqlite3_close(primer_handle); |
+ } |
+ |
+ void CleanUpVersion10Databases() { |
+ ASSERT_TRUE(file_util::DieFileDie(FilePath(kV10UserSettingsDB), false)); |
+ ASSERT_TRUE(file_util::DieFileDie(FilePath(kOldStyleSyncDataDB), false)); |
+ ASSERT_TRUE(file_util::DieFileDie(FilePath(L"SyncData.sqlite3"), false)); |
+ } |
+ |
+ const std::string& sync_data() const { return sync_data_; } |
+ |
+ private: |
+ std::string sync_data_; |
+}; |
+ |
+TEST_F(UserSettingsTest, MigrateFromV10ToV11) { |
+ SetUpVersion10Databases(); |
+ { |
+ // Create a UserSettings, which should trigger migration code. |
+ // We do this inside a scoped block so it closes itself and we can poke |
+ // around to see what happened later. |
+ UserSettings settings; |
+ settings.Init(kV10UserSettingsDB); |
+ } |
+ |
+ // Now poke around using sqlite to see if UserSettings migrated properly. |
+ sqlite3* handle = NULL; |
+ ASSERT_EQ(SQLITE_OK, SqliteOpen(kV10UserSettingsDB, &handle)); |
+ ScopedStatement version_query(PrepareQuery(handle, |
+ "SELECT version FROM db_version")); |
+ ASSERT_EQ(SQLITE_ROW, sqlite3_step(version_query.get())); |
+ |
+ const int version = sqlite3_column_int(version_query.get(), 0); |
+ EXPECT_EQ(11, version); |
+ EXPECT_FALSE(file_util::PathExists(kOldStyleSyncDataDB)); |
+ |
+ std::wstring path(syncable::DirectoryManager::GetSyncDataDatabaseFilename()); |
+ |
+ std::string contents; |
+ ASSERT_TRUE(file_util::ReadFileToString(path, &contents)); |
+ EXPECT_EQ(sync_data(), contents); |
+} |
Property changes on: chrome\browser\sync\util\user_settings_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |