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

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

Issue 1824743002: Drop non-user policy in ConfigDirPolicyLoader on Chrome OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 5 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/configuration_policy_provider_test.h" 5 #include "components/policy/core/common/configuration_policy_provider_test.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "components/policy/core/common/configuration_policy_provider.h" 14 #include "components/policy/core/common/configuration_policy_provider.h"
15 #include "components/policy/core/common/external_data_fetcher.h" 15 #include "components/policy/core/common/external_data_fetcher.h"
16 #include "components/policy/core/common/mock_configuration_policy_provider.h" 16 #include "components/policy/core/common/mock_configuration_policy_provider.h"
17 #include "components/policy/core/common/policy_bundle.h" 17 #include "components/policy/core/common/policy_bundle.h"
18 #include "components/policy/core/common/policy_map.h" 18 #include "components/policy/core/common/policy_map.h"
19 #include "components/policy/core/common/policy_namespace.h" 19 #include "components/policy/core/common/policy_namespace.h"
20 #include "components/policy/core/common/policy_test_utils.h"
20 #include "components/policy/core/common/policy_types.h" 21 #include "components/policy/core/common/policy_types.h"
21 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
22 23
23 using ::testing::Mock; 24 using ::testing::Mock;
24 using ::testing::_; 25 using ::testing::_;
25 26
26 namespace policy { 27 namespace {
27 28
28 const char kTestChromeSchema[] = 29 const char kTestChromeSchema[] =
29 "{" 30 "{"
30 " \"type\": \"object\"," 31 " \"type\": \"object\","
31 " \"properties\": {" 32 " \"properties\": {"
32 " \"StringPolicy\": { \"type\": \"string\" }," 33 " \"StringPolicy\": { \"type\": \"string\" },"
33 " \"BooleanPolicy\": { \"type\": \"boolean\" }," 34 " \"BooleanPolicy\": { \"type\": \"boolean\" },"
34 " \"IntegerPolicy\": { \"type\": \"integer\" }," 35 " \"IntegerPolicy\": { \"type\": \"integer\" },"
35 " \"StringListPolicy\": {" 36 " \"StringListPolicy\": {"
36 " \"type\": \"array\"," 37 " \"type\": \"array\","
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 " }" 109 " }"
109 " }" 110 " }"
110 " }" 111 " }"
111 " }" 112 " }"
112 " }" 113 " }"
113 " }" 114 " }"
114 " }" 115 " }"
115 " }" 116 " }"
116 "}"; 117 "}";
117 118
119 } // anonymous namespace
120
121 namespace policy {
122
118 namespace test_keys { 123 namespace test_keys {
119 124
125 // These are the defaults for PolicyProviderTestHarness but they are generally
126 // available for use in other tests. Subclasses of PolicyProviderTestHarness
127 // may use different values.
120 const char kKeyString[] = "StringPolicy"; 128 const char kKeyString[] = "StringPolicy";
121 const char kKeyBoolean[] = "BooleanPolicy"; 129 const char kKeyBoolean[] = "BooleanPolicy";
122 const char kKeyInteger[] = "IntegerPolicy"; 130 const char kKeyInteger[] = "IntegerPolicy";
123 const char kKeyStringList[] = "StringListPolicy"; 131 const char kKeyStringList[] = "StringListPolicy";
124 const char kKeyDictionary[] = "DictionaryPolicy"; 132 const char kKeyDictionary[] = "DictionaryPolicy";
125 133
126 } // namespace test_keys 134 } // namespace test_keys
127 135
128 PolicyTestBase::PolicyTestBase() {} 136 PolicyTestBase::PolicyTestBase() {}
129 137
(...skipping 16 matching lines...) Expand all
146 schema_registry_.RegisterComponent(ns, schema); 154 schema_registry_.RegisterComponent(ns, schema);
147 return true; 155 return true;
148 } 156 }
149 ADD_FAILURE() << error; 157 ADD_FAILURE() << error;
150 return false; 158 return false;
151 } 159 }
152 160
153 PolicyProviderTestHarness::PolicyProviderTestHarness(PolicyLevel level, 161 PolicyProviderTestHarness::PolicyProviderTestHarness(PolicyLevel level,
154 PolicyScope scope, 162 PolicyScope scope,
155 PolicySource source) 163 PolicySource source)
156 : level_(level), scope_(scope), source_(source) {} 164 : key_string_(test_keys::kKeyString),
165 key_boolean_(test_keys::kKeyBoolean),
166 key_integer_(test_keys::kKeyInteger),
167 key_stringlist_(test_keys::kKeyStringList),
168 key_dictionary_(test_keys::kKeyDictionary),
169 test_schema_(kTestChromeSchema),
170 level_(level),
171 scope_(scope),
172 source_(source) {
173 }
157 174
158 PolicyProviderTestHarness::~PolicyProviderTestHarness() {} 175 PolicyProviderTestHarness::~PolicyProviderTestHarness() {}
159 176
160 PolicyLevel PolicyProviderTestHarness::policy_level() const {
161 return level_;
162 }
163
164 PolicyScope PolicyProviderTestHarness::policy_scope() const {
165 return scope_;
166 }
167
168 PolicySource PolicyProviderTestHarness::policy_source() const {
169 return source_;
170 }
171
172 void PolicyProviderTestHarness::Install3rdPartyPolicy( 177 void PolicyProviderTestHarness::Install3rdPartyPolicy(
173 const base::DictionaryValue* policies) { 178 const base::DictionaryValue* policies) {
174 FAIL(); 179 FAIL();
175 } 180 }
176 181
177 ConfigurationPolicyProviderTest::ConfigurationPolicyProviderTest() {} 182 ConfigurationPolicyProviderTest::ConfigurationPolicyProviderTest() {}
178 183
179 ConfigurationPolicyProviderTest::~ConfigurationPolicyProviderTest() {} 184 ConfigurationPolicyProviderTest::~ConfigurationPolicyProviderTest() {}
180 185
181 void ConfigurationPolicyProviderTest::SetUp() { 186 void ConfigurationPolicyProviderTest::SetUp() {
182 PolicyTestBase::SetUp(); 187 harness_.reset((*GetParam())());
183 188 harness_->SetUp();
184 test_harness_.reset((*GetParam())());
185 test_harness_->SetUp();
186 189
187 const PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); 190 const PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
191 ASSERT_TRUE(RegisterSchema(chrome_ns, harness_->test_schema()));
192
188 Schema chrome_schema = *schema_registry_.schema_map()->GetSchema(chrome_ns); 193 Schema chrome_schema = *schema_registry_.schema_map()->GetSchema(chrome_ns);
189 Schema extension_schema = 194 Schema extension_schema =
190 chrome_schema.GetKnownProperty(test_keys::kKeyDictionary); 195 chrome_schema.GetKnownProperty(harness_->key_dictionary());
191 ASSERT_TRUE(extension_schema.valid()); 196 ASSERT_TRUE(extension_schema.valid());
192 schema_registry_.RegisterComponent( 197 schema_registry_.RegisterComponent(
193 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 198 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
194 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 199 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
195 extension_schema); 200 extension_schema);
196 schema_registry_.RegisterComponent( 201 schema_registry_.RegisterComponent(
197 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 202 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
198 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 203 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
199 extension_schema); 204 extension_schema);
200 schema_registry_.RegisterComponent( 205 schema_registry_.RegisterComponent(
201 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 206 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
202 "cccccccccccccccccccccccccccccccc"), 207 "cccccccccccccccccccccccccccccccc"),
203 extension_schema); 208 extension_schema);
204 209
205 provider_.reset( 210 provider_.reset(
206 test_harness_->CreateProvider(&schema_registry_, loop_.task_runner())); 211 harness_->CreateProvider(&schema_registry_, loop_.task_runner()));
207 provider_->Init(&schema_registry_); 212 provider_->Init(&schema_registry_);
208 // Some providers do a reload on init. Make sure any notifications generated 213 // Some providers do a reload on init. Make sure any notifications generated
209 // are fired now. 214 // are fired now.
210 loop_.RunUntilIdle(); 215 loop_.RunUntilIdle();
211 216
212 const PolicyBundle kEmptyBundle; 217 const PolicyBundle kEmptyBundle;
213 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); 218 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
214 } 219 }
215 220
216 void ConfigurationPolicyProviderTest::TearDown() { 221 void ConfigurationPolicyProviderTest::TearDown() {
217 // Give providers the chance to clean up after themselves on the file thread. 222 // Give providers the chance to clean up after themselves on the file thread.
218 provider_->Shutdown(); 223 if (provider_) {
219 provider_.reset(); 224 provider_->Shutdown();
225 provider_.reset();
226 }
220 227
221 PolicyTestBase::TearDown(); 228 PolicyTestBase::TearDown();
222 } 229 }
223 230
224 void ConfigurationPolicyProviderTest::CheckValue( 231 void ConfigurationPolicyProviderTest::CheckValue(
225 const char* policy_name, 232 const char* policy_name,
226 const base::Value& expected_value, 233 const base::Value& expected_value,
227 base::Closure install_value) { 234 base::Closure install_value) {
228 // Install the value, reload policy and check the provider for the value. 235 // Install the value, reload policy and check the provider for the value.
229 install_value.Run(); 236 install_value.Run();
230 provider_->RefreshPolicies(); 237 provider_->RefreshPolicies();
231 loop_.RunUntilIdle(); 238 loop_.RunUntilIdle();
232 PolicyBundle expected_bundle; 239 PolicyBundle expected_bundle;
233 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 240 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
234 .Set(policy_name, test_harness_->policy_level(), 241 .Set(policy_name, harness_->policy_level(), harness_->policy_scope(),
235 test_harness_->policy_scope(), test_harness_->policy_source(), 242 harness_->policy_source(), expected_value.CreateDeepCopy(), nullptr);
236 expected_value.CreateDeepCopy(), nullptr); 243 bool match = provider_->policies().Equals(expected_bundle);
237 EXPECT_TRUE(provider_->policies().Equals(expected_bundle)); 244 if (!match) {
245 LOG(ERROR) << "EXPECTED: " << expected_bundle;
246 LOG(ERROR) << "ACTUAL: " << provider_->policies();
247 }
248 EXPECT_TRUE(match);
238 // TODO(joaodasilva): set the policy in the POLICY_DOMAIN_EXTENSIONS too, 249 // TODO(joaodasilva): set the policy in the POLICY_DOMAIN_EXTENSIONS too,
239 // and extend the |expected_bundle|, once all providers are ready. 250 // and extend the |expected_bundle|, once all providers are ready.
240 } 251 }
241 252
242 TEST_P(ConfigurationPolicyProviderTest, Empty) { 253 TEST_P(ConfigurationPolicyProviderTest, Empty) {
243 provider_->RefreshPolicies(); 254 provider_->RefreshPolicies();
244 loop_.RunUntilIdle(); 255 loop_.RunUntilIdle();
245 const PolicyBundle kEmptyBundle; 256 const PolicyBundle kEmptyBundle;
246 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); 257 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
247 } 258 }
248 259
249 TEST_P(ConfigurationPolicyProviderTest, StringValue) { 260 TEST_P(ConfigurationPolicyProviderTest, StringValue) {
250 const char kTestString[] = "string_value"; 261 const char kTestString[] = "string_value";
251 base::StringValue expected_value(kTestString); 262 base::StringValue expected_value(kTestString);
252 CheckValue(test_keys::kKeyString, 263 CheckValue(harness_->key_string(),
253 expected_value, 264 expected_value,
254 base::Bind(&PolicyProviderTestHarness::InstallStringPolicy, 265 base::Bind(&PolicyProviderTestHarness::InstallStringPolicy,
255 base::Unretained(test_harness_.get()), 266 base::Unretained(harness_.get()),
256 test_keys::kKeyString, 267 harness_->key_string(),
257 kTestString)); 268 kTestString));
258 } 269 }
259 270
260 TEST_P(ConfigurationPolicyProviderTest, BooleanValue) { 271 TEST_P(ConfigurationPolicyProviderTest, BooleanValue) {
261 base::FundamentalValue expected_value(true); 272 base::FundamentalValue expected_value(true);
262 CheckValue(test_keys::kKeyBoolean, 273 CheckValue(harness_->key_boolean(),
263 expected_value, 274 expected_value,
264 base::Bind(&PolicyProviderTestHarness::InstallBooleanPolicy, 275 base::Bind(&PolicyProviderTestHarness::InstallBooleanPolicy,
265 base::Unretained(test_harness_.get()), 276 base::Unretained(harness_.get()),
266 test_keys::kKeyBoolean, 277 harness_->key_boolean(),
267 true)); 278 true));
268 } 279 }
269 280
270 TEST_P(ConfigurationPolicyProviderTest, IntegerValue) { 281 TEST_P(ConfigurationPolicyProviderTest, IntegerValue) {
271 base::FundamentalValue expected_value(42); 282 base::FundamentalValue expected_value(42);
272 CheckValue(test_keys::kKeyInteger, 283 CheckValue(harness_->key_integer(),
273 expected_value, 284 expected_value,
274 base::Bind(&PolicyProviderTestHarness::InstallIntegerPolicy, 285 base::Bind(&PolicyProviderTestHarness::InstallIntegerPolicy,
275 base::Unretained(test_harness_.get()), 286 base::Unretained(harness_.get()),
276 test_keys::kKeyInteger, 287 harness_->key_integer(),
277 42)); 288 42));
278 } 289 }
279 290
280 TEST_P(ConfigurationPolicyProviderTest, StringListValue) { 291 TEST_P(ConfigurationPolicyProviderTest, StringListValue) {
281 base::ListValue expected_value; 292 base::ListValue expected_value;
282 expected_value.Set(0U, new base::StringValue("first")); 293 expected_value.Set(0U, new base::StringValue("first"));
283 expected_value.Set(1U, new base::StringValue("second")); 294 expected_value.Set(1U, new base::StringValue("second"));
284 CheckValue(test_keys::kKeyStringList, 295 CheckValue(harness_->key_stringlist(),
285 expected_value, 296 expected_value,
286 base::Bind(&PolicyProviderTestHarness::InstallStringListPolicy, 297 base::Bind(&PolicyProviderTestHarness::InstallStringListPolicy,
287 base::Unretained(test_harness_.get()), 298 base::Unretained(harness_.get()),
288 test_keys::kKeyStringList, 299 harness_->key_stringlist(),
289 &expected_value)); 300 &expected_value));
290 } 301 }
291 302
292 TEST_P(ConfigurationPolicyProviderTest, DictionaryValue) { 303 TEST_P(ConfigurationPolicyProviderTest, DictionaryValue) {
293 base::DictionaryValue expected_value; 304 base::DictionaryValue expected_value;
294 expected_value.SetBoolean("bool", true); 305 expected_value.SetBoolean("bool", true);
295 expected_value.SetDouble("double", 123.456); 306 expected_value.SetDouble("double", 123.456);
296 expected_value.SetInteger("int", 123); 307 expected_value.SetInteger("int", 123);
297 expected_value.SetString("string", "omg"); 308 expected_value.SetString("string", "omg");
298 309
299 base::ListValue* list = new base::ListValue(); 310 base::ListValue* list = new base::ListValue();
300 list->Set(0U, new base::StringValue("first")); 311 list->Set(0U, new base::StringValue("first"));
301 list->Set(1U, new base::StringValue("second")); 312 list->Set(1U, new base::StringValue("second"));
302 expected_value.Set("array", list); 313 expected_value.Set("array", list);
303 314
304 base::DictionaryValue* dict = new base::DictionaryValue(); 315 base::DictionaryValue* dict = new base::DictionaryValue();
305 dict->SetString("sub", "value"); 316 dict->SetString("sub", "value");
306 list = new base::ListValue(); 317 list = new base::ListValue();
307 std::unique_ptr<base::DictionaryValue> sub(new base::DictionaryValue()); 318 std::unique_ptr<base::DictionaryValue> sub(new base::DictionaryValue());
308 sub->SetInteger("aaa", 111); 319 sub->SetInteger("aaa", 111);
309 sub->SetInteger("bbb", 222); 320 sub->SetInteger("bbb", 222);
310 list->Append(std::move(sub)); 321 list->Append(std::move(sub));
311 sub.reset(new base::DictionaryValue()); 322 sub.reset(new base::DictionaryValue());
312 sub->SetString("ccc", "333"); 323 sub->SetString("ccc", "333");
313 sub->SetString("ddd", "444"); 324 sub->SetString("ddd", "444");
314 list->Append(std::move(sub)); 325 list->Append(std::move(sub));
315 dict->Set("sublist", list); 326 dict->Set("sublist", list);
316 expected_value.Set("dictionary", dict); 327 expected_value.Set("dictionary", dict);
317 328
318 CheckValue(test_keys::kKeyDictionary, 329 CheckValue(harness_->key_dictionary(),
319 expected_value, 330 expected_value,
320 base::Bind(&PolicyProviderTestHarness::InstallDictionaryPolicy, 331 base::Bind(&PolicyProviderTestHarness::InstallDictionaryPolicy,
321 base::Unretained(test_harness_.get()), 332 base::Unretained(harness_.get()),
322 test_keys::kKeyDictionary, 333 harness_->key_dictionary(),
323 &expected_value)); 334 &expected_value));
324 } 335 }
325 336
326 TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) { 337 TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) {
327 PolicyBundle bundle; 338 PolicyBundle bundle;
328 EXPECT_TRUE(provider_->policies().Equals(bundle)); 339 EXPECT_TRUE(provider_->policies().Equals(bundle));
329 340
330 // OnUpdatePolicy is called even when there are no changes. 341 // OnUpdatePolicy is called even when there are no changes.
331 MockConfigurationPolicyObserver observer; 342 MockConfigurationPolicyObserver observer;
332 provider_->AddObserver(&observer); 343 provider_->AddObserver(&observer);
333 EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); 344 EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
334 provider_->RefreshPolicies(); 345 provider_->RefreshPolicies();
335 loop_.RunUntilIdle(); 346 loop_.RunUntilIdle();
336 Mock::VerifyAndClearExpectations(&observer); 347 Mock::VerifyAndClearExpectations(&observer);
337 348
338 EXPECT_TRUE(provider_->policies().Equals(bundle)); 349 EXPECT_TRUE(provider_->policies().Equals(bundle));
339 350
340 // OnUpdatePolicy is called when there are changes. 351 // OnUpdatePolicy is called when there are changes.
341 test_harness_->InstallStringPolicy(test_keys::kKeyString, "value"); 352 harness_->InstallStringPolicy(harness_->key_string(), "value");
342 EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); 353 EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
343 provider_->RefreshPolicies(); 354 provider_->RefreshPolicies();
344 loop_.RunUntilIdle(); 355 loop_.RunUntilIdle();
345 Mock::VerifyAndClearExpectations(&observer); 356 Mock::VerifyAndClearExpectations(&observer);
346 357
347 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 358 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
348 .Set(test_keys::kKeyString, test_harness_->policy_level(), 359 .Set(harness_->key_string(), harness_->policy_level(),
349 test_harness_->policy_scope(), test_harness_->policy_source(), 360 harness_->policy_scope(), harness_->policy_source(),
350 base::WrapUnique(new base::StringValue("value")), nullptr); 361 base::WrapUnique(new base::StringValue("value")), nullptr);
351 EXPECT_TRUE(provider_->policies().Equals(bundle)); 362 EXPECT_TRUE(provider_->policies().Equals(bundle));
352 provider_->RemoveObserver(&observer); 363 provider_->RemoveObserver(&observer);
353 } 364 }
354 365
355 Configuration3rdPartyPolicyProviderTest:: 366 Configuration3rdPartyPolicyProviderTest::
356 Configuration3rdPartyPolicyProviderTest() {} 367 Configuration3rdPartyPolicyProviderTest() {}
357 368
358 Configuration3rdPartyPolicyProviderTest:: 369 Configuration3rdPartyPolicyProviderTest::
359 ~Configuration3rdPartyPolicyProviderTest() {} 370 ~Configuration3rdPartyPolicyProviderTest() {}
360 371
361 TEST_P(Configuration3rdPartyPolicyProviderTest, Load3rdParty) { 372 TEST_P(Configuration3rdPartyPolicyProviderTest, Load3rdParty) {
362 base::DictionaryValue policy_dict; 373 base::DictionaryValue policy_dict;
363 policy_dict.SetBoolean("bool", true); 374 policy_dict.SetBoolean("bool", true);
364 policy_dict.SetDouble("double", 123.456); 375 policy_dict.SetDouble("double", 123.456);
365 policy_dict.SetInteger("int", 789); 376 policy_dict.SetInteger("int", 789);
366 policy_dict.SetString("string", "string value"); 377 policy_dict.SetString("string", "string value");
367 378
368 base::ListValue* list = new base::ListValue(); 379 base::ListValue* list = new base::ListValue();
369 for (int i = 0; i < 2; ++i) { 380 for (int i = 0; i < 2; ++i) {
370 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 381 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
371 dict->SetInteger("subdictindex", i); 382 dict->SetInteger("subdictindex", i);
372 dict->Set("subdict", policy_dict.DeepCopy()); 383 dict->Set("subdict", policy_dict.DeepCopy());
373 list->Append(std::move(dict)); 384 list->Append(std::move(dict));
374 } 385 }
375 policy_dict.Set("list", list); 386 policy_dict.Set("list", list);
376 policy_dict.Set("dict", policy_dict.DeepCopy()); 387 policy_dict.Set("dict", policy_dict.DeepCopy());
377 388
378 // Install these policies as a Chrome policy. 389 // Install these policies as a Chrome policy.
379 test_harness_->InstallDictionaryPolicy(test_keys::kKeyDictionary, 390 harness_->InstallDictionaryPolicy(harness_->key_dictionary(), &policy_dict);
380 &policy_dict);
381 // Install them as 3rd party policies too. 391 // Install them as 3rd party policies too.
382 base::DictionaryValue policy_3rdparty; 392 base::DictionaryValue policy_3rdparty;
383 policy_3rdparty.Set("extensions.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 393 policy_3rdparty.Set("extensions.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
384 policy_dict.DeepCopy()); 394 policy_dict.DeepCopy());
385 policy_3rdparty.Set("extensions.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 395 policy_3rdparty.Set("extensions.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
386 policy_dict.DeepCopy()); 396 policy_dict.DeepCopy());
387 // Install invalid 3rd party policies that shouldn't be loaded. These also 397 // Install invalid 3rd party policies that shouldn't be loaded. These also
388 // help detecting memory leaks in the code paths that detect invalid input. 398 // help detecting memory leaks in the code paths that detect invalid input.
389 policy_3rdparty.Set("invalid-domain.component", policy_dict.DeepCopy()); 399 policy_3rdparty.Set("invalid-domain.component", policy_dict.DeepCopy());
390 policy_3rdparty.Set("extensions.cccccccccccccccccccccccccccccccc", 400 policy_3rdparty.Set("extensions.cccccccccccccccccccccccccccccccc",
391 new base::StringValue("invalid-value")); 401 new base::StringValue("invalid-value"));
392 test_harness_->Install3rdPartyPolicy(&policy_3rdparty); 402 harness_->Install3rdPartyPolicy(&policy_3rdparty);
393 403
394 provider_->RefreshPolicies(); 404 provider_->RefreshPolicies();
395 loop_.RunUntilIdle(); 405 loop_.RunUntilIdle();
396 406
397 PolicyMap expected_policy; 407 PolicyMap expected_policy;
398 expected_policy.Set(test_keys::kKeyDictionary, test_harness_->policy_level(), 408 expected_policy.Set(harness_->key_dictionary(), harness_->policy_level(),
399 test_harness_->policy_scope(), 409 harness_->policy_scope(), harness_->policy_source(),
400 test_harness_->policy_source(),
401 policy_dict.CreateDeepCopy(), nullptr); 410 policy_dict.CreateDeepCopy(), nullptr);
402 PolicyBundle expected_bundle; 411 PolicyBundle expected_bundle;
403 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 412 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
404 .CopyFrom(expected_policy); 413 .CopyFrom(expected_policy);
405 expected_policy.Clear(); 414 expected_policy.Clear();
406 expected_policy.LoadFrom(&policy_dict, 415 expected_policy.LoadFrom(&policy_dict,
407 test_harness_->policy_level(), 416 harness_->policy_level(),
408 test_harness_->policy_scope(), 417 harness_->policy_scope(),
409 test_harness_->policy_source()); 418 harness_->policy_source());
410 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 419 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
411 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) 420 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
412 .CopyFrom(expected_policy); 421 .CopyFrom(expected_policy);
413 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 422 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
414 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")) 423 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"))
415 .CopyFrom(expected_policy); 424 .CopyFrom(expected_policy);
416 EXPECT_TRUE(provider_->policies().Equals(expected_bundle)); 425 EXPECT_TRUE(provider_->policies().Equals(expected_bundle));
417 } 426 }
418 427
419 } // namespace policy 428 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698