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

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

Issue 12217068: Add policies to control Chrome OS power management (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 years, 10 months 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_handler_unittest.cc
diff --git a/chrome/browser/policy/configuration_policy_handler_unittest.cc b/chrome/browser/policy/configuration_policy_handler_unittest.cc
index 1eef548b8cdf1520295fba80b5333f506d23188c..95e5256c690ee4dd3a686a5369cde3494a200dbd 100644
--- a/chrome/browser/policy/configuration_policy_handler_unittest.cc
+++ b/chrome/browser/policy/configuration_policy_handler_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_value_map.h"
#include "chrome/browser/extensions/external_policy_loader.h"
#include "chrome/browser/policy/configuration_policy_handler.h"
@@ -20,6 +21,8 @@ StringToIntEnumListPolicyHandler::MappingEntry kTestTypeMap[] = {
{ "two", 2 },
};
+const char kTestPref[] = "unit_test.test_pref";
+
} // namespace
TEST(StringToIntEnumListPolicyHandlerTest, CheckPolicySettings) {
@@ -91,6 +94,390 @@ TEST(StringToIntEnumListPolicyHandlerTest, ApplyPolicySettings) {
EXPECT_TRUE(base::Value::Equals(&expected, value));
}
+TEST(IntRangePolicyHandler, CheckPolicySettingsClamp) {
+ PolicyMap policy_map;
+ PolicyErrorMap errors;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntRangePolicyHandler handler(key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ // Check that values lying outside the accepted range are not rejected
+ // (because clamping is enabled) but do yield a warning message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ // Check that an entirely invalid value is rejected and yields an error
+ // message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateStringValue("invalid"));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+}
+
+TEST(IntRangePolicyHandler, CheckPolicySettingsDontClamp) {
+ PolicyMap policy_map;
+ PolicyErrorMap errors;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntRangePolicyHandler handler(key::kDiskCacheSize, kTestPref, 0, 10, false);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ // Check that values lying outside the accepted range are rejected and yield
+ // an error message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ // Check that an entirely invalid value is rejected and yields an error
+ // message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateStringValue("invalid"));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+}
+
+TEST(IntRangePolicyHandler, ApplyPolicySettingsClamp) {
+ PolicyMap policy_map;
+ PrefValueMap prefs;
+ scoped_ptr<base::Value> expected;
+ const base::Value* value;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntRangePolicyHandler handler(key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(5));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(10));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ // Check that values lying outside the accepted range are clamped and written
+ // to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(10));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+}
+
+TEST(IntRangePolicyHandler, ApplyPolicySettingsDontClamp) {
+ PolicyMap policy_map;
+ PrefValueMap prefs;
+ scoped_ptr<base::Value> expected;
+ const base::Value* value;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntRangePolicyHandler handler(key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(5));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateIntegerValue(10));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+}
+
+TEST(IntPercentageToDoublePolicyHandler, CheckPolicySettingsClamp) {
+ PolicyMap policy_map;
+ PolicyErrorMap errors;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntPercentageToDoublePolicyHandler handler(
+ key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ // Check that values lying outside the accepted range are not rejected
+ // (because clamping is enabled) but do yield a warning message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ // Check that an entirely invalid value is rejected and yields an error
+ // message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateStringValue("invalid"));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+}
+
+TEST(IntPercentageToDoublePolicyHandler, CheckPolicySettingsDontClamp) {
+ PolicyMap policy_map;
+ PolicyErrorMap errors;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntPercentageToDoublePolicyHandler handler(
+ key::kDiskCacheSize, kTestPref, 0, 10, false);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ // Check that values lying outside the accepted range are rejected and yield
+ // an error message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ // Check that an entirely invalid value is rejected and yields an error
+ // message.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateStringValue("invalid"));
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+}
+
+TEST(IntPercentageToDoublePolicyHandler, ApplyPolicySettingsClamp) {
+ PolicyMap policy_map;
+ PrefValueMap prefs;
+ scoped_ptr<base::Value> expected;
+ const base::Value* value;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntPercentageToDoublePolicyHandler handler(
+ key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.05));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.1));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ // Check that values lying outside the accepted range are clamped and written
+ // to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.1));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+}
+
+TEST(IntPercentageToDoublePolicyHandler, ApplyPolicySettingsDontClamp) {
+ PolicyMap policy_map;
+ PrefValueMap prefs;
+ scoped_ptr<base::Value> expected;
+ const base::Value* value;
+
+ // This tests needs to modify an int policy. The exact policy used and its
+ // semantics outside the test are irrelevant.
+ IntPercentageToDoublePolicyHandler handler(
+ key::kDiskCacheSize, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.0));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.05));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+
+ policy_map.Set(key::kDiskCacheSize, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10));
+ prefs.Clear();
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ expected.reset(base::Value::CreateDoubleValue(0.1));
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(expected.get(), value));
+}
+
TEST(ExtensionListPolicyHandlerTest, CheckPolicySettings) {
base::ListValue list;
PolicyMap policy_map;
« no previous file with comments | « chrome/browser/policy/configuration_policy_handler_list.cc ('k') | chrome/test/data/policy/policy_test_cases.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698