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

Unified Diff: components/policy/core/browser/configuration_policy_handler_unittest.cc

Issue 185413025: Moved policy unittests into the policy component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 9 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
« no previous file with comments | « components/policy.gypi ('k') | components/policy/core/browser/configuration_policy_pref_store_test.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/policy/core/browser/configuration_policy_handler_unittest.cc
diff --git a/components/policy/core/browser/configuration_policy_handler_unittest.cc b/components/policy/core/browser/configuration_policy_handler_unittest.cc
index d41f89ba9a13a6261246448bff69384ade8556cf..4947dbf9eeac05fb75a97bedb12341ad713c0d42 100644
--- a/components/policy/core/browser/configuration_policy_handler_unittest.cc
+++ b/components/policy/core/browser/configuration_policy_handler_unittest.cc
@@ -1,11 +1,14 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// Copyright (c) 2014 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/callback.h"
#include "base/json/json_reader.h"
#include "base/memory/scoped_ptr.h"
+#include "base/prefs/pref_value_map.h"
#include "base/values.h"
#include "components/policy/core/browser/configuration_policy_handler.h"
+#include "components/policy/core/browser/policy_error_map.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/core/common/schema.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -14,6 +17,14 @@ namespace policy {
namespace {
+StringToIntEnumListPolicyHandler::MappingEntry kTestTypeMap[] = {
+ { "one", 1 },
+ { "two", 2 },
+};
+
+const char kTestPolicy[] = "unit_test.test_policy";
+const char kTestPref[] = "unit_test.test_pref";
+
class SimpleSchemaValidatingPolicyHandler
: public SchemaValidatingPolicyHandler {
public:
@@ -35,6 +46,465 @@ class SimpleSchemaValidatingPolicyHandler
} // namespace
+TEST(StringToIntEnumListPolicyHandlerTest, CheckPolicySettings) {
+ base::ListValue list;
+ PolicyMap policy_map;
+ PolicyErrorMap errors;
+ StringToIntEnumListPolicyHandler handler(
+ kTestPolicy,
+ kTestPref,
+ kTestTypeMap,
+ kTestTypeMap + arraysize(kTestTypeMap));
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ list.AppendString("one");
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ list.AppendString("invalid");
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+ EXPECT_FALSE(errors.GetErrors(kTestPolicy).empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER,
+ base::Value::CreateStringValue("no list"), NULL);
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+ EXPECT_FALSE(errors.GetErrors(kTestPolicy).empty());
+}
+
+TEST(StringToIntEnumListPolicyHandlerTest, ApplyPolicySettings) {
+ base::ListValue list;
+ base::ListValue expected;
+ PolicyMap policy_map;
+ PrefValueMap prefs;
+ base::Value* value;
+ StringToIntEnumListPolicyHandler handler(
+ kTestPolicy,
+ kTestPref,
+ kTestTypeMap,
+ kTestTypeMap + arraysize(kTestTypeMap));
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(&expected, value));
+
+ list.AppendString("two");
+ expected.AppendInteger(2);
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ EXPECT_TRUE(base::Value::Equals(&expected, value));
+
+ list.AppendString("invalid");
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, list.DeepCopy(), NULL);
+ handler.ApplyPolicySettings(policy_map, &prefs);
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
+ 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(kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(kTestPolicy,
+ POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
+ base::Value::CreateStringValue("invalid"), NULL);
+ 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(kTestPolicy, kTestPref, 0, 10, false);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
+ base::Value::CreateStringValue("invalid"), NULL);
+ 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(kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(
+ kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
+ base::Value::CreateStringValue("invalid"), NULL);
+ 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(
+ kTestPolicy, kTestPref, 0, 10, false);
+
+ // Check that values lying in the accepted range are not rejected.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ errors.Clear();
+ EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_TRUE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ errors.Clear();
+ EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
+ EXPECT_FALSE(errors.empty());
+
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
+ base::Value::CreateStringValue("invalid"), NULL);
+ 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(
+ kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL);
+ 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(
+ kTestPolicy, kTestPref, 0, 10, true);
+
+ // Check that values lying in the accepted range are written to the pref.
+ policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL);
+ 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(kTestPolicy, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL);
+ 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(SchemaValidatingPolicyHandlerTest, CheckAndGetValue) {
std::string error;
static const char kSchemaJson[] =
« no previous file with comments | « components/policy.gypi ('k') | components/policy/core/browser/configuration_policy_pref_store_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698