| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/policy/policy_loader_win.h" | 5 #include "chrome/browser/policy/policy_loader_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <userenv.h> | 8 #include <userenv.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 1037 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
| 1038 | 1038 |
| 1039 PolicyBundle expected; | 1039 PolicyBundle expected; |
| 1040 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "int")) | 1040 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "int")) |
| 1041 .LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 1041 .LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 1042 EXPECT_TRUE(Matches(expected)); | 1042 EXPECT_TRUE(Matches(expected)); |
| 1043 } | 1043 } |
| 1044 | 1044 |
| 1045 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { | 1045 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { |
| 1046 // Build a schema for an "object" with a default schema for its properties. | 1046 // Build a schema for an "object" with a default schema for its properties. |
| 1047 // Note that the top-level object can't have "additionalProperties", so |
| 1048 // a "policy" property is used instead. |
| 1047 base::DictionaryValue default_schema; | 1049 base::DictionaryValue default_schema; |
| 1048 default_schema.SetString(schema::kType, "number"); | 1050 default_schema.SetString(schema::kType, "number"); |
| 1049 base::DictionaryValue integer_schema; | 1051 base::DictionaryValue integer_schema; |
| 1050 integer_schema.SetString(schema::kType, "integer"); | 1052 integer_schema.SetString(schema::kType, "integer"); |
| 1051 base::DictionaryValue properties; | 1053 base::DictionaryValue policy_properties; |
| 1052 properties.Set("special-int1", integer_schema.DeepCopy()); | 1054 policy_properties.Set("special-int1", integer_schema.DeepCopy()); |
| 1053 properties.Set("special-int2", integer_schema.DeepCopy()); | 1055 policy_properties.Set("special-int2", integer_schema.DeepCopy()); |
| 1056 base::DictionaryValue policy_schema; |
| 1057 policy_schema.SetString(schema::kType, "object"); |
| 1058 policy_schema.Set(schema::kProperties, policy_properties.DeepCopy()); |
| 1059 policy_schema.Set(schema::kAdditionalProperties, default_schema.DeepCopy()); |
| 1060 base::DictionaryValue schema_properties; |
| 1061 schema_properties.Set("policy", policy_schema.DeepCopy()); |
| 1054 base::DictionaryValue schema; | 1062 base::DictionaryValue schema; |
| 1055 schema.SetString(schema::kType, "object"); | 1063 schema.SetString(schema::kType, "object"); |
| 1056 schema.Set(schema::kProperties, properties.DeepCopy()); | 1064 schema.Set(schema::kProperties, schema_properties.DeepCopy()); |
| 1057 schema.Set(schema::kAdditionalProperties, default_schema.DeepCopy()); | |
| 1058 | 1065 |
| 1059 const string16 kPathSuffix = | 1066 const string16 kPathSuffix = |
| 1060 kTestPolicyKey + ASCIIToUTF16("\\3rdparty\\extensions\\test"); | 1067 kTestPolicyKey + ASCIIToUTF16("\\3rdparty\\extensions\\test"); |
| 1061 EXPECT_TRUE(WriteSchema(schema, HKEY_CURRENT_USER, kPathSuffix, kSchema)); | 1068 EXPECT_TRUE(WriteSchema(schema, HKEY_CURRENT_USER, kPathSuffix, kSchema)); |
| 1062 | 1069 |
| 1063 // Write some test values. | 1070 // Write some test values. |
| 1064 base::DictionaryValue policy; | 1071 base::DictionaryValue policy; |
| 1065 // These special values have a specific schema for them. | 1072 // These special values have a specific schema for them. |
| 1066 policy.SetInteger("special-int1", 123); | 1073 policy.SetInteger("special-int1", 123); |
| 1067 policy.SetString("special-int2", "-456"); | 1074 policy.SetString("special-int2", "-456"); |
| 1068 // Other values default to be loaded as doubles. | 1075 // Other values default to be loaded as doubles. |
| 1069 policy.SetInteger("double1", 789.0); | 1076 policy.SetInteger("double1", 789.0); |
| 1070 policy.SetString("double2", "123.456e7"); | 1077 policy.SetString("double2", "123.456e7"); |
| 1071 policy.SetString("invalid", "omg"); | 1078 policy.SetString("invalid", "omg"); |
| 1072 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 1079 base::DictionaryValue all_policies; |
| 1080 all_policies.Set("policy", policy.DeepCopy()); |
| 1081 EXPECT_TRUE( |
| 1082 InstallValue(all_policies, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
| 1073 | 1083 |
| 1074 base::DictionaryValue expected_policy; | 1084 base::DictionaryValue expected_policy; |
| 1075 expected_policy.SetInteger("special-int1", 123); | 1085 expected_policy.SetInteger("special-int1", 123); |
| 1076 expected_policy.SetInteger("special-int2", -456); | 1086 expected_policy.SetInteger("special-int2", -456); |
| 1077 expected_policy.SetDouble("double1", 789.0); | 1087 expected_policy.SetDouble("double1", 789.0); |
| 1078 expected_policy.SetDouble("double2", 123.456e7); | 1088 expected_policy.SetDouble("double2", 123.456e7); |
| 1079 expected_policy.Set("invalid", base::Value::CreateNullValue()); | 1089 expected_policy.Set("invalid", base::Value::CreateNullValue()); |
| 1090 base::DictionaryValue expected_policies; |
| 1091 expected_policies.Set("policy", expected_policy.DeepCopy()); |
| 1080 PolicyBundle expected; | 1092 PolicyBundle expected; |
| 1081 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "test")) | 1093 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "test")) |
| 1082 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 1094 .LoadFrom(&expected_policies, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 1083 EXPECT_TRUE(Matches(expected)); | 1095 EXPECT_TRUE(Matches(expected)); |
| 1084 } | 1096 } |
| 1085 | 1097 |
| 1086 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { | 1098 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { |
| 1087 InstallRegistrySentinel(); | 1099 InstallRegistrySentinel(); |
| 1088 gpo_list_ = NULL; | 1100 gpo_list_ = NULL; |
| 1089 gpo_list_status_ = ERROR_SUCCESS; | 1101 gpo_list_status_ = ERROR_SUCCESS; |
| 1090 | 1102 |
| 1091 PolicyBundle empty; | 1103 PolicyBundle empty; |
| 1092 EXPECT_TRUE(Matches(empty)); | 1104 EXPECT_TRUE(Matches(empty)); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1209 .LoadFrom(&expected_a, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1221 .LoadFrom(&expected_a, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); |
| 1210 base::DictionaryValue expected_b; | 1222 base::DictionaryValue expected_b; |
| 1211 expected_b.SetInteger("policy 1", 2); | 1223 expected_b.SetInteger("policy 1", 2); |
| 1212 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, | 1224 expected.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, |
| 1213 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")) | 1225 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")) |
| 1214 .LoadFrom(&expected_b, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1226 .LoadFrom(&expected_b, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); |
| 1215 EXPECT_TRUE(Matches(expected)); | 1227 EXPECT_TRUE(Matches(expected)); |
| 1216 } | 1228 } |
| 1217 | 1229 |
| 1218 } // namespace policy | 1230 } // namespace policy |
| OLD | NEW |