Index: chrome/browser/policy/configuration_policy_provider_mac_unittest.cc |
diff --git a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc |
index c2f7ce4e32bc6e1e486019be1f0733ea7c31188c..46ebc91a8c5d00b81768dc5dc61d1cd011f92d40 100644 |
--- a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc |
+++ b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc |
@@ -4,11 +4,12 @@ |
#include <gtest/gtest.h> |
+#include "base/basictypes.h" |
#include "base/mac/scoped_cftyperef.h" |
-#include "base/stl_util.h" |
#include "base/sys_string_conversions.h" |
-#include "chrome/browser/policy/configuration_policy_pref_store.h" |
+#include "chrome/browser/policy/asynchronous_policy_test_base.h" |
#include "chrome/browser/policy/configuration_policy_provider_mac.h" |
+#include "chrome/browser/policy/configuration_policy_provider_test.h" |
#include "chrome/browser/policy/policy_map.h" |
#include "chrome/browser/preferences_mock_mac.h" |
#include "policy/policy_constants.h" |
@@ -16,354 +17,141 @@ |
namespace policy { |
-// Holds parameters for the parametrized policy tests. |
-class PolicyTestParams { |
+namespace { |
+ |
+class TestHarness : public PolicyProviderTestHarness { |
public: |
- // Takes ownership of |test_value|. |
- PolicyTestParams(ConfigurationPolicyType type, |
- const char* policy_name, |
- Value* test_value) |
- : type_(type), |
- policy_name_(policy_name), |
- test_value_(test_value) {} |
+ TestHarness(); |
+ virtual ~TestHarness(); |
- // testing::TestWithParam does copying, so provide copy constructor and |
- // assignment operator. |
- PolicyTestParams(const PolicyTestParams& other) |
- : type_(other.type_), |
- policy_name_(other.policy_name_), |
- test_value_(other.test_value_->DeepCopy()) {} |
+ virtual void SetUp() OVERRIDE; |
- const PolicyTestParams& operator=(PolicyTestParams other) { |
- swap(other); |
- return *this; |
- } |
+ virtual AsynchronousPolicyProvider* CreateProvider( |
+ const PolicyDefinitionList* policy_definition_list) OVERRIDE; |
- void swap(PolicyTestParams& other) { |
- std::swap(type_, other.type_); |
- std::swap(policy_name_, other.policy_name_); |
- test_value_.swap(other.test_value_); |
- } |
+ 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; |
- ConfigurationPolicyType type() const { return type_; } |
- const char* policy_name() const { return policy_name_; } |
- const Value* test_value() const { return test_value_.get(); } |
- |
- // Get the test value in the appropriate CFPropertyListRef representation. |
- CFPropertyListRef GetPropertyListValue() const { |
- switch (test_value_->GetType()) { |
- case Value::TYPE_BOOLEAN: { |
- bool v; |
- if (!test_value_->GetAsBoolean(&v)) |
- return NULL; |
- return CFRetain(v ? kCFBooleanTrue : kCFBooleanFalse); |
- } |
- case Value::TYPE_INTEGER: { |
- int v; |
- if (!test_value_->GetAsInteger(&v)) |
- return NULL; |
- return CFNumberCreate(NULL, kCFNumberIntType, &v); |
- } |
- case Value::TYPE_STRING: { |
- std::string v; |
- if (!test_value_->GetAsString(&v)) |
- return NULL; |
- return base::SysUTF8ToCFStringRef(v); |
- } |
- case Value::TYPE_LIST: { |
- const ListValue* list = |
- static_cast<const ListValue*>(test_value_.get()); |
- base::mac::ScopedCFTypeRef<CFMutableArrayRef> array( |
- CFArrayCreateMutable(NULL, list->GetSize(), |
- &kCFTypeArrayCallBacks)); |
- for (ListValue::const_iterator element(list->begin()); |
- element != list->end(); ++element) { |
- if (!(*element)->IsType(Value::TYPE_STRING)) |
- return NULL; |
- std::string element_value; |
- if (!(*element)->GetAsString(&element_value)) |
- return NULL; |
- base::mac::ScopedCFTypeRef<CFStringRef> cf_element_value( |
- base::SysUTF8ToCFStringRef(element_value)); |
- CFArrayAppendValue(array, cf_element_value.get()); |
- } |
- return array.release(); |
- } |
- default: |
- return NULL; |
- } |
- } |
- |
- // Factory methods that create parameter objects for different value types. |
- static PolicyTestParams ForStringPolicy( |
- ConfigurationPolicyType type, |
- const char* name) { |
- return PolicyTestParams(type, name, Value::CreateStringValue("test")); |
- } |
- static PolicyTestParams ForBooleanPolicy( |
- ConfigurationPolicyType type, |
- const char* name) { |
- return PolicyTestParams(type, name, Value::CreateBooleanValue(true)); |
- } |
- static PolicyTestParams ForIntegerPolicy( |
- ConfigurationPolicyType type, |
- const char* name) { |
- return PolicyTestParams(type, name, Value::CreateIntegerValue(42)); |
- } |
- static PolicyTestParams ForListPolicy( |
- ConfigurationPolicyType type, |
- const char* name) { |
- ListValue* value = new ListValue; |
- value->Set(0U, Value::CreateStringValue("first")); |
- value->Set(1U, Value::CreateStringValue("second")); |
- return PolicyTestParams(type, name, value); |
- } |
+ static PolicyProviderTestHarness* Create(); |
private: |
- ConfigurationPolicyType type_; |
- const char* policy_name_; |
- scoped_ptr<Value> test_value_; |
+ MockPreferences* prefs_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestHarness); |
}; |
-// Parametrized test class for testing whether ConfigurationPolicyProviderMac |
-// can handle all policies correctly. |
-class ConfigurationPolicyProviderMacTest |
- : public testing::TestWithParam<PolicyTestParams> { |
- public: |
- virtual void SetUp() { |
- prefs_ = new MockPreferences; |
+TestHarness::TestHarness() {} |
+ |
+TestHarness::~TestHarness() {} |
+ |
+void TestHarness::SetUp() {} |
+ |
+AsynchronousPolicyProvider* TestHarness::CreateProvider( |
+ const PolicyDefinitionList* policy_definition_list) { |
+ prefs_ = new MockPreferences(); |
+ return new ConfigurationPolicyProviderMac(policy_definition_list, prefs_); |
+} |
+ |
+void TestHarness::InstallEmptyPolicy() {} |
+ |
+void TestHarness::InstallStringPolicy(const std::string& policy_name, |
+ const std::string& policy_value) { |
+ prefs_->AddTestItem(base::SysUTF8ToCFStringRef(policy_name), |
+ base::SysUTF8ToCFStringRef(policy_value), |
+ true); |
+} |
+ |
+void TestHarness::InstallIntegerPolicy(const std::string& policy_name, |
+ int policy_value) { |
+ prefs_->AddTestItem(base::SysUTF8ToCFStringRef(policy_name), |
+ CFNumberCreate(NULL, kCFNumberIntType, &policy_value), |
+ true); |
+} |
+ |
+void TestHarness::InstallBooleanPolicy(const std::string& policy_name, |
+ bool policy_value) { |
+ prefs_->AddTestItem(base::SysUTF8ToCFStringRef(policy_name), |
+ CFRetain(policy_value ? kCFBooleanTrue : kCFBooleanFalse), |
+ true); |
+} |
+ |
+void TestHarness::InstallStringListPolicy(const std::string& policy_name, |
+ const ListValue* policy_value) { |
+ base::mac::ScopedCFTypeRef<CFMutableArrayRef> array( |
+ CFArrayCreateMutable(NULL, policy_value->GetSize(), |
+ &kCFTypeArrayCallBacks)); |
+ for (ListValue::const_iterator element(policy_value->begin()); |
+ element != policy_value->end(); ++element) { |
+ std::string element_value; |
+ if (!(*element)->GetAsString(&element_value)) |
+ continue; |
+ CFArrayAppendValue(array, base::SysUTF8ToCFStringRef(element_value)); |
} |
+ prefs_->AddTestItem(base::SysUTF8ToCFStringRef(policy_name), |
+ array.release(), |
+ true); |
+} |
+ |
+// static |
+PolicyProviderTestHarness* TestHarness::Create() { |
+ return new TestHarness(); |
+} |
+ |
+} // namespace |
+ |
+// Instantiate abstract test case for basic policy reading tests. |
+INSTANTIATE_TEST_CASE_P( |
+ ConfigurationPolicyProviderMacTest, |
+ ConfigurationPolicyProviderTest, |
+ testing::Values(TestHarness::Create)); |
+ |
+// Special test cases for some mac preferences details. |
+class ConfigurationPolicyProviderMacTest : public AsynchronousPolicyTestBase { |
protected: |
+ ConfigurationPolicyProviderMacTest() |
+ : prefs_(new MockPreferences()), |
+ provider_(&test_policy_definitions::kList, prefs_) {} |
+ virtual ~ConfigurationPolicyProviderMacTest() {} |
+ |
MockPreferences* prefs_; |
+ ConfigurationPolicyProviderMac provider_; |
}; |
-TEST_P(ConfigurationPolicyProviderMacTest, Default) { |
- ConfigurationPolicyProviderMac provider( |
- GetChromePolicyDefinitionList(), prefs_); |
- PolicyMap policy_map; |
- EXPECT_TRUE(provider.Provide(&policy_map)); |
- EXPECT_TRUE(policy_map.empty()); |
-} |
- |
-TEST_P(ConfigurationPolicyProviderMacTest, Invalid) { |
+TEST_F(ConfigurationPolicyProviderMacTest, Invalid) { |
base::mac::ScopedCFTypeRef<CFStringRef> name( |
- base::SysUTF8ToCFStringRef(GetParam().policy_name())); |
+ base::SysUTF8ToCFStringRef(test_policy_definitions::kKeyString)); |
base::mac::ScopedCFTypeRef<CFDataRef> invalid_data( |
CFDataCreate(NULL, NULL, 0)); |
prefs_->AddTestItem(name, invalid_data.get(), true); |
// Create the provider and have it read |prefs_|. |
- ConfigurationPolicyProviderMac provider( |
- GetChromePolicyDefinitionList(), prefs_); |
+ provider_.ForceReload(); |
PolicyMap policy_map; |
- EXPECT_TRUE(provider.Provide(&policy_map)); |
+ EXPECT_TRUE(provider_.Provide(&policy_map)); |
EXPECT_TRUE(policy_map.empty()); |
} |
-TEST_P(ConfigurationPolicyProviderMacTest, TestNonForcedValue) { |
+TEST_F(ConfigurationPolicyProviderMacTest, TestNonForcedValue) { |
base::mac::ScopedCFTypeRef<CFStringRef> name( |
- base::SysUTF8ToCFStringRef(GetParam().policy_name())); |
+ base::SysUTF8ToCFStringRef(test_policy_definitions::kKeyString)); |
base::mac::ScopedCFTypeRef<CFPropertyListRef> test_value( |
- GetParam().GetPropertyListValue()); |
+ base::SysUTF8ToCFStringRef("string value")); |
ASSERT_TRUE(test_value.get()); |
prefs_->AddTestItem(name, test_value.get(), false); |
// Create the provider and have it read |prefs_|. |
- ConfigurationPolicyProviderMac provider( |
- GetChromePolicyDefinitionList(), prefs_); |
+ provider_.ForceReload(); |
PolicyMap policy_map; |
- EXPECT_TRUE(provider.Provide(&policy_map)); |
+ EXPECT_TRUE(provider_.Provide(&policy_map)); |
EXPECT_TRUE(policy_map.empty()); |
} |
-TEST_P(ConfigurationPolicyProviderMacTest, TestValue) { |
- base::mac::ScopedCFTypeRef<CFStringRef> name( |
- base::SysUTF8ToCFStringRef(GetParam().policy_name())); |
- base::mac::ScopedCFTypeRef<CFPropertyListRef> test_value( |
- GetParam().GetPropertyListValue()); |
- ASSERT_TRUE(test_value.get()); |
- prefs_->AddTestItem(name, test_value, true); |
- |
- // Create the provider and have it read |prefs_|. |
- ConfigurationPolicyProviderMac provider( |
- GetChromePolicyDefinitionList(), prefs_); |
- PolicyMap policy_map; |
- EXPECT_TRUE(provider.Provide(&policy_map)); |
- ASSERT_EQ(1U, policy_map.size()); |
- const Value* value = policy_map.Get(GetParam().type()); |
- ASSERT_TRUE(value); |
- EXPECT_TRUE(GetParam().test_value()->Equals(value)); |
-} |
- |
-// 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( |
- ConfigurationPolicyProviderMacTestInstance, |
- ConfigurationPolicyProviderMacTest, |
- 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::ForBooleanPolicy( |
- kPolicyPasswordManagerAllowShowPasswords, |
- key::kPasswordManagerAllowShowPasswords), |
- PolicyTestParams::ForListPolicy( |
- kPolicyDisabledPlugins, |
- key::kDisabledPlugins), |
- PolicyTestParams::ForListPolicy( |
- kPolicyDisabledPluginsExceptions, |
- key::kDisabledPluginsExceptions), |
- PolicyTestParams::ForListPolicy( |
- kPolicyEnabledPlugins, |
- key::kEnabledPlugins), |
- PolicyTestParams::ForBooleanPolicy( |
- kPolicyAutoFillEnabled, |
- key::kAutoFillEnabled), |
- PolicyTestParams::ForStringPolicy( |
- kPolicyApplicationLocaleValue, |
- key::kApplicationLocaleValue), |
- PolicyTestParams::ForBooleanPolicy( |
- kPolicySyncDisabled, |
- key::kSyncDisabled), |
- 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::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: |
-INSTANTIATE_TEST_CASE_P( |
- ConfigurationPolicyProviderMacTestInstance2, |
- ConfigurationPolicyProviderMacTest, |
- testing::Values( |
- PolicyTestParams::ForListPolicy( |
- kPolicyURLWhitelist, |
- key::kURLWhitelist), |
- PolicyTestParams::ForBooleanPolicy( |
- kPolicyCloudPrintSubmitEnabled, |
- key::kCloudPrintSubmitEnabled))); |
} // namespace policy |