| 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[] =
|
|
|