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 4947dbf9eeac05fb75a97bedb12341ad713c0d42..6145ae9afb39d0eb5ddfd4627ab18c555588fa03 100644 |
--- a/components/policy/core/browser/configuration_policy_handler_unittest.cc |
+++ b/components/policy/core/browser/configuration_policy_handler_unittest.cc |
@@ -25,13 +25,12 @@ StringToIntEnumListPolicyHandler::MappingEntry kTestTypeMap[] = { |
const char kTestPolicy[] = "unit_test.test_policy"; |
const char kTestPref[] = "unit_test.test_pref"; |
-class SimpleSchemaValidatingPolicyHandler |
- : public SchemaValidatingPolicyHandler { |
+class TestSchemaValidatingPolicyHandler : public SchemaValidatingPolicyHandler { |
public: |
- SimpleSchemaValidatingPolicyHandler(const Schema& schema, |
- SchemaOnErrorStrategy strategy) |
+ TestSchemaValidatingPolicyHandler(const Schema& schema, |
+ SchemaOnErrorStrategy strategy) |
: SchemaValidatingPolicyHandler("PolicyForTesting", schema, strategy) {} |
- virtual ~SimpleSchemaValidatingPolicyHandler() {} |
+ virtual ~TestSchemaValidatingPolicyHandler() {} |
virtual void ApplyPolicySettings(const policy::PolicyMap&, |
PrefValueMap*) OVERRIDE { |
@@ -543,7 +542,7 @@ TEST(SchemaValidatingPolicyHandlerTest, CheckAndGetValue) { |
policy_map.LoadFrom( |
policy_map_dict, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER); |
- SimpleSchemaValidatingPolicyHandler handler(schema, SCHEMA_ALLOW_INVALID); |
+ TestSchemaValidatingPolicyHandler handler(schema, SCHEMA_ALLOW_INVALID); |
scoped_ptr<base::Value> output_value; |
ASSERT_TRUE(handler.CheckAndGetValueForTest(policy_map, &output_value)); |
ASSERT_TRUE(output_value); |
@@ -558,4 +557,140 @@ TEST(SchemaValidatingPolicyHandlerTest, CheckAndGetValue) { |
EXPECT_FALSE(dict->HasKey("Colors")); |
} |
+TEST(SimpleSchemaValidatingPolicyHandlerTest, CheckAndGetValue) { |
+ const char policy_name[] = "PolicyForTesting"; |
+ static const char kSchemaJson[] = |
+ "{" |
+ " \"type\": \"object\"," |
+ " \"properties\": {" |
+ " \"PolicyForTesting\": {" |
+ " \"type\": \"object\"," |
+ " \"properties\": {" |
+ " \"OneToThree\": {" |
+ " \"type\": \"integer\"," |
+ " \"minimum\": 1," |
+ " \"maximum\": 3" |
+ " }," |
+ " \"Colors\": {" |
+ " \"type\": \"string\"," |
+ " \"enum\": [ \"Red\", \"Green\", \"Blue\" ]" |
+ " }" |
+ " }" |
+ " }" |
+ " }" |
+ "}"; |
+ std::string error; |
+ Schema schema = Schema::Parse(kSchemaJson, &error); |
+ ASSERT_TRUE(schema.valid()) << error; |
+ |
+ static const char kPolicyMapJson[] = |
+ "{" |
+ " \"PolicyForTesting\": {" |
+ " \"OneToThree\": 2," |
+ " \"Colors\": \"Green\"" |
+ " }" |
+ "}"; |
+ scoped_ptr<base::Value> policy_map_value(base::JSONReader::ReadAndReturnError( |
+ kPolicyMapJson, base::JSON_PARSE_RFC, NULL, &error)); |
+ ASSERT_TRUE(policy_map_value) << error; |
+ |
+ const base::DictionaryValue* policy_map_dict = NULL; |
+ ASSERT_TRUE(policy_map_value->GetAsDictionary(&policy_map_dict)); |
+ |
+ PolicyMap policy_map_recommended; |
+ policy_map_recommended.LoadFrom( |
+ policy_map_dict, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER); |
+ |
+ PolicyMap policy_map_mandatory; |
+ policy_map_mandatory.LoadFrom( |
+ policy_map_dict, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
+ |
+ SimpleSchemaValidatingPolicyHandler handler_all( |
+ policy_name, |
+ kTestPref, |
+ schema, |
+ SCHEMA_STRICT, |
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, |
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED); |
+ |
+ SimpleSchemaValidatingPolicyHandler handler_recommended( |
+ policy_name, |
+ kTestPref, |
+ schema, |
+ SCHEMA_STRICT, |
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, |
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED); |
+ |
+ SimpleSchemaValidatingPolicyHandler handler_mandatory( |
+ policy_name, |
+ kTestPref, |
+ schema, |
+ SCHEMA_STRICT, |
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_PROHIBITED, |
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED); |
+ |
+ SimpleSchemaValidatingPolicyHandler handler_none( |
+ policy_name, |
+ kTestPref, |
+ schema, |
+ SCHEMA_STRICT, |
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_PROHIBITED, |
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED); |
+ |
+ const base::Value* value_expected_in_pref; |
+ policy_map_dict->Get(policy_name, &value_expected_in_pref); |
+ |
+ PolicyErrorMap errors; |
+ PrefValueMap prefs; |
+ base::Value* value_set_in_pref; |
+ |
+ EXPECT_TRUE(handler_all.CheckPolicySettings(policy_map_mandatory, &errors)); |
+ EXPECT_TRUE(errors.empty()); |
+ prefs.Clear(); |
+ handler_all.ApplyPolicySettings(policy_map_mandatory, &prefs); |
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value_set_in_pref)); |
+ EXPECT_TRUE(value_expected_in_pref->Equals(value_set_in_pref)); |
+ |
+ EXPECT_FALSE( |
+ handler_recommended.CheckPolicySettings(policy_map_mandatory, &errors)); |
+ EXPECT_FALSE(errors.empty()); |
+ errors.Clear(); |
+ |
+ EXPECT_TRUE( |
+ handler_mandatory.CheckPolicySettings(policy_map_mandatory, &errors)); |
+ EXPECT_TRUE(errors.empty()); |
+ prefs.Clear(); |
+ handler_mandatory.ApplyPolicySettings(policy_map_mandatory, &prefs); |
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value_set_in_pref)); |
+ EXPECT_TRUE(value_expected_in_pref->Equals(value_set_in_pref)); |
+ |
+ EXPECT_FALSE(handler_none.CheckPolicySettings(policy_map_mandatory, &errors)); |
+ EXPECT_FALSE(errors.empty()); |
+ errors.Clear(); |
+ |
+ EXPECT_TRUE(handler_all.CheckPolicySettings(policy_map_recommended, &errors)); |
+ EXPECT_TRUE(errors.empty()); |
+ prefs.Clear(); |
+ handler_all.ApplyPolicySettings(policy_map_mandatory, &prefs); |
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value_set_in_pref)); |
+ EXPECT_TRUE(value_expected_in_pref->Equals(value_set_in_pref)); |
+ |
+ EXPECT_FALSE( |
+ handler_mandatory.CheckPolicySettings(policy_map_recommended, &errors)); |
+ EXPECT_FALSE(errors.empty()); |
+ errors.Clear(); |
+ |
+ EXPECT_TRUE( |
+ handler_recommended.CheckPolicySettings(policy_map_recommended, &errors)); |
+ EXPECT_TRUE(errors.empty()); |
+ prefs.Clear(); |
+ handler_recommended.ApplyPolicySettings(policy_map_mandatory, &prefs); |
+ EXPECT_TRUE(prefs.GetValue(kTestPref, &value_set_in_pref)); |
+ EXPECT_TRUE(value_expected_in_pref->Equals(value_set_in_pref)); |
+ |
+ EXPECT_FALSE( |
+ handler_none.CheckPolicySettings(policy_map_recommended, &errors)); |
+ EXPECT_FALSE(errors.empty()); |
+} |
+ |
} // namespace policy |