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

Side by Side Diff: chrome/browser/policy/configuration_policy_provider_test.cc

Issue 56623005: Policy providers all get a SchemaRegistry to work with. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@chrome-policy-schema-9-purge-with-callback
Patch Set: Fixed mac tests Created 7 years, 1 month 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 (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/configuration_policy_provider_test.h" 5 #include "chrome/browser/policy/configuration_policy_provider_test.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/message_loop/message_loop_proxy.h" 9 #include "base/message_loop/message_loop_proxy.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/policy/configuration_policy_provider.h" 11 #include "chrome/browser/policy/configuration_policy_provider.h"
12 #include "chrome/browser/policy/external_data_fetcher.h" 12 #include "chrome/browser/policy/external_data_fetcher.h"
13 #include "chrome/browser/policy/mock_configuration_policy_provider.h" 13 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
14 #include "chrome/browser/policy/policy_bundle.h" 14 #include "chrome/browser/policy/policy_bundle.h"
15 #include "chrome/browser/policy/policy_map.h" 15 #include "chrome/browser/policy/policy_map.h"
16 #include "policy/policy_constants.h" 16 #include "policy/policy_constants.h"
17 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
18 18
19 using ::testing::Mock; 19 using ::testing::Mock;
20 using ::testing::_; 20 using ::testing::_;
21 21
22 namespace policy { 22 namespace policy {
23 23
24 const char kTestChromeSchema[] =
25 "{"
26 " \"type\": \"object\","
27 " \"properties\": {"
28 " \"StringPolicy\": { \"type\": \"string\" },"
29 " \"BooleanPolicy\": { \"type\": \"boolean\" },"
30 " \"IntegerPolicy\": { \"type\": \"integer\" },"
31 " \"StringListPolicy\": {"
32 " \"type\": \"array\","
33 " \"items\": { \"type\": \"string\" }"
34 " },"
35 " \"DictionaryPolicy\": {"
36 " \"type\": \"object\","
37 " \"properties\": {"
38 " \"bool\": { \"type\": \"boolean\" },"
39 " \"double\": { \"type\": \"number\" },"
40 " \"int\": { \"type\": \"integer\" },"
41 " \"string\": { \"type\": \"string\" },"
42 " \"array\": {"
43 " \"type\": \"array\","
44 " \"items\": { \"type\": \"string\" }"
45 " },"
46 " \"dictionary\": {"
47 " \"type\": \"object\","
48 " \"properties\": {"
49 " \"sub\": { \"type\": \"string\" },"
50 " \"sublist\": {"
51 " \"type\": \"array\","
52 " \"items\": {"
53 " \"type\": \"object\","
54 " \"properties\": {"
55 " \"aaa\": { \"type\": \"integer\" },"
56 " \"bbb\": { \"type\": \"integer\" },"
57 " \"ccc\": { \"type\": \"string\" },"
58 " \"ddd\": { \"type\": \"string\" }"
59 " }"
60 " }"
61 " }"
62 " }"
63 " },"
64 " \"list\": {"
65 " \"type\": \"array\","
66 " \"items\": {"
67 " \"type\": \"object\","
68 " \"properties\": {"
69 " \"subdictindex\": { \"type\": \"integer\" },"
70 " \"subdict\": {"
71 " \"type\": \"object\","
72 " \"properties\": {"
73 " \"bool\": { \"type\": \"boolean\" },"
74 " \"double\": { \"type\": \"number\" },"
75 " \"int\": { \"type\": \"integer\" },"
76 " \"string\": { \"type\": \"string\" }"
77 " }"
78 " }"
79 " }"
80 " }"
81 " },"
82 " \"dict\": {"
83 " \"type\": \"object\","
84 " \"properties\": {"
85 " \"bool\": { \"type\": \"boolean\" },"
86 " \"double\": { \"type\": \"number\" },"
87 " \"int\": { \"type\": \"integer\" },"
88 " \"string\": { \"type\": \"string\" },"
89 " \"list\": {"
90 " \"type\": \"array\","
91 " \"items\": {"
92 " \"type\": \"object\","
93 " \"properties\": {"
94 " \"subdictindex\": { \"type\": \"integer\" },"
95 " \"subdict\": {"
96 " \"type\": \"object\","
97 " \"properties\": {"
98 " \"bool\": { \"type\": \"boolean\" },"
99 " \"double\": { \"type\": \"number\" },"
100 " \"int\": { \"type\": \"integer\" },"
101 " \"string\": { \"type\": \"string\" }"
102 " }"
103 " }"
104 " }"
105 " }"
106 " }"
107 " }"
108 " }"
109 " }"
110 " }"
111 " }"
112 "}";
113
24 namespace test_policy_definitions { 114 namespace test_policy_definitions {
25 115
26 const char kKeyString[] = "StringPolicy"; 116 const char kKeyString[] = "StringPolicy";
27 const char kKeyBoolean[] = "BooleanPolicy"; 117 const char kKeyBoolean[] = "BooleanPolicy";
28 const char kKeyInteger[] = "IntegerPolicy"; 118 const char kKeyInteger[] = "IntegerPolicy";
29 const char kKeyStringList[] = "StringListPolicy"; 119 const char kKeyStringList[] = "StringListPolicy";
30 const char kKeyDictionary[] = "DictionaryPolicy"; 120 const char kKeyDictionary[] = "DictionaryPolicy";
31 121
32 static const PolicyDefinitionList::Entry kEntries[] = { 122 static const PolicyDefinitionList::Entry kEntries[] = {
33 { kKeyString, base::Value::TYPE_STRING }, 123 { kKeyString, base::Value::TYPE_STRING },
34 { kKeyBoolean, base::Value::TYPE_BOOLEAN }, 124 { kKeyBoolean, base::Value::TYPE_BOOLEAN },
35 { kKeyInteger, base::Value::TYPE_INTEGER }, 125 { kKeyInteger, base::Value::TYPE_INTEGER },
36 { kKeyStringList, base::Value::TYPE_LIST }, 126 { kKeyStringList, base::Value::TYPE_LIST },
37 { kKeyDictionary, base::Value::TYPE_DICTIONARY }, 127 { kKeyDictionary, base::Value::TYPE_DICTIONARY },
38 }; 128 };
39 129
40 const PolicyDefinitionList kList = { 130 const PolicyDefinitionList kList = {
41 kEntries, kEntries + arraysize(kEntries) 131 kEntries, kEntries + arraysize(kEntries)
42 }; 132 };
43 133
44 } // namespace test_policy_definitions 134 } // namespace test_policy_definitions
45 135
46 PolicyTestBase::PolicyTestBase() {} 136 PolicyTestBase::PolicyTestBase() {}
47 137
48 PolicyTestBase::~PolicyTestBase() {} 138 PolicyTestBase::~PolicyTestBase() {}
49 139
140 void PolicyTestBase::SetUp() {
141 std::string error;
142 chrome_schema_ = Schema::Parse(kTestChromeSchema, &error);
143 ASSERT_TRUE(chrome_schema_.valid()) << error;
144 schema_registry_.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_CHROME, ""),
bartfab (slow) 2013/11/05 15:53:04 Nit: #include "components/policy/core/common/polic
Joao da Silva 2013/11/07 13:15:00 Done.
145 chrome_schema_);
146 }
147
50 void PolicyTestBase::TearDown() { 148 void PolicyTestBase::TearDown() {
51 loop_.RunUntilIdle(); 149 loop_.RunUntilIdle();
52 } 150 }
53 151
54 PolicyProviderTestHarness::PolicyProviderTestHarness(PolicyLevel level, 152 PolicyProviderTestHarness::PolicyProviderTestHarness(PolicyLevel level,
55 PolicyScope scope) 153 PolicyScope scope)
56 : level_(level), scope_(scope) {} 154 : level_(level), scope_(scope) {}
57 155
58 PolicyProviderTestHarness::~PolicyProviderTestHarness() {} 156 PolicyProviderTestHarness::~PolicyProviderTestHarness() {}
59 157
(...skipping 13 matching lines...) Expand all
73 ConfigurationPolicyProviderTest::ConfigurationPolicyProviderTest() {} 171 ConfigurationPolicyProviderTest::ConfigurationPolicyProviderTest() {}
74 172
75 ConfigurationPolicyProviderTest::~ConfigurationPolicyProviderTest() {} 173 ConfigurationPolicyProviderTest::~ConfigurationPolicyProviderTest() {}
76 174
77 void ConfigurationPolicyProviderTest::SetUp() { 175 void ConfigurationPolicyProviderTest::SetUp() {
78 PolicyTestBase::SetUp(); 176 PolicyTestBase::SetUp();
79 177
80 test_harness_.reset((*GetParam())()); 178 test_harness_.reset((*GetParam())());
81 test_harness_->SetUp(); 179 test_harness_->SetUp();
82 180
181 Schema extension_schema =
182 chrome_schema_.GetKnownProperty(test_policy_definitions::kKeyDictionary);
183 ASSERT_TRUE(extension_schema.valid());
184 schema_registry_.RegisterComponent(
185 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
186 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
187 extension_schema);
188 schema_registry_.RegisterComponent(
189 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
190 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
191 extension_schema);
192 schema_registry_.RegisterComponent(
193 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
194 "cccccccccccccccccccccccccccccccc"),
195 extension_schema);
196
83 provider_.reset(test_harness_->CreateProvider( 197 provider_.reset(test_harness_->CreateProvider(
84 loop_.message_loop_proxy(), &test_policy_definitions::kList)); 198 &schema_registry_,
85 provider_->Init(); 199 loop_.message_loop_proxy(),
200 &test_policy_definitions::kList));
201 provider_->Init(&schema_registry_);
86 // Some providers do a reload on init. Make sure any notifications generated 202 // Some providers do a reload on init. Make sure any notifications generated
87 // are fired now. 203 // are fired now.
88 loop_.RunUntilIdle(); 204 loop_.RunUntilIdle();
89 205
90 const PolicyBundle kEmptyBundle; 206 const PolicyBundle kEmptyBundle;
91 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); 207 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
92 } 208 }
93 209
94 void ConfigurationPolicyProviderTest::TearDown() { 210 void ConfigurationPolicyProviderTest::TearDown() {
95 // Give providers the chance to clean up after themselves on the file thread. 211 // Give providers the chance to clean up after themselves on the file thread.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 expected_value, 281 expected_value,
166 base::Bind(&PolicyProviderTestHarness::InstallStringListPolicy, 282 base::Bind(&PolicyProviderTestHarness::InstallStringListPolicy,
167 base::Unretained(test_harness_.get()), 283 base::Unretained(test_harness_.get()),
168 test_policy_definitions::kKeyStringList, 284 test_policy_definitions::kKeyStringList,
169 &expected_value)); 285 &expected_value));
170 } 286 }
171 287
172 TEST_P(ConfigurationPolicyProviderTest, DictionaryValue) { 288 TEST_P(ConfigurationPolicyProviderTest, DictionaryValue) {
173 base::DictionaryValue expected_value; 289 base::DictionaryValue expected_value;
174 expected_value.SetBoolean("bool", true); 290 expected_value.SetBoolean("bool", true);
291 expected_value.SetDouble("double", 123.456);
175 expected_value.SetInteger("int", 123); 292 expected_value.SetInteger("int", 123);
176 expected_value.SetString("str", "omg"); 293 expected_value.SetString("string", "omg");
177 294
178 base::ListValue* list = new base::ListValue(); 295 base::ListValue* list = new base::ListValue();
179 list->Set(0U, base::Value::CreateStringValue("first")); 296 list->Set(0U, base::Value::CreateStringValue("first"));
180 list->Set(1U, base::Value::CreateStringValue("second")); 297 list->Set(1U, base::Value::CreateStringValue("second"));
181 expected_value.Set("list", list); 298 expected_value.Set("array", list);
182 299
183 base::DictionaryValue* dict = new base::DictionaryValue(); 300 base::DictionaryValue* dict = new base::DictionaryValue();
184 dict->SetString("sub", "value"); 301 dict->SetString("sub", "value");
185 list = new base::ListValue(); 302 list = new base::ListValue();
186 base::DictionaryValue* sub = new base::DictionaryValue(); 303 base::DictionaryValue* sub = new base::DictionaryValue();
187 sub->SetInteger("aaa", 111); 304 sub->SetInteger("aaa", 111);
188 sub->SetInteger("bbb", 222); 305 sub->SetInteger("bbb", 222);
189 list->Append(sub); 306 list->Append(sub);
190 sub = new base::DictionaryValue(); 307 sub = new base::DictionaryValue();
191 sub->SetString("ccc", "333"); 308 sub->SetString("ccc", "333");
192 sub->SetString("ddd", "444"); 309 sub->SetString("ddd", "444");
193 list->Append(sub); 310 list->Append(sub);
194 dict->Set("sublist", list); 311 dict->Set("sublist", list);
195 expected_value.Set("dict", dict); 312 expected_value.Set("dictionary", dict);
196 313
197 CheckValue(test_policy_definitions::kKeyDictionary, 314 CheckValue(test_policy_definitions::kKeyDictionary,
198 expected_value, 315 expected_value,
199 base::Bind(&PolicyProviderTestHarness::InstallDictionaryPolicy, 316 base::Bind(&PolicyProviderTestHarness::InstallDictionaryPolicy,
200 base::Unretained(test_harness_.get()), 317 base::Unretained(test_harness_.get()),
201 test_policy_definitions::kKeyDictionary, 318 test_policy_definitions::kKeyDictionary,
202 &expected_value)); 319 &expected_value));
203 } 320 }
204 321
205 TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) { 322 TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 Configuration3rdPartyPolicyProviderTest() {} 393 Configuration3rdPartyPolicyProviderTest() {}
277 394
278 Configuration3rdPartyPolicyProviderTest:: 395 Configuration3rdPartyPolicyProviderTest::
279 ~Configuration3rdPartyPolicyProviderTest() {} 396 ~Configuration3rdPartyPolicyProviderTest() {}
280 397
281 TEST_P(Configuration3rdPartyPolicyProviderTest, Load3rdParty) { 398 TEST_P(Configuration3rdPartyPolicyProviderTest, Load3rdParty) {
282 base::DictionaryValue policy_dict; 399 base::DictionaryValue policy_dict;
283 policy_dict.SetBoolean("bool", true); 400 policy_dict.SetBoolean("bool", true);
284 policy_dict.SetDouble("double", 123.456); 401 policy_dict.SetDouble("double", 123.456);
285 policy_dict.SetInteger("int", 789); 402 policy_dict.SetInteger("int", 789);
286 policy_dict.SetString("str", "string value"); 403 policy_dict.SetString("string", "string value");
287 404
288 base::ListValue* list = new base::ListValue(); 405 base::ListValue* list = new base::ListValue();
289 for (int i = 0; i < 2; ++i) { 406 for (int i = 0; i < 2; ++i) {
290 base::DictionaryValue* dict = new base::DictionaryValue(); 407 base::DictionaryValue* dict = new base::DictionaryValue();
291 dict->SetInteger("subdictindex", i); 408 dict->SetInteger("subdictindex", i);
292 dict->Set("subdict", policy_dict.DeepCopy()); 409 dict->Set("subdict", policy_dict.DeepCopy());
293 list->Append(dict); 410 list->Append(dict);
294 } 411 }
295 policy_dict.Set("list", list); 412 policy_dict.Set("list", list);
296 policy_dict.Set("dict", policy_dict.DeepCopy()); 413 policy_dict.Set("dict", policy_dict.DeepCopy());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 447 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
331 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) 448 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
332 .CopyFrom(expected_policy); 449 .CopyFrom(expected_policy);
333 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, 450 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS,
334 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")) 451 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"))
335 .CopyFrom(expected_policy); 452 .CopyFrom(expected_policy);
336 EXPECT_TRUE(provider_->policies().Equals(expected_bundle)); 453 EXPECT_TRUE(provider_->policies().Equals(expected_bundle));
337 } 454 }
338 455
339 } // namespace policy 456 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698