OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/policy/core/common/policy_bundle.h" | 5 #include "components/policy/core/common/policy_bundle.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 const char kPolicy2[] = "policy-2"; | 26 const char kPolicy2[] = "policy-2"; |
27 const char kExtension0[] = "extension-0"; | 27 const char kExtension0[] = "extension-0"; |
28 const char kExtension1[] = "extension-1"; | 28 const char kExtension1[] = "extension-1"; |
29 const char kExtension2[] = "extension-2"; | 29 const char kExtension2[] = "extension-2"; |
30 const char kExtension3[] = "extension-3"; | 30 const char kExtension3[] = "extension-3"; |
31 | 31 |
32 // Adds test policies to |policy|. | 32 // Adds test policies to |policy|. |
33 void AddTestPolicies(PolicyMap* policy) { | 33 void AddTestPolicies(PolicyMap* policy) { |
34 policy->Set("mandatory-user", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 34 policy->Set("mandatory-user", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
35 POLICY_SOURCE_CLOUD, | 35 POLICY_SOURCE_CLOUD, |
36 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 36 base::MakeUnique<base::Value>(123), nullptr); |
37 policy->Set("mandatory-machine", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 37 policy->Set("mandatory-machine", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
38 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>("omg"), | 38 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>("omg"), |
39 nullptr); | 39 nullptr); |
40 policy->Set("recommended-user", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 40 policy->Set("recommended-user", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
41 POLICY_SOURCE_CLOUD, | 41 POLICY_SOURCE_CLOUD, |
42 base::MakeUnique<base::FundamentalValue>(true), nullptr); | 42 base::MakeUnique<base::Value>(true), nullptr); |
43 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 43 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
44 dict->SetBoolean("false", false); | 44 dict->SetBoolean("false", false); |
45 dict->SetInteger("int", 456); | 45 dict->SetInteger("int", 456); |
46 dict->SetString("str", "bbq"); | 46 dict->SetString("str", "bbq"); |
47 policy->Set("recommended-machine", POLICY_LEVEL_RECOMMENDED, | 47 policy->Set("recommended-machine", POLICY_LEVEL_RECOMMENDED, |
48 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, std::move(dict), | 48 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, std::move(dict), |
49 nullptr); | 49 nullptr); |
50 } | 50 } |
51 | 51 |
52 // Adds test policies to |policy| based on the parameters: | 52 // Adds test policies to |policy| based on the parameters: |
53 // - kPolicyClashing0 mapped to |value|, user mandatory | 53 // - kPolicyClashing0 mapped to |value|, user mandatory |
54 // - kPolicyClashing1 mapped to |value|, with |level| and |scope| | 54 // - kPolicyClashing1 mapped to |value|, with |level| and |scope| |
55 // - |name| mapped to |value|, user mandatory | 55 // - |name| mapped to |value|, user mandatory |
56 void AddTestPoliciesWithParams(PolicyMap *policy, | 56 void AddTestPoliciesWithParams(PolicyMap *policy, |
57 const char* name, | 57 const char* name, |
58 int value, | 58 int value, |
59 PolicyLevel level, | 59 PolicyLevel level, |
60 PolicyScope scope) { | 60 PolicyScope scope) { |
61 policy->Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 61 policy->Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
62 POLICY_SOURCE_CLOUD, | 62 POLICY_SOURCE_CLOUD, |
63 base::MakeUnique<base::FundamentalValue>(value), nullptr); | 63 base::MakeUnique<base::Value>(value), nullptr); |
64 policy->Set(kPolicyClashing1, level, scope, POLICY_SOURCE_CLOUD, | 64 policy->Set(kPolicyClashing1, level, scope, POLICY_SOURCE_CLOUD, |
65 base::MakeUnique<base::FundamentalValue>(value), nullptr); | 65 base::MakeUnique<base::Value>(value), nullptr); |
66 policy->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 66 policy->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
67 POLICY_SOURCE_CLOUD, | 67 POLICY_SOURCE_CLOUD, |
68 base::MakeUnique<base::FundamentalValue>(value), nullptr); | 68 base::MakeUnique<base::Value>(value), nullptr); |
69 } | 69 } |
70 | 70 |
71 // Returns true if |bundle| is empty. | 71 // Returns true if |bundle| is empty. |
72 bool IsEmpty(const PolicyBundle& bundle) { | 72 bool IsEmpty(const PolicyBundle& bundle) { |
73 return bundle.begin() == bundle.end(); | 73 return bundle.begin() == bundle.end(); |
74 } | 74 } |
75 | 75 |
76 } // namespace | 76 } // namespace |
77 | 77 |
78 TEST(PolicyBundleTest, Get) { | 78 TEST(PolicyBundleTest, Get) { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 PolicyBundle empty_bundle; | 186 PolicyBundle empty_bundle; |
187 merged.MergeFrom(empty_bundle); | 187 merged.MergeFrom(empty_bundle); |
188 | 188 |
189 // chrome and kExtension3 policies are merged: | 189 // chrome and kExtension3 policies are merged: |
190 // - kPolicyClashing0 comes from bundle0, which has the highest priority; | 190 // - kPolicyClashing0 comes from bundle0, which has the highest priority; |
191 // - kPolicyClashing1 comes from bundle1, which has the highest level/scope | 191 // - kPolicyClashing1 comes from bundle1, which has the highest level/scope |
192 // combination; | 192 // combination; |
193 // - kPolicyN are merged from each bundle. | 193 // - kPolicyN are merged from each bundle. |
194 PolicyMap expected; | 194 PolicyMap expected; |
195 expected.Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 195 expected.Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
196 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 196 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), |
197 nullptr); | 197 nullptr); |
198 expected.Set(kPolicyClashing1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 198 expected.Set(kPolicyClashing1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
199 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 199 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), |
200 nullptr); | 200 nullptr); |
201 expected.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 201 expected.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
202 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 202 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), |
203 nullptr); | 203 nullptr); |
204 expected.Set(kPolicy1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 204 expected.Set(kPolicy1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
205 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 205 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), |
206 nullptr); | 206 nullptr); |
207 expected.Set(kPolicy2, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 207 expected.Set(kPolicy2, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
208 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(2), | 208 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(2), |
209 nullptr); | 209 nullptr); |
210 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, | 210 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, |
211 std::string())).Equals(expected)); | 211 std::string())).Equals(expected)); |
212 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, | 212 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, |
213 kExtension3)).Equals(expected)); | 213 kExtension3)).Equals(expected)); |
214 // extension0 comes only from bundle0. | 214 // extension0 comes only from bundle0. |
215 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, | 215 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, |
216 kExtension0)).Equals(policy0)); | 216 kExtension0)).Equals(policy0)); |
217 // extension1 comes only from bundle1. | 217 // extension1 comes only from bundle1. |
218 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, | 218 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, |
(...skipping 20 matching lines...) Expand all Loading... |
239 EXPECT_FALSE(bundle.Equals(other)); | 239 EXPECT_FALSE(bundle.Equals(other)); |
240 other.CopyFrom(bundle); | 240 other.CopyFrom(bundle); |
241 EXPECT_TRUE(bundle.Equals(other)); | 241 EXPECT_TRUE(bundle.Equals(other)); |
242 AddTestPolicies(&other.Get( | 242 AddTestPolicies(&other.Get( |
243 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2))); | 243 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2))); |
244 EXPECT_FALSE(bundle.Equals(other)); | 244 EXPECT_FALSE(bundle.Equals(other)); |
245 | 245 |
246 other.CopyFrom(bundle); | 246 other.CopyFrom(bundle); |
247 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 247 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
248 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 248 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
249 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(123), | 249 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(123), |
250 nullptr); | 250 nullptr); |
251 EXPECT_FALSE(bundle.Equals(other)); | 251 EXPECT_FALSE(bundle.Equals(other)); |
252 other.CopyFrom(bundle); | 252 other.CopyFrom(bundle); |
253 EXPECT_TRUE(bundle.Equals(other)); | 253 EXPECT_TRUE(bundle.Equals(other)); |
254 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 254 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
255 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 255 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
256 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(123), | 256 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(123), |
257 nullptr); | 257 nullptr); |
258 EXPECT_FALSE(bundle.Equals(other)); | 258 EXPECT_FALSE(bundle.Equals(other)); |
259 | 259 |
260 // Test non-const Get(). | 260 // Test non-const Get(). |
261 bundle.Clear(); | 261 bundle.Clear(); |
262 other.Clear(); | 262 other.Clear(); |
263 PolicyMap& policy_map = | 263 PolicyMap& policy_map = |
264 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); | 264 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); |
265 EXPECT_TRUE(bundle.Equals(other)); | 265 EXPECT_TRUE(bundle.Equals(other)); |
266 policy_map.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 266 policy_map.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
267 POLICY_SOURCE_CLOUD, | 267 POLICY_SOURCE_CLOUD, |
268 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 268 base::MakeUnique<base::Value>(123), nullptr); |
269 EXPECT_FALSE(bundle.Equals(other)); | 269 EXPECT_FALSE(bundle.Equals(other)); |
270 } | 270 } |
271 | 271 |
272 } // namespace policy | 272 } // namespace policy |
OLD | NEW |