Index: chrome/browser/policy/config_dir_policy_loader_unittest.cc |
diff --git a/chrome/browser/policy/config_dir_policy_loader_unittest.cc b/chrome/browser/policy/config_dir_policy_loader_unittest.cc |
deleted file mode 100644 |
index c2838cd967850ba480d805823b541ff5f7a6d94a..0000000000000000000000000000000000000000 |
--- a/chrome/browser/policy/config_dir_policy_loader_unittest.cc |
+++ /dev/null |
@@ -1,236 +0,0 @@ |
-// Copyright (c) 2012 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/compiler_specific.h" |
-#include "base/file_util.h" |
-#include "base/files/scoped_temp_dir.h" |
-#include "base/json/json_string_value_serializer.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/message_loop/message_loop_proxy.h" |
-#include "base/sequenced_task_runner.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/values.h" |
-#include "chrome/browser/policy/config_dir_policy_loader.h" |
-#include "components/policy/core/common/async_policy_provider.h" |
-#include "components/policy/core/common/configuration_policy_provider_test.h" |
-#include "components/policy/core/common/policy_bundle.h" |
-#include "components/policy/core/common/policy_map.h" |
- |
-namespace policy { |
- |
-namespace { |
- |
-// Subdirectory of the config dir that contains mandatory policies. |
-const base::FilePath::CharType kMandatoryPath[] = FILE_PATH_LITERAL("managed"); |
- |
-class TestHarness : public PolicyProviderTestHarness { |
- public: |
- TestHarness(); |
- virtual ~TestHarness(); |
- |
- virtual void SetUp() OVERRIDE; |
- |
- virtual ConfigurationPolicyProvider* CreateProvider( |
- SchemaRegistry* registry, |
- scoped_refptr<base::SequencedTaskRunner> task_runner) OVERRIDE; |
- |
- virtual void InstallEmptyPolicy() OVERRIDE; |
- virtual void InstallStringPolicy(const std::string& policy_name, |
- const std::string& policy_value) OVERRIDE; |
- virtual void InstallIntegerPolicy(const std::string& policy_name, |
- int policy_value) OVERRIDE; |
- virtual void InstallBooleanPolicy(const std::string& policy_name, |
- bool policy_value) OVERRIDE; |
- virtual void InstallStringListPolicy( |
- const std::string& policy_name, |
- const base::ListValue* policy_value) OVERRIDE; |
- virtual void InstallDictionaryPolicy( |
- const std::string& policy_name, |
- const base::DictionaryValue* policy_value) OVERRIDE; |
- virtual void Install3rdPartyPolicy( |
- const base::DictionaryValue* policies) OVERRIDE; |
- |
- const base::FilePath& test_dir() { return test_dir_.path(); } |
- |
- // JSON-encode a dictionary and write it to a file. |
- void WriteConfigFile(const base::DictionaryValue& dict, |
- const std::string& file_name); |
- |
- // Returns a unique name for a policy file. Each subsequent call returns a new |
- // name that comes lexicographically after the previous one. |
- std::string NextConfigFileName(); |
- |
- static PolicyProviderTestHarness* Create(); |
- |
- private: |
- base::ScopedTempDir test_dir_; |
- int next_policy_file_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestHarness); |
-}; |
- |
-TestHarness::TestHarness() |
- : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE), |
- next_policy_file_index_(100) {} |
- |
-TestHarness::~TestHarness() {} |
- |
-void TestHarness::SetUp() { |
- ASSERT_TRUE(test_dir_.CreateUniqueTempDir()); |
-} |
- |
-ConfigurationPolicyProvider* TestHarness::CreateProvider( |
- SchemaRegistry* registry, |
- scoped_refptr<base::SequencedTaskRunner> task_runner) { |
- scoped_ptr<AsyncPolicyLoader> loader(new ConfigDirPolicyLoader( |
- task_runner, test_dir(), POLICY_SCOPE_MACHINE)); |
- return new AsyncPolicyProvider(registry, loader.Pass()); |
-} |
- |
-void TestHarness::InstallEmptyPolicy() { |
- base::DictionaryValue dict; |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::InstallStringPolicy(const std::string& policy_name, |
- const std::string& policy_value) { |
- base::DictionaryValue dict; |
- dict.SetString(policy_name, policy_value); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::InstallIntegerPolicy(const std::string& policy_name, |
- int policy_value) { |
- base::DictionaryValue dict; |
- dict.SetInteger(policy_name, policy_value); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::InstallBooleanPolicy(const std::string& policy_name, |
- bool policy_value) { |
- base::DictionaryValue dict; |
- dict.SetBoolean(policy_name, policy_value); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::InstallStringListPolicy(const std::string& policy_name, |
- const base::ListValue* policy_value) { |
- base::DictionaryValue dict; |
- dict.Set(policy_name, policy_value->DeepCopy()); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::InstallDictionaryPolicy( |
- const std::string& policy_name, |
- const base::DictionaryValue* policy_value) { |
- base::DictionaryValue dict; |
- dict.Set(policy_name, policy_value->DeepCopy()); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::Install3rdPartyPolicy(const base::DictionaryValue* policies) { |
- base::DictionaryValue dict; |
- dict.Set("3rdparty", policies->DeepCopy()); |
- WriteConfigFile(dict, NextConfigFileName()); |
-} |
- |
-void TestHarness::WriteConfigFile(const base::DictionaryValue& dict, |
- const std::string& file_name) { |
- std::string data; |
- JSONStringValueSerializer serializer(&data); |
- serializer.Serialize(dict); |
- const base::FilePath mandatory_dir(test_dir().Append(kMandatoryPath)); |
- ASSERT_TRUE(base::CreateDirectory(mandatory_dir)); |
- const base::FilePath file_path(mandatory_dir.AppendASCII(file_name)); |
- ASSERT_EQ((int) data.size(), |
- file_util::WriteFile(file_path, data.c_str(), data.size())); |
-} |
- |
-std::string TestHarness::NextConfigFileName() { |
- EXPECT_LE(next_policy_file_index_, 999); |
- return std::string("policy") + base::IntToString(next_policy_file_index_++); |
-} |
- |
-// static |
-PolicyProviderTestHarness* TestHarness::Create() { |
- return new TestHarness(); |
-} |
- |
-} // namespace |
- |
-// Instantiate abstract test case for basic policy reading tests. |
-INSTANTIATE_TEST_CASE_P( |
- ConfigDirPolicyLoaderTest, |
- ConfigurationPolicyProviderTest, |
- testing::Values(TestHarness::Create)); |
- |
-// Instantiate abstract test case for 3rd party policy reading tests. |
-INSTANTIATE_TEST_CASE_P( |
- ConfigDir3rdPartyPolicyLoaderTest, |
- Configuration3rdPartyPolicyProviderTest, |
- testing::Values(TestHarness::Create)); |
- |
-// Some tests that exercise special functionality in ConfigDirPolicyLoader. |
-class ConfigDirPolicyLoaderTest : public PolicyTestBase { |
- protected: |
- virtual void SetUp() OVERRIDE { |
- PolicyTestBase::SetUp(); |
- harness_.SetUp(); |
- } |
- |
- TestHarness harness_; |
-}; |
- |
-// The preferences dictionary is expected to be empty when there are no files to |
-// load. |
-TEST_F(ConfigDirPolicyLoaderTest, ReadPrefsEmpty) { |
- ConfigDirPolicyLoader loader( |
- loop_.message_loop_proxy(), harness_.test_dir(), POLICY_SCOPE_MACHINE); |
- scoped_ptr<PolicyBundle> bundle(loader.Load()); |
- ASSERT_TRUE(bundle.get()); |
- const PolicyBundle kEmptyBundle; |
- EXPECT_TRUE(bundle->Equals(kEmptyBundle)); |
-} |
- |
-// Reading from a non-existent directory should result in an empty preferences |
-// dictionary. |
-TEST_F(ConfigDirPolicyLoaderTest, ReadPrefsNonExistentDirectory) { |
- base::FilePath non_existent_dir( |
- harness_.test_dir().Append(FILE_PATH_LITERAL("not_there"))); |
- ConfigDirPolicyLoader loader( |
- loop_.message_loop_proxy(), non_existent_dir, POLICY_SCOPE_MACHINE); |
- scoped_ptr<PolicyBundle> bundle(loader.Load()); |
- ASSERT_TRUE(bundle.get()); |
- const PolicyBundle kEmptyBundle; |
- EXPECT_TRUE(bundle->Equals(kEmptyBundle)); |
-} |
- |
-// Test merging values from different files. |
-TEST_F(ConfigDirPolicyLoaderTest, ReadPrefsMergePrefs) { |
- // Write a bunch of data files in order to increase the chance to detect the |
- // provider not respecting lexicographic ordering when reading them. Since the |
- // filesystem may return files in arbitrary order, there is no way to be sure, |
- // but this is better than nothing. |
- base::DictionaryValue test_dict_bar; |
- test_dict_bar.SetString("HomepageLocation", "http://bar.com"); |
- for (unsigned int i = 1; i <= 4; ++i) |
- harness_.WriteConfigFile(test_dict_bar, base::IntToString(i)); |
- base::DictionaryValue test_dict_foo; |
- test_dict_foo.SetString("HomepageLocation", "http://foo.com"); |
- harness_.WriteConfigFile(test_dict_foo, "9"); |
- for (unsigned int i = 5; i <= 8; ++i) |
- harness_.WriteConfigFile(test_dict_bar, base::IntToString(i)); |
- |
- ConfigDirPolicyLoader loader( |
- loop_.message_loop_proxy(), harness_.test_dir(), POLICY_SCOPE_USER); |
- scoped_ptr<PolicyBundle> bundle(loader.Load()); |
- ASSERT_TRUE(bundle.get()); |
- PolicyBundle expected_bundle; |
- expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
- .LoadFrom(&test_dict_foo, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
- EXPECT_TRUE(bundle->Equals(expected_bundle)); |
-} |
- |
-} // namespace policy |