Index: chrome/browser/managed_mode/managed_user_settings_service_unittest.cc |
diff --git a/chrome/browser/managed_mode/managed_user_settings_service_unittest.cc b/chrome/browser/managed_mode/managed_user_settings_service_unittest.cc |
deleted file mode 100644 |
index 70dbc2b38b6ab168207a394b32464ee04742b2e3..0000000000000000000000000000000000000000 |
--- a/chrome/browser/managed_mode/managed_user_settings_service_unittest.cc |
+++ /dev/null |
@@ -1,302 +0,0 @@ |
-// Copyright 2013 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 "base/bind.h" |
-#include "base/callback.h" |
-#include "base/json/json_reader.h" |
-#include "base/prefs/testing_pref_store.h" |
-#include "base/strings/string_util.h" |
-#include "chrome/browser/managed_mode/managed_user_settings_service.h" |
-#include "sync/api/fake_sync_change_processor.h" |
-#include "sync/api/sync_change.h" |
-#include "sync/api/sync_change_processor_wrapper_for_test.h" |
-#include "sync/api/sync_error_factory_mock.h" |
-#include "sync/protocol/sync.pb.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace { |
- |
-class MockSyncErrorFactory : public syncer::SyncErrorFactory { |
- public: |
- explicit MockSyncErrorFactory(syncer::ModelType type); |
- virtual ~MockSyncErrorFactory(); |
- |
- // SyncErrorFactory implementation: |
- virtual syncer::SyncError CreateAndUploadError( |
- const tracked_objects::Location& location, |
- const std::string& message) OVERRIDE; |
- |
- private: |
- syncer::ModelType type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MockSyncErrorFactory); |
-}; |
- |
-MockSyncErrorFactory::MockSyncErrorFactory(syncer::ModelType type) |
- : type_(type) {} |
- |
-MockSyncErrorFactory::~MockSyncErrorFactory() {} |
- |
-syncer::SyncError MockSyncErrorFactory::CreateAndUploadError( |
- const tracked_objects::Location& location, |
- const std::string& message) { |
- return syncer::SyncError(location, |
- syncer::SyncError::DATATYPE_ERROR, |
- message, |
- type_); |
-} |
- |
-} // namespace |
- |
-const char kAtomicItemName[] = "X-Wombat"; |
-const char kSettingsName[] = "TestingSetting"; |
-const char kSettingsValue[] = "SettingsValue"; |
-const char kSplitItemName[] = "X-SuperMoosePowers"; |
- |
-class ManagedUserSettingsServiceTest : public ::testing::Test { |
- protected: |
- ManagedUserSettingsServiceTest() {} |
- virtual ~ManagedUserSettingsServiceTest() {} |
- |
- scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { |
- sync_processor_.reset(new syncer::FakeSyncChangeProcessor); |
- return scoped_ptr<syncer::SyncChangeProcessor>( |
- new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
- } |
- |
- void StartSyncing(const syncer::SyncDataList& initial_sync_data) { |
- scoped_ptr<syncer::SyncErrorFactory> error_handler( |
- new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); |
- syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( |
- syncer::SUPERVISED_USER_SETTINGS, |
- initial_sync_data, |
- CreateSyncProcessor(), |
- error_handler.Pass()); |
- EXPECT_FALSE(result.error().IsSet()); |
- } |
- |
- void UploadSplitItem(const std::string& key, const std::string& value) { |
- split_items_.SetStringWithoutPathExpansion(key, value); |
- settings_service_.UploadItem( |
- ManagedUserSettingsService::MakeSplitSettingKey(kSplitItemName, |
- key), |
- scoped_ptr<base::Value>(new base::StringValue(value))); |
- } |
- |
- void UploadAtomicItem(const std::string& value) { |
- atomic_setting_value_.reset(new base::StringValue(value)); |
- settings_service_.UploadItem( |
- kAtomicItemName, |
- scoped_ptr<base::Value>(new base::StringValue(value))); |
- } |
- |
- void VerifySyncDataItem(syncer::SyncData sync_data) { |
- const sync_pb::ManagedUserSettingSpecifics& managed_user_setting = |
- sync_data.GetSpecifics().managed_user_setting(); |
- base::Value* expected_value = NULL; |
- if (managed_user_setting.name() == kAtomicItemName) { |
- expected_value = atomic_setting_value_.get(); |
- } else { |
- EXPECT_TRUE(StartsWithASCII(managed_user_setting.name(), |
- std::string(kSplitItemName) + ':', |
- true)); |
- std::string key = |
- managed_user_setting.name().substr(strlen(kSplitItemName) + 1); |
- EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); |
- } |
- |
- scoped_ptr<base::Value> value( |
- base::JSONReader::Read(managed_user_setting.value())); |
- EXPECT_TRUE(expected_value->Equals(value.get())); |
- } |
- |
- void OnNewSettingsAvailable(const base::DictionaryValue* settings) { |
- if (!settings) |
- settings_.reset(); |
- else |
- settings_.reset(settings->DeepCopy()); |
- } |
- |
- // testing::Test overrides: |
- virtual void SetUp() OVERRIDE { |
- TestingPrefStore* pref_store = new TestingPrefStore; |
- settings_service_.Init(pref_store); |
- settings_service_.Subscribe( |
- base::Bind(&ManagedUserSettingsServiceTest::OnNewSettingsAvailable, |
- base::Unretained(this))); |
- pref_store->SetInitializationCompleted(); |
- ASSERT_FALSE(settings_); |
- settings_service_.SetActive(true); |
- ASSERT_TRUE(settings_); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- settings_service_.Shutdown(); |
- } |
- |
- base::DictionaryValue split_items_; |
- scoped_ptr<base::Value> atomic_setting_value_; |
- ManagedUserSettingsService settings_service_; |
- scoped_ptr<base::DictionaryValue> settings_; |
- |
- scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; |
-}; |
- |
-TEST_F(ManagedUserSettingsServiceTest, ProcessAtomicSetting) { |
- StartSyncing(syncer::SyncDataList()); |
- ASSERT_TRUE(settings_); |
- const base::Value* value = NULL; |
- EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- |
- settings_.reset(); |
- syncer::SyncData data = |
- ManagedUserSettingsService::CreateSyncDataForSetting( |
- kSettingsName, base::StringValue(kSettingsValue)); |
- syncer::SyncChangeList change_list; |
- change_list.push_back( |
- syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); |
- syncer::SyncError error = |
- settings_service_.ProcessSyncChanges(FROM_HERE, change_list); |
- EXPECT_FALSE(error.IsSet()) << error.ToString(); |
- ASSERT_TRUE(settings_); |
- ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- std::string string_value; |
- EXPECT_TRUE(value->GetAsString(&string_value)); |
- EXPECT_EQ(kSettingsValue, string_value); |
-} |
- |
-TEST_F(ManagedUserSettingsServiceTest, ProcessSplitSetting) { |
- StartSyncing(syncer::SyncDataList()); |
- ASSERT_TRUE(settings_); |
- const base::Value* value = NULL; |
- EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- |
- base::DictionaryValue dict; |
- dict.SetString("foo", "bar"); |
- dict.SetBoolean("awesomesauce", true); |
- dict.SetInteger("eaudecologne", 4711); |
- |
- settings_.reset(); |
- syncer::SyncChangeList change_list; |
- for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { |
- syncer::SyncData data = |
- ManagedUserSettingsService::CreateSyncDataForSetting( |
- ManagedUserSettingsService::MakeSplitSettingKey(kSettingsName, |
- it.key()), |
- it.value()); |
- change_list.push_back( |
- syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); |
- } |
- syncer::SyncError error = |
- settings_service_.ProcessSyncChanges(FROM_HERE, change_list); |
- EXPECT_FALSE(error.IsSet()) << error.ToString(); |
- ASSERT_TRUE(settings_); |
- ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- const base::DictionaryValue* dict_value = NULL; |
- ASSERT_TRUE(value->GetAsDictionary(&dict_value)); |
- EXPECT_TRUE(dict_value->Equals(&dict)); |
-} |
- |
-TEST_F(ManagedUserSettingsServiceTest, SetLocalSetting) { |
- const base::Value* value = NULL; |
- EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- |
- settings_.reset(); |
- settings_service_.SetLocalSettingForTesting( |
- kSettingsName, |
- scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); |
- ASSERT_TRUE(settings_); |
- ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
- std::string string_value; |
- EXPECT_TRUE(value->GetAsString(&string_value)); |
- EXPECT_EQ(kSettingsValue, string_value); |
-} |
- |
-TEST_F(ManagedUserSettingsServiceTest, UploadItem) { |
- UploadSplitItem("foo", "bar"); |
- UploadSplitItem("blurp", "baz"); |
- UploadAtomicItem("hurdle"); |
- |
- // Uploading should produce changes when we start syncing. |
- StartSyncing(syncer::SyncDataList()); |
- ASSERT_EQ(3u, sync_processor_->changes().size()); |
- for (syncer::SyncChangeList::const_iterator it = |
- sync_processor_->changes().begin(); |
- it != sync_processor_->changes().end(); |
- ++it) { |
- ASSERT_TRUE(it->IsValid()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_ADD, it->change_type()); |
- VerifySyncDataItem(it->sync_data()); |
- } |
- |
- // It should also show up in local Sync data. |
- syncer::SyncDataList sync_data = |
- settings_service_.GetAllSyncData(syncer::SUPERVISED_USER_SETTINGS); |
- EXPECT_EQ(3u, sync_data.size()); |
- for (syncer::SyncDataList::const_iterator it = sync_data.begin(); |
- it != sync_data.end(); ++it) { |
- VerifySyncDataItem(*it); |
- } |
- |
- // Uploading after we have started syncing should work too. |
- sync_processor_->changes().clear(); |
- UploadSplitItem("froodle", "narf"); |
- ASSERT_EQ(1u, sync_processor_->changes().size()); |
- syncer::SyncChange change = sync_processor_->changes()[0]; |
- ASSERT_TRUE(change.IsValid()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); |
- VerifySyncDataItem(change.sync_data()); |
- |
- sync_data = settings_service_.GetAllSyncData( |
- syncer::SUPERVISED_USER_SETTINGS); |
- EXPECT_EQ(4u, sync_data.size()); |
- for (syncer::SyncDataList::const_iterator it = sync_data.begin(); |
- it != sync_data.end(); ++it) { |
- VerifySyncDataItem(*it); |
- } |
- |
- // Uploading an item with a previously seen key should create an UPDATE |
- // action. |
- sync_processor_->changes().clear(); |
- UploadSplitItem("blurp", "snarl"); |
- ASSERT_EQ(1u, sync_processor_->changes().size()); |
- change = sync_processor_->changes()[0]; |
- ASSERT_TRUE(change.IsValid()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); |
- VerifySyncDataItem(change.sync_data()); |
- |
- sync_data = settings_service_.GetAllSyncData( |
- syncer::SUPERVISED_USER_SETTINGS); |
- EXPECT_EQ(4u, sync_data.size()); |
- for (syncer::SyncDataList::const_iterator it = sync_data.begin(); |
- it != sync_data.end(); ++it) { |
- VerifySyncDataItem(*it); |
- } |
- |
- sync_processor_->changes().clear(); |
- UploadAtomicItem("fjord"); |
- ASSERT_EQ(1u, sync_processor_->changes().size()); |
- change = sync_processor_->changes()[0]; |
- ASSERT_TRUE(change.IsValid()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); |
- VerifySyncDataItem(change.sync_data()); |
- |
- sync_data = settings_service_.GetAllSyncData( |
- syncer::SUPERVISED_USER_SETTINGS); |
- EXPECT_EQ(4u, sync_data.size()); |
- for (syncer::SyncDataList::const_iterator it = sync_data.begin(); |
- it != sync_data.end(); ++it) { |
- VerifySyncDataItem(*it); |
- } |
- |
- // The uploaded items should not show up as settings. |
- const base::Value* value = NULL; |
- EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); |
- EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); |
- |
- // Restarting sync should not create any new changes. |
- settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); |
- StartSyncing(sync_data); |
- ASSERT_EQ(0u, sync_processor_->changes().size()); |
-} |