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

Side by Side Diff: components/policy/core/common/policy_bundle_unittest.cc

Issue 1940153002: Use std::unique_ptr to express ownership of base::Value in PolicyMap::Entry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: another-fix Created 4 years, 7 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 unified diff | Download patch
OLDNEW
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 9
9 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/memory/ptr_util.h"
10 #include "base/values.h" 12 #include "base/values.h"
11 #include "components/policy/core/common/external_data_fetcher.h" 13 #include "components/policy/core/common/external_data_fetcher.h"
12 #include "components/policy/core/common/policy_map.h" 14 #include "components/policy/core/common/policy_map.h"
13 #include "components/policy/core/common/policy_types.h" 15 #include "components/policy/core/common/policy_types.h"
14 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
15 17
16 namespace policy { 18 namespace policy {
17 19
18 namespace { 20 namespace {
19 21
20 const char kPolicyClashing0[] = "policy-clashing-0"; 22 const char kPolicyClashing0[] = "policy-clashing-0";
21 const char kPolicyClashing1[] = "policy-clashing-1"; 23 const char kPolicyClashing1[] = "policy-clashing-1";
22 const char kPolicy0[] = "policy-0"; 24 const char kPolicy0[] = "policy-0";
23 const char kPolicy1[] = "policy-1"; 25 const char kPolicy1[] = "policy-1";
24 const char kPolicy2[] = "policy-2"; 26 const char kPolicy2[] = "policy-2";
25 const char kExtension0[] = "extension-0"; 27 const char kExtension0[] = "extension-0";
26 const char kExtension1[] = "extension-1"; 28 const char kExtension1[] = "extension-1";
27 const char kExtension2[] = "extension-2"; 29 const char kExtension2[] = "extension-2";
28 const char kExtension3[] = "extension-3"; 30 const char kExtension3[] = "extension-3";
29 31
30 // Adds test policies to |policy|. 32 // Adds test policies to |policy|.
31 void AddTestPolicies(PolicyMap* policy) { 33 void AddTestPolicies(PolicyMap* policy) {
32 policy->Set("mandatory-user", 34 policy->Set("mandatory-user", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
33 POLICY_LEVEL_MANDATORY,
34 POLICY_SCOPE_USER,
35 POLICY_SOURCE_CLOUD, 35 POLICY_SOURCE_CLOUD,
36 new base::FundamentalValue(123), 36 base::WrapUnique(new base::FundamentalValue(123)), nullptr);
37 NULL); 37 policy->Set("mandatory-machine", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
38 policy->Set("mandatory-machine",
39 POLICY_LEVEL_MANDATORY,
40 POLICY_SCOPE_MACHINE,
41 POLICY_SOURCE_CLOUD, 38 POLICY_SOURCE_CLOUD,
42 new base::StringValue("omg"), 39 base::WrapUnique(new base::StringValue("omg")), nullptr);
43 NULL); 40 policy->Set("recommended-user", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
44 policy->Set("recommended-user",
45 POLICY_LEVEL_RECOMMENDED,
46 POLICY_SCOPE_USER,
47 POLICY_SOURCE_CLOUD, 41 POLICY_SOURCE_CLOUD,
48 new base::FundamentalValue(true), 42 base::WrapUnique(new base::FundamentalValue(true)), nullptr);
49 NULL); 43 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
50 base::DictionaryValue* dict = new base::DictionaryValue();
51 dict->SetBoolean("false", false); 44 dict->SetBoolean("false", false);
52 dict->SetInteger("int", 456); 45 dict->SetInteger("int", 456);
53 dict->SetString("str", "bbq"); 46 dict->SetString("str", "bbq");
54 policy->Set("recommended-machine", POLICY_LEVEL_RECOMMENDED, 47 policy->Set("recommended-machine", POLICY_LEVEL_RECOMMENDED,
55 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, dict, nullptr); 48 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, std::move(dict),
49 nullptr);
56 } 50 }
57 51
58 // Adds test policies to |policy| based on the parameters: 52 // Adds test policies to |policy| based on the parameters:
59 // - kPolicyClashing0 mapped to |value|, user mandatory 53 // - kPolicyClashing0 mapped to |value|, user mandatory
60 // - kPolicyClashing1 mapped to |value|, with |level| and |scope| 54 // - kPolicyClashing1 mapped to |value|, with |level| and |scope|
61 // - |name| mapped to |value|, user mandatory 55 // - |name| mapped to |value|, user mandatory
62 void AddTestPoliciesWithParams(PolicyMap *policy, 56 void AddTestPoliciesWithParams(PolicyMap *policy,
63 const char* name, 57 const char* name,
64 int value, 58 int value,
65 PolicyLevel level, 59 PolicyLevel level,
66 PolicyScope scope) { 60 PolicyScope scope) {
67 policy->Set(kPolicyClashing0, 61 policy->Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
68 POLICY_LEVEL_MANDATORY,
69 POLICY_SCOPE_USER,
70 POLICY_SOURCE_CLOUD, 62 POLICY_SOURCE_CLOUD,
71 new base::FundamentalValue(value), 63 base::WrapUnique(new base::FundamentalValue(value)), nullptr);
72 NULL);
73 policy->Set(kPolicyClashing1, level, scope, POLICY_SOURCE_CLOUD, 64 policy->Set(kPolicyClashing1, level, scope, POLICY_SOURCE_CLOUD,
74 new base::FundamentalValue(value), nullptr); 65 base::WrapUnique(new base::FundamentalValue(value)), nullptr);
75 policy->Set(name, 66 policy->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
76 POLICY_LEVEL_MANDATORY,
77 POLICY_SCOPE_USER,
78 POLICY_SOURCE_CLOUD, 67 POLICY_SOURCE_CLOUD,
79 new base::FundamentalValue(value), 68 base::WrapUnique(new base::FundamentalValue(value)), nullptr);
80 NULL);
81 } 69 }
82 70
83 // Returns true if |bundle| is empty. 71 // Returns true if |bundle| is empty.
84 bool IsEmpty(const PolicyBundle& bundle) { 72 bool IsEmpty(const PolicyBundle& bundle) {
85 return bundle.begin() == bundle.end(); 73 return bundle.begin() == bundle.end();
86 } 74 }
87 75
88 } // namespace 76 } // namespace
89 77
90 TEST(PolicyBundleTest, Get) { 78 TEST(PolicyBundleTest, Get) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 merged.MergeFrom(bundle2); 185 merged.MergeFrom(bundle2);
198 PolicyBundle empty_bundle; 186 PolicyBundle empty_bundle;
199 merged.MergeFrom(empty_bundle); 187 merged.MergeFrom(empty_bundle);
200 188
201 // chrome and kExtension3 policies are merged: 189 // chrome and kExtension3 policies are merged:
202 // - kPolicyClashing0 comes from bundle0, which has the highest priority; 190 // - kPolicyClashing0 comes from bundle0, which has the highest priority;
203 // - kPolicyClashing1 comes from bundle1, which has the highest level/scope 191 // - kPolicyClashing1 comes from bundle1, which has the highest level/scope
204 // combination; 192 // combination;
205 // - kPolicyN are merged from each bundle. 193 // - kPolicyN are merged from each bundle.
206 PolicyMap expected; 194 PolicyMap expected;
207 expected.Set(kPolicyClashing0, 195 expected.Set(kPolicyClashing0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
208 POLICY_LEVEL_MANDATORY,
209 POLICY_SCOPE_USER,
210 POLICY_SOURCE_CLOUD, 196 POLICY_SOURCE_CLOUD,
211 new base::FundamentalValue(0), 197 base::WrapUnique(new base::FundamentalValue(0)), nullptr);
212 NULL); 198 expected.Set(kPolicyClashing1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
213 expected.Set(kPolicyClashing1,
214 POLICY_LEVEL_MANDATORY,
215 POLICY_SCOPE_MACHINE,
216 POLICY_SOURCE_CLOUD, 199 POLICY_SOURCE_CLOUD,
217 new base::FundamentalValue(1), 200 base::WrapUnique(new base::FundamentalValue(1)), nullptr);
218 NULL); 201 expected.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
219 expected.Set(kPolicy0,
220 POLICY_LEVEL_MANDATORY,
221 POLICY_SCOPE_USER,
222 POLICY_SOURCE_CLOUD, 202 POLICY_SOURCE_CLOUD,
223 new base::FundamentalValue(0), 203 base::WrapUnique(new base::FundamentalValue(0)), nullptr);
224 NULL); 204 expected.Set(kPolicy1, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
225 expected.Set(kPolicy1,
226 POLICY_LEVEL_MANDATORY,
227 POLICY_SCOPE_USER,
228 POLICY_SOURCE_CLOUD, 205 POLICY_SOURCE_CLOUD,
229 new base::FundamentalValue(1), 206 base::WrapUnique(new base::FundamentalValue(1)), nullptr);
230 NULL); 207 expected.Set(kPolicy2, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
231 expected.Set(kPolicy2,
232 POLICY_LEVEL_MANDATORY,
233 POLICY_SCOPE_USER,
234 POLICY_SOURCE_CLOUD, 208 POLICY_SOURCE_CLOUD,
235 new base::FundamentalValue(2), 209 base::WrapUnique(new base::FundamentalValue(2)), nullptr);
236 NULL);
237 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, 210 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_CHROME,
238 std::string())).Equals(expected)); 211 std::string())).Equals(expected));
239 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 212 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
240 kExtension3)).Equals(expected)); 213 kExtension3)).Equals(expected));
241 // extension0 comes only from bundle0. 214 // extension0 comes only from bundle0.
242 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 215 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
243 kExtension0)).Equals(policy0)); 216 kExtension0)).Equals(policy0));
244 // extension1 comes only from bundle1. 217 // extension1 comes only from bundle1.
245 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 218 EXPECT_TRUE(merged.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
246 kExtension1)).Equals(policy1)); 219 kExtension1)).Equals(policy1));
(...skipping 18 matching lines...) Expand all
265 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1))); 238 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1)));
266 EXPECT_FALSE(bundle.Equals(other)); 239 EXPECT_FALSE(bundle.Equals(other));
267 other.CopyFrom(bundle); 240 other.CopyFrom(bundle);
268 EXPECT_TRUE(bundle.Equals(other)); 241 EXPECT_TRUE(bundle.Equals(other));
269 AddTestPolicies(&other.Get( 242 AddTestPolicies(&other.Get(
270 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2))); 243 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2)));
271 EXPECT_FALSE(bundle.Equals(other)); 244 EXPECT_FALSE(bundle.Equals(other));
272 245
273 other.CopyFrom(bundle); 246 other.CopyFrom(bundle);
274 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 247 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
275 .Set(kPolicy0, 248 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
276 POLICY_LEVEL_MANDATORY,
277 POLICY_SCOPE_USER,
278 POLICY_SOURCE_CLOUD, 249 POLICY_SOURCE_CLOUD,
279 new base::FundamentalValue(123), 250 base::WrapUnique(new base::FundamentalValue(123)), nullptr);
280 NULL);
281 EXPECT_FALSE(bundle.Equals(other)); 251 EXPECT_FALSE(bundle.Equals(other));
282 other.CopyFrom(bundle); 252 other.CopyFrom(bundle);
283 EXPECT_TRUE(bundle.Equals(other)); 253 EXPECT_TRUE(bundle.Equals(other));
284 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 254 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
285 .Set(kPolicy0, 255 .Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
286 POLICY_LEVEL_MANDATORY,
287 POLICY_SCOPE_MACHINE,
288 POLICY_SOURCE_CLOUD, 256 POLICY_SOURCE_CLOUD,
289 new base::FundamentalValue(123), 257 base::WrapUnique(new base::FundamentalValue(123)), nullptr);
290 NULL);
291 EXPECT_FALSE(bundle.Equals(other)); 258 EXPECT_FALSE(bundle.Equals(other));
292 259
293 // Test non-const Get(). 260 // Test non-const Get().
294 bundle.Clear(); 261 bundle.Clear();
295 other.Clear(); 262 other.Clear();
296 PolicyMap& policy_map = 263 PolicyMap& policy_map =
297 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); 264 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()));
298 EXPECT_TRUE(bundle.Equals(other)); 265 EXPECT_TRUE(bundle.Equals(other));
299 policy_map.Set(kPolicy0, 266 policy_map.Set(kPolicy0, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
300 POLICY_LEVEL_MANDATORY,
301 POLICY_SCOPE_USER,
302 POLICY_SOURCE_CLOUD, 267 POLICY_SOURCE_CLOUD,
303 new base::FundamentalValue(123), 268 base::WrapUnique(new base::FundamentalValue(123)), nullptr);
304 NULL);
305 EXPECT_FALSE(bundle.Equals(other)); 269 EXPECT_FALSE(bundle.Equals(other));
306 } 270 }
307 271
308 } // namespace policy 272 } // namespace policy
OLDNEW
« no previous file with comments | « components/policy/core/common/generate_policy_source_unittest.cc ('k') | components/policy/core/common/policy_loader_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698