Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Unified Diff: chrome/browser/policy/configuration_policy_provider_win_unittest.cc

Issue 8467011: Include only policy definitions that apply to the platfrom in the policy definition list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adjust all policy provider tests to use shared testing code. Net-negative line counts! Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/policy/configuration_policy_provider_win_unittest.cc
diff --git a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
index dc03bdb62b4a1a752bf72b5ee386abbffd837429..ee9ed331f7a518b15ac339a207b48e9b8800df1b 100644
--- a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
+++ b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
@@ -5,19 +5,13 @@
#include <gtest/gtest.h>
#include <windows.h>
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/stl_util.h"
+#include "base/string16.h"
#include "base/string_number_conversions.h"
-#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
#include "base/win/registry.h"
-#include "chrome/browser/policy/asynchronous_policy_loader.h"
-#include "chrome/browser/policy/configuration_policy_pref_store.h"
+#include "chrome/browser/policy/configuration_policy_provider_test.h"
#include "chrome/browser/policy/configuration_policy_provider_win.h"
#include "chrome/browser/policy/policy_map.h"
-#include "chrome/common/pref_names.h"
-#include "content/test/test_browser_thread.h"
#include "policy/policy_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -34,153 +28,73 @@ const wchar_t kUnitTestMachineOverrideSubKey[] =
const wchar_t kUnitTestUserOverrideSubKey[] =
L"SOFTWARE\\Chromium Unit Tests\\HKCU Override";
-// Holds policy type, corresponding policy name string and a valid value for use
-// in parametrized value tests.
-class PolicyTestParams {
+// This class provides sandboxing and mocking for the parts of the Windows
+// Registry implementing Group Policy. It prepares two temporary sandbox keys
+// in |kUnitTestRegistrySubKey|, one for HKLM and one for HKCU. A test's calls
+// to the registry are redirected by Windows to these sandboxes, allowing the
+// tests to manipulate and access policy as if it were active, but without
+// actually changing the parts of the Registry that are managed by Group
+// Policy.
+class ScopedGroupPolicyRegistrySandbox {
public:
- // Assumes ownership of |hklm_value| and |hkcu_value|.
- PolicyTestParams(ConfigurationPolicyType type,
- const char* policy_name,
- Value* hklm_value,
- Value* hkcu_value)
- : type_(type),
- policy_name_(policy_name),
- hklm_value_(hklm_value),
- hkcu_value_(hkcu_value) {}
-
- // testing::TestWithParam does copy the parameters, so provide copy
- // constructor and assignment operator.
- PolicyTestParams(const PolicyTestParams& other)
- : type_(other.type_),
- policy_name_(other.policy_name_),
- hklm_value_(other.hklm_value_->DeepCopy()),
- hkcu_value_(other.hkcu_value_->DeepCopy()) {}
-
- const PolicyTestParams& operator=(PolicyTestParams other) {
- swap(other);
- return *this;
- }
+ ScopedGroupPolicyRegistrySandbox();
+ ~ScopedGroupPolicyRegistrySandbox();
- void swap(PolicyTestParams& other) {
- std::swap(type_, other.type_);
- std::swap(policy_name_, other.policy_name_);
- hklm_value_.swap(other.hklm_value_);
- hkcu_value_.swap(other.hkcu_value_);
- }
+ private:
+ // Deletes the sandbox keys.
+ void DeleteKeys();
- ConfigurationPolicyType type() const { return type_; }
- const char* policy_name() const { return policy_name_; }
- const Value* hklm_value() const { return hklm_value_.get(); }
- const Value* hkcu_value() const { return hkcu_value_.get(); }
-
- // Factory methods for different value types.
- static PolicyTestParams ForStringPolicy(
- ConfigurationPolicyType type,
- const char* policy_name) {
- return PolicyTestParams(type,
- policy_name,
- Value::CreateStringValue("string_a"),
- Value::CreateStringValue("string_b"));
- }
- static PolicyTestParams ForBooleanPolicy(
- ConfigurationPolicyType type,
- const char* policy_name) {
- return PolicyTestParams(type,
- policy_name,
- Value::CreateBooleanValue(true),
- Value::CreateBooleanValue(false));
- }
- static PolicyTestParams ForIntegerPolicy(
- ConfigurationPolicyType type,
- const char* policy_name) {
- return PolicyTestParams(type,
- policy_name,
- Value::CreateIntegerValue(42),
- Value::CreateIntegerValue(17));
- }
- static PolicyTestParams ForListPolicy(
- ConfigurationPolicyType type,
- const char* policy_name) {
- ListValue* hklm_value = new ListValue;
- hklm_value->Set(0U, Value::CreateStringValue("It's a plane!"));
- ListValue* hkcu_value = new ListValue;
- hkcu_value->Set(0U, Value::CreateStringValue("It's a bird!"));
- hkcu_value->Set(0U, Value::CreateStringValue("It's a flying carpet!"));
- return PolicyTestParams(type, policy_name, hklm_value, hkcu_value);
- }
+ // Keys are created for the lifetime of a test to contain
+ // the sandboxed HKCU and HKLM hives, respectively.
+ RegKey temp_hkcu_hive_key_;
+ RegKey temp_hklm_hive_key_;
- private:
- ConfigurationPolicyType type_;
- const char* policy_name_;
- scoped_ptr<Value> hklm_value_;
- scoped_ptr<Value> hkcu_value_;
+ DISALLOW_COPY_AND_ASSIGN(ScopedGroupPolicyRegistrySandbox);
};
-} // namespace
-
-// This test class provides sandboxing and mocking for the parts of the
-// Windows Registry implementing Group Policy. The |SetUp| method prepares
-// two temporary sandbox keys in |kUnitTestRegistrySubKey|, one for HKLM and one
-// for HKCU. A test's calls to the registry are redirected by Windows to these
-// sandboxes, allowing the tests to manipulate and access policy as if it
-// were active, but without actually changing the parts of the Registry that
-// are managed by Group Policy.
-class ConfigurationPolicyProviderWinTest
- : public testing::TestWithParam<PolicyTestParams> {
+class TestHarness : public PolicyProviderTestHarness {
public:
- ConfigurationPolicyProviderWinTest();
+ explicit TestHarness(HKEY hive);
+ virtual ~TestHarness();
- // testing::Test method overrides:
- virtual void SetUp();
- virtual void TearDown();
+ virtual void SetUp() OVERRIDE;
+ virtual AsynchronousPolicyProvider* CreateProvider(
+ const PolicyDefinitionList* policy_definition_list) 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 ListValue* policy_value) OVERRIDE;
+
+ // Creates a harness instance that will install policy in HKCU or HKLM,
+ // respectively.
+ static PolicyProviderTestHarness* CreateHKCU();
+ static PolicyProviderTestHarness* CreateHKLM();
+
+ private:
+ // Activates/Deactivates registry key redirection.
void ActivateOverrides();
void DeactivateOverrides();
// Deletes the registry key created during the tests.
void DeleteRegistrySandbox();
- // Write a string value to the registry.
- void WriteString(HKEY hive, const char* name, const wchar_t* value);
- // Write a DWORD value to the registry.
- void WriteDWORD(HKEY hive, const char* name, DWORD value);
+ HKEY hive_;
- // Write the given value to the registry.
- void WriteValue(HKEY hive, const char* name, const Value* value);
- // Write a value that is not compatible with the given |value|.
- void WriteInvalidValue(HKEY hive, const char* name, const Value* value);
+ ScopedGroupPolicyRegistrySandbox registry_sandbox_;
- protected:
- scoped_ptr<ConfigurationPolicyProviderWin> provider_;
-
- // A message loop must be declared and instantiated for these tests,
- // because Windows policy provider create WaitableEvents and
- // ObjectWatchers that require the tests to have a MessageLoop associated
- // with the thread executing the tests.
- MessageLoop loop_;
-
- private:
- content::TestBrowserThread ui_thread_;
- content::TestBrowserThread file_thread_;
-
- // Keys are created for the lifetime of a test to contain
- // the sandboxed HKCU and HKLM hives, respectively.
- RegKey temp_hkcu_hive_key_;
- RegKey temp_hklm_hive_key_;
+ DISALLOW_COPY_AND_ASSIGN(TestHarness);
};
-ConfigurationPolicyProviderWinTest::ConfigurationPolicyProviderWinTest()
- : ui_thread_(BrowserThread::UI, &loop_),
- file_thread_(BrowserThread::FILE, &loop_),
- temp_hklm_hive_key_(HKEY_CURRENT_USER, kUnitTestMachineOverrideSubKey,
- KEY_READ),
- temp_hkcu_hive_key_(HKEY_CURRENT_USER, kUnitTestUserOverrideSubKey,
- KEY_READ) {
-}
-
-void ConfigurationPolicyProviderWinTest::SetUp() {
+ScopedGroupPolicyRegistrySandbox::ScopedGroupPolicyRegistrySandbox() {
// Cleanup any remnants of previous tests.
- DeleteRegistrySandbox();
+ DeleteKeys();
// Create the subkeys to hold the overridden HKLM and HKCU
// policy settings.
@@ -191,340 +105,133 @@ void ConfigurationPolicyProviderWinTest::SetUp() {
kUnitTestUserOverrideSubKey,
KEY_ALL_ACCESS);
- ActivateOverrides();
-
- provider_.reset(new ConfigurationPolicyProviderWin(
- GetChromePolicyDefinitionList()));
-}
-
-void ConfigurationPolicyProviderWinTest::TearDown() {
- DeactivateOverrides();
- DeleteRegistrySandbox();
- loop_.RunAllPending();
-}
-
-void ConfigurationPolicyProviderWinTest::ActivateOverrides() {
+ // Activate the overrides.
HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE,
temp_hklm_hive_key_.Handle());
- EXPECT_EQ(ERROR_SUCCESS, result);
+ CHECK_EQ(ERROR_SUCCESS, result);
Joao da Silva 2011/11/09 15:37:47 CHECK failure will crash the unit_test process. It
Mattias Nissler (ping if slow) 2011/11/09 17:04:11 I figured out something that works :)
result = RegOverridePredefKey(HKEY_CURRENT_USER,
temp_hkcu_hive_key_.Handle());
- EXPECT_EQ(ERROR_SUCCESS, result);
+ CHECK_EQ(ERROR_SUCCESS, result);
}
-void ConfigurationPolicyProviderWinTest::DeactivateOverrides() {
- uint32 result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 0);
- EXPECT_EQ(ERROR_SUCCESS, result);
+ScopedGroupPolicyRegistrySandbox::~ScopedGroupPolicyRegistrySandbox() {
+ HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 0);
+ CHECK_EQ(ERROR_SUCCESS, result);
result = RegOverridePredefKey(HKEY_CURRENT_USER, 0);
- EXPECT_EQ(ERROR_SUCCESS, result);
+ CHECK_EQ(ERROR_SUCCESS, result);
+
+ DeleteKeys();
}
-void ConfigurationPolicyProviderWinTest::DeleteRegistrySandbox() {
- temp_hklm_hive_key_.Close();
- temp_hkcu_hive_key_.Close();
+void ScopedGroupPolicyRegistrySandbox::DeleteKeys() {
RegKey key(HKEY_CURRENT_USER, kUnitTestRegistrySubKey, KEY_ALL_ACCESS);
key.DeleteKey(L"");
}
-void ConfigurationPolicyProviderWinTest::WriteString(HKEY hive,
- const char* name,
- const wchar_t* value) {
- RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS);
- key.WriteValue(UTF8ToUTF16(name).c_str(), value);
-}
+TestHarness::TestHarness(HKEY hive)
+ : hive_(hive) {}
-void ConfigurationPolicyProviderWinTest::WriteDWORD(HKEY hive,
- const char* name,
- DWORD value) {
- RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS);
- key.WriteValue(UTF8ToUTF16(name).c_str(), value);
-}
+TestHarness::~TestHarness() {}
-void ConfigurationPolicyProviderWinTest::WriteValue(HKEY hive,
- const char* name,
- const Value* value) {
- switch (value->GetType()) {
- case Value::TYPE_BOOLEAN: {
- bool v;
- ASSERT_TRUE(value->GetAsBoolean(&v));
- WriteDWORD(hive, name, v);
- break;
- }
- case Value::TYPE_INTEGER: {
- int v;
- ASSERT_TRUE(value->GetAsInteger(&v));
- WriteDWORD(hive, name, v);
- break;
- }
- case Value::TYPE_STRING: {
- std::string v;
- ASSERT_TRUE(value->GetAsString(&v));
- WriteString(hive, name, UTF8ToUTF16(v).c_str());
- break;
- }
- case Value::TYPE_LIST: {
- const ListValue* list = static_cast<const ListValue*>(value);
- RegKey key(hive,
- (string16(policy::kRegistrySubKey) + ASCIIToUTF16("\\") +
- UTF8ToUTF16(name)).c_str(),
- KEY_ALL_ACCESS);
- int index = 1;
- for (ListValue::const_iterator element(list->begin());
- element != list->end(); ++element) {
- ASSERT_TRUE((*element)->IsType(Value::TYPE_STRING));
- std::string element_value;
- ASSERT_TRUE((*element)->GetAsString(&element_value));
- key.WriteValue(base::IntToString16(index++).c_str(),
- UTF8ToUTF16(element_value).c_str());
- }
- break;
- }
- default:
- FAIL() << "Unsupported value type " << value->GetType();
- break;
- }
+void TestHarness::SetUp() {}
+
+AsynchronousPolicyProvider* TestHarness::CreateProvider(
+ const PolicyDefinitionList* policy_definition_list) {
+ return new ConfigurationPolicyProviderWin(policy_definition_list);
}
-void ConfigurationPolicyProviderWinTest::WriteInvalidValue(HKEY hive,
- const char* name,
- const Value* value) {
- if (value->IsType(Value::TYPE_STRING))
- WriteDWORD(hive, name, -1);
- else
- WriteString(hive, name, L"bad value");
+void TestHarness::InstallEmptyPolicy() {}
+
+void TestHarness::InstallStringPolicy(const std::string& policy_name,
+ const std::string& policy_value) {
+ RegKey key(hive_, policy::kRegistrySubKey, KEY_ALL_ACCESS);
+ key.WriteValue(UTF8ToUTF16(policy_name).c_str(),
+ UTF8ToUTF16(policy_value).c_str());
}
-TEST_P(ConfigurationPolicyProviderWinTest, Default) {
- PolicyMap policy_map;
- provider_->Provide(&policy_map);
- EXPECT_TRUE(policy_map.empty());
+void TestHarness::InstallIntegerPolicy(const std::string& policy_name,
+ int policy_value) {
+ RegKey key(hive_, policy::kRegistrySubKey, KEY_ALL_ACCESS);
+ key.WriteValue(UTF8ToUTF16(policy_name).c_str(),
+ static_cast<DWORD>(policy_value));
}
-TEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) {
- WriteInvalidValue(HKEY_LOCAL_MACHINE,
- GetParam().policy_name(),
- GetParam().hklm_value());
- WriteInvalidValue(HKEY_CURRENT_USER,
- GetParam().policy_name(),
- GetParam().hkcu_value());
- provider_->loader()->Reload();
- loop_.RunAllPending();
- PolicyMap policy_map;
- provider_->Provide(&policy_map);
- EXPECT_TRUE(policy_map.empty());
+void TestHarness::InstallBooleanPolicy(const std::string& policy_name,
+ bool policy_value) {
+ RegKey key(hive_, policy::kRegistrySubKey, KEY_ALL_ACCESS);
+ key.WriteValue(UTF8ToUTF16(policy_name).c_str(),
+ static_cast<DWORD>(policy_value));
}
-TEST_P(ConfigurationPolicyProviderWinTest, HKLM) {
- WriteValue(HKEY_LOCAL_MACHINE,
- GetParam().policy_name(),
- GetParam().hklm_value());
- provider_->loader()->Reload();
- loop_.RunAllPending();
- PolicyMap policy_map;
- provider_->Provide(&policy_map);
- const Value* value = policy_map.Get(GetParam().type());
- ASSERT_TRUE(value);
- EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
+void TestHarness::InstallStringListPolicy(const std::string& policy_name,
+ const ListValue* policy_value) {
+ RegKey key(hive_,
+ (string16(policy::kRegistrySubKey) + ASCIIToUTF16("\\") +
+ UTF8ToUTF16(policy_name)).c_str(),
+ KEY_ALL_ACCESS);
+ int index = 1;
+ for (ListValue::const_iterator element(policy_value->begin());
+ element != policy_value->end();
+ ++element) {
+ std::string element_value;
+ if (!(*element)->GetAsString(&element_value))
+ continue;
+ std::string name(base::IntToString(index++));
+ key.WriteValue(UTF8ToUTF16(name).c_str(),
+ UTF8ToUTF16(element_value).c_str());
+ }
}
-TEST_P(ConfigurationPolicyProviderWinTest, HKCU) {
- WriteValue(HKEY_CURRENT_USER,
- GetParam().policy_name(),
- GetParam().hkcu_value());
- provider_->loader()->Reload();
- loop_.RunAllPending();
- PolicyMap policy_map;
- provider_->Provide(&policy_map);
- const Value* value = policy_map.Get(GetParam().type());
- ASSERT_TRUE(value);
- EXPECT_TRUE(value->Equals(GetParam().hkcu_value()));
+// static
+PolicyProviderTestHarness* TestHarness::CreateHKCU() {
+ return new TestHarness(HKEY_CURRENT_USER);
}
-TEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) {
- WriteValue(HKEY_LOCAL_MACHINE,
- GetParam().policy_name(),
- GetParam().hklm_value());
- WriteValue(HKEY_CURRENT_USER,
- GetParam().policy_name(),
- GetParam().hkcu_value());
- provider_->loader()->Reload();
- loop_.RunAllPending();
- PolicyMap policy_map;
- provider_->Provide(&policy_map);
- const Value* value = policy_map.Get(GetParam().type());
- ASSERT_TRUE(value);
- EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
+// static
+PolicyProviderTestHarness* TestHarness::CreateHKLM() {
+ return new TestHarness(HKEY_LOCAL_MACHINE);
}
-// Test parameters for all supported policies. testing::Values() has a limit of
-// 50 parameters which is reached in this instantiation; new policies should go
-// in the next instantiation after this one.
-INSTANTIATE_TEST_CASE_P(
- ConfigurationPolicyProviderWinTestInstance,
- ConfigurationPolicyProviderWinTest,
- testing::Values(
- PolicyTestParams::ForStringPolicy(
- kPolicyHomepageLocation,
- key::kHomepageLocation),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyHomepageIsNewTabPage,
- key::kHomepageIsNewTabPage),
- PolicyTestParams::ForIntegerPolicy(
- kPolicyRestoreOnStartup,
- key::kRestoreOnStartup),
- PolicyTestParams::ForListPolicy(
- kPolicyRestoreOnStartupURLs,
- key::kRestoreOnStartupURLs),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyDefaultSearchProviderEnabled,
- key::kDefaultSearchProviderEnabled),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderName,
- key::kDefaultSearchProviderName),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderKeyword,
- key::kDefaultSearchProviderKeyword),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderSearchURL,
- key::kDefaultSearchProviderSearchURL),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderSuggestURL,
- key::kDefaultSearchProviderSuggestURL),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderInstantURL,
- key::kDefaultSearchProviderInstantURL),
- PolicyTestParams::ForStringPolicy(
- kPolicyDefaultSearchProviderIconURL,
- key::kDefaultSearchProviderIconURL),
- PolicyTestParams::ForListPolicy(
- kPolicyDefaultSearchProviderEncodings,
- key::kDefaultSearchProviderEncodings),
- PolicyTestParams::ForStringPolicy(
- kPolicyProxyMode,
- key::kProxyMode),
- PolicyTestParams::ForIntegerPolicy(
- kPolicyProxyServerMode,
- key::kProxyServerMode),
- PolicyTestParams::ForStringPolicy(
- kPolicyProxyServer,
- key::kProxyServer),
- PolicyTestParams::ForStringPolicy(
- kPolicyProxyPacUrl,
- key::kProxyPacUrl),
- PolicyTestParams::ForStringPolicy(
- kPolicyProxyBypassList,
- key::kProxyBypassList),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyAlternateErrorPagesEnabled,
- key::kAlternateErrorPagesEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicySearchSuggestEnabled,
- key::kSearchSuggestEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyDnsPrefetchingEnabled,
- key::kDnsPrefetchingEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicySafeBrowsingEnabled,
- key::kSafeBrowsingEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyMetricsReportingEnabled,
- key::kMetricsReportingEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyPasswordManagerEnabled,
- key::kPasswordManagerEnabled),
- PolicyTestParams::ForListPolicy(
- kPolicyDisabledPlugins,
- key::kDisabledPlugins),
- PolicyTestParams::ForListPolicy(
- kPolicyDisabledPluginsExceptions,
- key::kDisabledPluginsExceptions),
- PolicyTestParams::ForListPolicy(
- kPolicyEnabledPlugins,
- key::kEnabledPlugins),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyAutoFillEnabled,
- key::kAutoFillEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicySyncDisabled,
- key::kSyncDisabled),
- PolicyTestParams::ForStringPolicy(
- kPolicyApplicationLocaleValue,
- key::kApplicationLocaleValue),
- PolicyTestParams::ForListPolicy(
- kPolicyExtensionInstallWhitelist,
- key::kExtensionInstallWhitelist),
- PolicyTestParams::ForListPolicy(
- kPolicyExtensionInstallBlacklist,
- key::kExtensionInstallBlacklist),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyShowHomeButton,
- key::kShowHomeButton),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyPrintingEnabled,
- key::kPrintingEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyInstantEnabled,
- key::kInstantEnabled),
- PolicyTestParams::ForIntegerPolicy(
- kPolicyIncognitoModeAvailability,
- key::kIncognitoModeAvailability),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyDisablePluginFinder,
- key::kDisablePluginFinder),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyClearSiteDataOnExit,
- key::kClearSiteDataOnExit),
- PolicyTestParams::ForStringPolicy(
- kPolicyDownloadDirectory,
- key::kDownloadDirectory),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyDefaultBrowserSettingEnabled,
- key::kDefaultBrowserSettingEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyCloudPrintProxyEnabled,
- key::kCloudPrintProxyEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyTranslateEnabled,
- key::kTranslateEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyAllowOutdatedPlugins,
- key::kAllowOutdatedPlugins),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyAlwaysAuthorizePlugins,
- key::kAlwaysAuthorizePlugins),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyBookmarkBarEnabled,
- key::kBookmarkBarEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyEditBookmarksEnabled,
- key::kEditBookmarksEnabled),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyAllowFileSelectionDialogs,
- key::kAllowFileSelectionDialogs),
- PolicyTestParams::ForListPolicy(
- kPolicyDisabledSchemes,
- key::kDisabledSchemes),
- PolicyTestParams::ForStringPolicy(
- kPolicyDiskCacheDir,
- key::kDiskCacheDir),
- PolicyTestParams::ForIntegerPolicy(
- kPolicyMaxConnectionsPerProxy,
- key::kMaxConnectionsPerProxy),
- PolicyTestParams::ForListPolicy(
- kPolicyURLBlacklist,
- key::kURLBlacklist)));
-
-// testing::Values has a limit of 50 test templates, which is reached by the
-// instantiations above. Add tests for new policies here:
+} // namespace
+
+// Instantiate abstract test case for basic policy reading tests.
INSTANTIATE_TEST_CASE_P(
- ConfigurationPolicyProviderWinTestInstance2,
ConfigurationPolicyProviderWinTest,
- testing::Values(
- PolicyTestParams::ForListPolicy(
- kPolicyURLWhitelist,
- key::kURLWhitelist),
- PolicyTestParams::ForBooleanPolicy(
- kPolicyCloudPrintSubmitEnabled,
- key::kCloudPrintSubmitEnabled)));
+ ConfigurationPolicyProviderTest,
+ testing::Values(TestHarness::CreateHKCU, TestHarness::CreateHKLM));
+
+// Test cases for windows policy provider specific functionality.
+class ConfigurationPolicyProviderWinTest : public testing::Test {
+ protected:
+ ConfigurationPolicyProviderWinTest()
+ : ui_thread_(content::BrowserThread::UI, &loop_),
+ file_thread_(content::BrowserThread::FILE, &loop_),
+ provider_(&test_policy_definitions::kList) {}
+
+ // Set up threads so the provider can do stuff on the FILE thread.
+ MessageLoopForIO loop_;
+ content::TestBrowserThread ui_thread_;
+ content::TestBrowserThread file_thread_;
+
+ ScopedGroupPolicyRegistrySandbox registry_sandbox_;
+ ConfigurationPolicyProviderWin provider_;
+};
+
+TEST_F(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) {
+ RegKey hklm_key(HKEY_LOCAL_MACHINE, policy::kRegistrySubKey, KEY_ALL_ACCESS);
+ hklm_key.WriteValue(UTF8ToUTF16(test_policy_definitions::kKeyString).c_str(),
+ UTF8ToUTF16("hklm").c_str());
+ RegKey hkcu_key(HKEY_CURRENT_USER, policy::kRegistrySubKey, KEY_ALL_ACCESS);
+ hkcu_key.WriteValue(UTF8ToUTF16(test_policy_definitions::kKeyString).c_str(),
+ UTF8ToUTF16("hkcu").c_str());
+
+ provider_.ForceReload();
+ loop_.RunAllPending();
+
+ PolicyMap policy_map;
+ provider_.Provide(&policy_map);
+ const Value* value = policy_map.Get(test_policy_definitions::kPolicyString);
+ EXPECT_TRUE(StringValue("hklm").Equals(value));
+}
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698