Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/policy/configuration_policy_provider_test.h" | |
| 6 | |
| 7 #include "base/bind.h" | |
| 8 #include "base/values.h" | |
| 9 #include "chrome/browser/policy/asynchronous_policy_loader.h" | |
| 10 #include "chrome/browser/policy/asynchronous_policy_provider.h" | |
| 11 #include "chrome/browser/policy/configuration_policy_provider.h" | |
| 12 #include "chrome/browser/policy/policy_map.h" | |
| 13 #include "policy/policy_constants.h" | |
| 14 | |
| 15 namespace policy { | |
| 16 | |
| 17 namespace test_policy_definitions { | |
| 18 | |
| 19 const char kKeyString[] = "StringPolicy"; | |
| 20 const char kKeyBoolean[] = "BooleanPolicy"; | |
| 21 const char kKeyInteger[] = "IntegerPolicy"; | |
| 22 const char kKeyStringList[] = "StringListPolicy"; | |
| 23 | |
| 24 // In order to have correct enum values, we alias these to some actual policies. | |
| 25 extern const ConfigurationPolicyType kPolicyString = | |
|
Joao da Silva
2011/11/09 15:37:47
Nit: remove extern here and on the 3 next too
Mattias Nissler (ping if slow)
2011/11/09 17:04:11
Done.
| |
| 26 kPolicyHomepageLocation; | |
| 27 extern const ConfigurationPolicyType kPolicyBoolean = | |
| 28 kPolicyHomepageIsNewTabPage; | |
| 29 extern const ConfigurationPolicyType kPolicyInteger = | |
| 30 kPolicyRestoreOnStartup; | |
| 31 extern const ConfigurationPolicyType kPolicyStringList = | |
| 32 kPolicyRestoreOnStartupURLs; | |
| 33 | |
| 34 static const PolicyDefinitionList::Entry kEntries[] = { | |
|
Joao da Silva
2011/11/09 15:37:47
Nit: not sure if we prefer an anonymous namespace
Mattias Nissler (ping if slow)
2011/11/09 17:04:11
I think the additional noise generated by the anon
| |
| 35 { kPolicyString, base::Value::TYPE_STRING, kKeyString }, | |
| 36 { kPolicyBoolean, base::Value::TYPE_BOOLEAN, kKeyBoolean }, | |
| 37 { kPolicyInteger, base::Value::TYPE_INTEGER, kKeyInteger }, | |
| 38 { kPolicyStringList, base::Value::TYPE_LIST, kKeyStringList }, | |
| 39 }; | |
| 40 | |
| 41 const PolicyDefinitionList kList = { | |
| 42 kEntries, kEntries + arraysize(kEntries) | |
| 43 }; | |
| 44 | |
| 45 } // namespace test_policy_definitions | |
| 46 | |
| 47 PolicyProviderTestHarness::PolicyProviderTestHarness() {} | |
| 48 | |
| 49 PolicyProviderTestHarness::~PolicyProviderTestHarness() {} | |
| 50 | |
| 51 ConfigurationPolicyProviderTest::ConfigurationPolicyProviderTest() | |
| 52 : ui_thread_(content::BrowserThread::UI, &loop_), | |
| 53 file_thread_(content::BrowserThread::FILE, &loop_) {} | |
| 54 | |
| 55 ConfigurationPolicyProviderTest::~ConfigurationPolicyProviderTest() {} | |
| 56 | |
| 57 void ConfigurationPolicyProviderTest::SetUp() { | |
| 58 test_harness_.reset((*GetParam())()); | |
| 59 test_harness_->SetUp(); | |
| 60 | |
| 61 provider_.reset( | |
| 62 test_harness_->CreateProvider(&test_policy_definitions::kList)); | |
| 63 | |
| 64 PolicyMap policy_map; | |
| 65 EXPECT_TRUE(provider_->Provide(&policy_map)); | |
| 66 EXPECT_TRUE(policy_map.empty()); | |
| 67 } | |
| 68 | |
| 69 void ConfigurationPolicyProviderTest::TearDown() { | |
| 70 // Give providers the chance to clean up after themselves on the file thread. | |
| 71 provider_.reset(); | |
| 72 loop_.RunAllPending(); | |
| 73 } | |
| 74 | |
| 75 void ConfigurationPolicyProviderTest::CheckValue( | |
| 76 const char* policy_name, | |
| 77 ConfigurationPolicyType policy_type, | |
| 78 const base::Value& expected_value, | |
| 79 base::Closure install_value) { | |
| 80 // Install the value, reload policy and check the provider for the value. | |
| 81 install_value.Run(); | |
| 82 provider_->ForceReload(); | |
| 83 loop_.RunAllPending(); | |
| 84 PolicyMap policy_map; | |
| 85 EXPECT_TRUE(provider_->Provide(&policy_map)); | |
| 86 EXPECT_EQ(1U, policy_map.size()); | |
| 87 EXPECT_TRUE(base::Value::Equals(&expected_value, | |
| 88 policy_map.Get(policy_type))); | |
| 89 } | |
| 90 | |
| 91 TEST_P(ConfigurationPolicyProviderTest, Empty) { | |
| 92 provider_->ForceReload(); | |
| 93 loop_.RunAllPending(); | |
| 94 PolicyMap policy_map; | |
| 95 EXPECT_TRUE(provider_->Provide(&policy_map)); | |
| 96 EXPECT_TRUE(policy_map.empty()); | |
| 97 } | |
| 98 | |
| 99 TEST_P(ConfigurationPolicyProviderTest, StringValue) { | |
| 100 const char kTestString[] = "string_value"; | |
| 101 StringValue expected_value(kTestString); | |
| 102 CheckValue(test_policy_definitions::kKeyString, | |
| 103 test_policy_definitions::kPolicyString, | |
| 104 expected_value, | |
| 105 base::Bind(&PolicyProviderTestHarness::InstallStringPolicy, | |
| 106 base::Unretained(test_harness_.get()), | |
| 107 test_policy_definitions::kKeyString, | |
| 108 kTestString)); | |
| 109 } | |
| 110 | |
| 111 TEST_P(ConfigurationPolicyProviderTest, BooleanValue) { | |
| 112 base::FundamentalValue expected_value(true); | |
| 113 CheckValue(test_policy_definitions::kKeyBoolean, | |
| 114 test_policy_definitions::kPolicyBoolean, | |
| 115 expected_value, | |
| 116 base::Bind(&PolicyProviderTestHarness::InstallBooleanPolicy, | |
| 117 base::Unretained(test_harness_.get()), | |
| 118 test_policy_definitions::kKeyBoolean, | |
| 119 true)); | |
| 120 } | |
| 121 | |
| 122 TEST_P(ConfigurationPolicyProviderTest, IntegerValue) { | |
| 123 base::FundamentalValue expected_value(42); | |
| 124 CheckValue(test_policy_definitions::kKeyInteger, | |
| 125 test_policy_definitions::kPolicyInteger, | |
| 126 expected_value, | |
| 127 base::Bind(&PolicyProviderTestHarness::InstallIntegerPolicy, | |
| 128 base::Unretained(test_harness_.get()), | |
| 129 test_policy_definitions::kKeyInteger, | |
| 130 42)); | |
| 131 } | |
| 132 | |
| 133 TEST_P(ConfigurationPolicyProviderTest, StringListValue) { | |
| 134 base::ListValue expected_value; | |
| 135 expected_value.Set(0U, base::Value::CreateStringValue("first")); | |
| 136 expected_value.Set(1U, base::Value::CreateStringValue("second")); | |
| 137 CheckValue(test_policy_definitions::kKeyStringList, | |
| 138 test_policy_definitions::kPolicyStringList, | |
| 139 expected_value, | |
| 140 base::Bind(&PolicyProviderTestHarness::InstallStringListPolicy, | |
| 141 base::Unretained(test_harness_.get()), | |
| 142 test_policy_definitions::kKeyStringList, | |
| 143 &expected_value)); | |
| 144 } | |
| 145 | |
| 146 } // namespace policy | |
| OLD | NEW |