Index: chrome/browser/sync/util/user_settings_unittest.cc |
diff --git a/chrome/browser/sync/util/user_settings_unittest.cc b/chrome/browser/sync/util/user_settings_unittest.cc |
deleted file mode 100644 |
index 027875df2070ee0d63cb7a605b27ddcca93c700a..0000000000000000000000000000000000000000 |
--- a/chrome/browser/sync/util/user_settings_unittest.cc |
+++ /dev/null |
@@ -1,281 +0,0 @@ |
-// Copyright (c) 2011 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 file. |
- |
-#include <limits> |
-#include <string> |
- |
-#include "base/file_util.h" |
-#include "base/scoped_temp_dir.h" |
-#include "base/utf_string_conversions.h" |
-#include "build/build_config.h" |
-#include "chrome/browser/password_manager/encryptor.h" |
-#include "chrome/browser/sync/syncable/directory_manager.h" |
-#include "chrome/browser/sync/util/user_settings.h" |
-#include "sql/statement.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using std::numeric_limits; |
- |
-namespace { |
- |
-const FilePath::CharType kV10UserSettingsDB[] = |
- FILE_PATH_LITERAL("Version10Settings.sqlite3"); |
-const FilePath::CharType kV11UserSettingsDB[] = |
- FILE_PATH_LITERAL("Version11Settings.sqlite3"); |
-const FilePath::CharType kOldStyleSyncDataDB[] = |
- FILE_PATH_LITERAL("OldStyleSyncData.sqlite3"); |
- |
-} // namespace |
- |
-class UserSettingsTest : public testing::Test { |
- public: |
- UserSettingsTest() : sync_data_("Some sync data") {} |
- |
- virtual void SetUp() { |
-#if defined(OS_MACOSX) |
- // Need to mock the Keychain for unit tests on Mac to avoid possible |
- // blocking UI. |SetAuthTokenForService| uses Encryptor. |
- Encryptor::UseMockKeychain(true); |
-#endif |
- } |
- |
- // Creates and populates the V10 database files within |
- // |destination_directory|. |
- void SetUpVersion10Databases(const FilePath& destination_directory) { |
- v10_user_setting_db_path_ = |
- destination_directory.Append(FilePath(kV10UserSettingsDB)); |
- |
- sql::Connection db; |
- ASSERT_TRUE(db.Open(v10_user_setting_db_path_)); |
- |
- old_style_sync_data_path_ = |
- destination_directory.Append(FilePath(kOldStyleSyncDataDB)); |
- |
- ASSERT_EQ(sync_data_.length(), |
- static_cast<size_t>(file_util::WriteFile( |
- old_style_sync_data_path_, sync_data_.data(), |
- sync_data_.length()))); |
- |
- // Create settings table. |
- ASSERT_TRUE(db.Execute( |
- "CREATE TABLE settings (email, key, value, PRIMARY KEY(email, key)" |
- " ON CONFLICT REPLACE)")); |
- |
- // Add a blank signin table. |
- ASSERT_TRUE(db.Execute( |
- "CREATE TABLE signin_types (signin, signin_type)")); |
- |
- // Create and populate version table. |
- ASSERT_TRUE(db.Execute("CREATE TABLE db_version (version)")); |
- { |
- const char* query = "INSERT INTO db_version VALUES(?)"; |
- sql::Statement s(db.GetUniqueStatement(query)); |
- if (!s) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- s.BindInt(0, 10); |
- if (!s.Run()) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- } |
- |
- // Create shares table. |
- ASSERT_TRUE(db.Execute( |
- "CREATE TABLE shares (email, share_name, file_name," |
- " PRIMARY KEY(email, share_name) ON CONFLICT REPLACE)")); |
- // Populate a share. |
- { |
- const char* query = "INSERT INTO shares VALUES(?, ?, ?)"; |
- sql::Statement s(db.GetUniqueStatement(query)); |
- if (!s) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- s.BindString(0, "foo@foo.com"); |
- s.BindString(1, "foo@foo.com"); |
-#if defined(OS_WIN) |
- s.BindString(2, WideToUTF8(old_style_sync_data_path_.value())); |
-#elif defined(OS_POSIX) |
- s.BindString(2, old_style_sync_data_path_.value()); |
-#endif |
- if (!s.Run()) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- } |
- } |
- |
- // Creates and populates the V11 database file within |
- // |destination_directory|. |
- void SetUpVersion11Database(const FilePath& destination_directory) { |
- v11_user_setting_db_path_ = |
- destination_directory.Append(FilePath(kV11UserSettingsDB)); |
- |
- sql::Connection db; |
- ASSERT_TRUE(db.Open(v11_user_setting_db_path_)); |
- |
- // Create settings table. |
- ASSERT_TRUE(db.Execute( |
- "CREATE TABLE settings (email, key, value, PRIMARY KEY(email, key)" |
- " ON CONFLICT REPLACE)")); |
- |
- // Create and populate version table. |
- ASSERT_TRUE(db.Execute("CREATE TABLE db_version (version)")); |
- { |
- const char* query = "INSERT INTO db_version VALUES(?)"; |
- sql::Statement s(db.GetUniqueStatement(query)); |
- if (!s) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- s.BindInt(0, 11); |
- if (!s.Run()) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- } |
- |
- ASSERT_TRUE(db.Execute( |
- "CREATE TABLE signin_types (signin, signin_type)")); |
- { |
- const char* query = "INSERT INTO signin_types VALUES(?, ?)"; |
- sql::Statement s(db.GetUniqueStatement(query)); |
- if (!s) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- s.BindString(0, "test"); |
- s.BindString(1, "test"); |
- if (!s.Run()) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- } |
- } |
- |
- const std::string& sync_data() const { return sync_data_; } |
- const FilePath& v10_user_setting_db_path() const { |
- return v10_user_setting_db_path_; |
- } |
- const FilePath& v11_user_setting_db_path() const { |
- return v11_user_setting_db_path_; |
- } |
- const FilePath& old_style_sync_data_path() const { |
- return old_style_sync_data_path_; |
- } |
- |
- private: |
- FilePath v10_user_setting_db_path_; |
- FilePath old_style_sync_data_path_; |
- |
- FilePath v11_user_setting_db_path_; |
- |
- std::string sync_data_; |
-}; |
- |
-TEST_F(UserSettingsTest, MigrateFromV10ToV11) { |
- ScopedTempDir temp_dir; |
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
- SetUpVersion10Databases(temp_dir.path()); |
- { |
- // 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. |
- browser_sync::UserSettings settings; |
- settings.Init(v10_user_setting_db_path()); |
- } |
- |
- // Now poke around using sqlite to see if UserSettings migrated properly. |
- sql::Connection db; |
- ASSERT_TRUE(db.Open(v10_user_setting_db_path())); |
- |
- // Note that we don't use ScopedStatement to avoid closing the sqlite handle |
- // before finalizing the statement. |
- { |
- const char* query = "SELECT version FROM db_version"; |
- sql::Statement version_query(db.GetUniqueStatement(query)); |
- if (!version_query) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- ASSERT_TRUE(version_query.Step()); |
- const int version = version_query.ColumnInt(0); |
- EXPECT_GE(version, 11); |
- } |
- |
- EXPECT_FALSE(file_util::PathExists(old_style_sync_data_path())); |
- |
- FilePath new_style_path = temp_dir.path().Append( |
- syncable::DirectoryManager::GetSyncDataDatabaseFilename()); |
- |
- std::string contents; |
- ASSERT_TRUE(file_util::ReadFileToString(new_style_path, &contents)); |
- EXPECT_TRUE(sync_data() == contents); |
-} |
- |
-TEST_F(UserSettingsTest, MigrateFromV11ToV12) { |
- ScopedTempDir temp_dir; |
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
- SetUpVersion11Database(temp_dir.path()); |
- { |
- browser_sync::UserSettings settings; |
- settings.Init(v11_user_setting_db_path()); |
- } |
- sql::Connection db; |
- ASSERT_TRUE(db.Open(v11_user_setting_db_path())); |
- |
- { |
- const char* query = "SELECT version FROM db_version"; |
- sql::Statement version_query(db.GetUniqueStatement(query)); |
- if (!version_query) |
- LOG(FATAL) << query << "\n" << db.GetErrorMessage(); |
- |
- ASSERT_TRUE(version_query.Step()); |
- const int version = version_query.ColumnInt(0); |
- EXPECT_GE(version, 12); |
- |
- const char* query2 = "SELECT name FROM sqlite_master " |
- "WHERE type='table' AND name='signin_types'"; |
- sql::Statement table_query(db.GetUniqueStatement(query2)); |
- if (!table_query) |
- LOG(FATAL) << query2 << "\n" << db.GetErrorMessage(); |
- |
- ASSERT_FALSE(table_query.Step()); |
- } |
-} |
- |
-TEST_F(UserSettingsTest, APEncode) { |
- std::string test; |
- char i; |
- for (i = numeric_limits<char>::min(); i < numeric_limits<char>::max(); ++i) |
- test.push_back(i); |
- test.push_back(i); |
- const std::string encoded = browser_sync::APEncode(test); |
- const std::string decoded = browser_sync::APDecode(encoded); |
- ASSERT_EQ(test, decoded); |
-} |
- |
-TEST_F(UserSettingsTest, PersistEmptyToken) { |
- ScopedTempDir temp_dir; |
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
- browser_sync::UserSettings settings; |
- settings.Init(temp_dir.path().AppendASCII("UserSettings.sqlite3")); |
- settings.SetAuthTokenForService("username", "service", ""); |
- std::string username; |
- std::string token; |
- ASSERT_TRUE(settings.GetLastUserAndServiceToken("service", &username, |
- &token)); |
- EXPECT_EQ("", token); |
- EXPECT_EQ("username", username); |
-} |
- |
-TEST_F(UserSettingsTest, PersistNonEmptyToken) { |
- ScopedTempDir temp_dir; |
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
- browser_sync::UserSettings settings; |
- settings.Init(temp_dir.path().AppendASCII("UserSettings.sqlite3")); |
- settings.SetAuthTokenForService("username", "service", |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah" |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah" |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah"); |
- std::string username; |
- std::string token; |
- ASSERT_TRUE(settings.GetLastUserAndServiceToken("service", &username, |
- &token)); |
- EXPECT_EQ( |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah" |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah" |
- "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah", |
- token); |
- EXPECT_EQ("username", username); |
-} |