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/schema_map.h" | 5 #include "components/policy/core/common/schema_map.h" |
6 | 6 |
7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "components/policy/core/common/external_data_fetcher.h" | 9 #include "components/policy/core/common/external_data_fetcher.h" |
10 #include "components/policy/core/common/external_data_manager.h" | 10 #include "components/policy/core/common/external_data_manager.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 schema_map->FilterBundle(&bundle); | 134 schema_map->FilterBundle(&bundle); |
135 const PolicyBundle empty_bundle; | 135 const PolicyBundle empty_bundle; |
136 EXPECT_TRUE(bundle.Equals(empty_bundle)); | 136 EXPECT_TRUE(bundle.Equals(empty_bundle)); |
137 | 137 |
138 // The Chrome namespace isn't filtered. | 138 // The Chrome namespace isn't filtered. |
139 PolicyBundle expected_bundle; | 139 PolicyBundle expected_bundle; |
140 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); | 140 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); |
141 expected_bundle.Get(chrome_ns).Set("ChromePolicy", | 141 expected_bundle.Get(chrome_ns).Set("ChromePolicy", |
142 POLICY_LEVEL_MANDATORY, | 142 POLICY_LEVEL_MANDATORY, |
143 POLICY_SCOPE_USER, | 143 POLICY_SCOPE_USER, |
144 base::Value::CreateStringValue("value"), | 144 new base::StringValue("value"), |
145 NULL); | 145 NULL); |
146 bundle.CopyFrom(expected_bundle); | 146 bundle.CopyFrom(expected_bundle); |
147 | 147 |
148 // Unknown components are filtered out. | 148 // Unknown components are filtered out. |
149 PolicyNamespace another_extension_ns(POLICY_DOMAIN_EXTENSIONS, "xyz"); | 149 PolicyNamespace another_extension_ns(POLICY_DOMAIN_EXTENSIONS, "xyz"); |
150 bundle.Get(another_extension_ns).Set( | 150 bundle.Get(another_extension_ns).Set("AnotherExtensionPolicy", |
151 "AnotherExtensionPolicy", | 151 POLICY_LEVEL_MANDATORY, |
152 POLICY_LEVEL_MANDATORY, | 152 POLICY_SCOPE_USER, |
153 POLICY_SCOPE_USER, | 153 new base::StringValue("value"), |
154 base::Value::CreateStringValue("value"), | 154 NULL); |
155 NULL); | |
156 schema_map->FilterBundle(&bundle); | 155 schema_map->FilterBundle(&bundle); |
157 EXPECT_TRUE(bundle.Equals(expected_bundle)); | 156 EXPECT_TRUE(bundle.Equals(expected_bundle)); |
158 | 157 |
159 PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "abc"); | 158 PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "abc"); |
160 PolicyMap& map = expected_bundle.Get(extension_ns); | 159 PolicyMap& map = expected_bundle.Get(extension_ns); |
161 base::ListValue list; | 160 base::ListValue list; |
162 list.AppendString("a"); | 161 list.AppendString("a"); |
163 list.AppendString("b"); | 162 list.AppendString("b"); |
164 map.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 163 map.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
165 list.DeepCopy(), NULL); | 164 list.DeepCopy(), NULL); |
166 map.Set("boolean", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 165 map.Set("boolean", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
167 base::Value::CreateBooleanValue(true), NULL); | 166 base::Value::CreateBooleanValue(true), NULL); |
168 map.Set("integer", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 167 map.Set("integer", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
169 base::Value::CreateIntegerValue(1), NULL); | 168 base::Value::CreateIntegerValue(1), NULL); |
170 map.Set("null", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 169 map.Set("null", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
171 base::Value::CreateNullValue(), NULL); | 170 base::Value::CreateNullValue(), NULL); |
172 map.Set("double", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 171 map.Set("double", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
173 base::Value::CreateDoubleValue(1.2), NULL); | 172 base::Value::CreateDoubleValue(1.2), NULL); |
174 base::DictionaryValue dict; | 173 base::DictionaryValue dict; |
175 dict.SetString("a", "b"); | 174 dict.SetString("a", "b"); |
176 dict.SetInteger("b", 2); | 175 dict.SetInteger("b", 2); |
177 map.Set("object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 176 map.Set("object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
178 dict.DeepCopy(), NULL); | 177 dict.DeepCopy(), NULL); |
179 map.Set("string", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 178 map.Set("string", |
180 base::Value::CreateStringValue("value"), NULL); | 179 POLICY_LEVEL_MANDATORY, |
| 180 POLICY_SCOPE_USER, |
| 181 new base::StringValue("value"), |
| 182 NULL); |
181 | 183 |
182 bundle.MergeFrom(expected_bundle); | 184 bundle.MergeFrom(expected_bundle); |
183 bundle.Get(extension_ns).Set("Unexpected", | 185 bundle.Get(extension_ns).Set("Unexpected", |
184 POLICY_LEVEL_MANDATORY, | 186 POLICY_LEVEL_MANDATORY, |
185 POLICY_SCOPE_USER, | 187 POLICY_SCOPE_USER, |
186 base::Value::CreateStringValue("to-be-removed"), | 188 new base::StringValue("to-be-removed"), |
187 NULL); | 189 NULL); |
188 | 190 |
189 schema_map->FilterBundle(&bundle); | 191 schema_map->FilterBundle(&bundle); |
190 EXPECT_TRUE(bundle.Equals(expected_bundle)); | 192 EXPECT_TRUE(bundle.Equals(expected_bundle)); |
191 | 193 |
192 // Mismatched types are also removed. | 194 // Mismatched types are also removed. |
193 bundle.Clear(); | 195 bundle.Clear(); |
194 PolicyMap& badmap = bundle.Get(extension_ns); | 196 PolicyMap& badmap = bundle.Get(extension_ns); |
195 badmap.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 197 badmap.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
196 base::Value::CreateBooleanValue(false), NULL); | 198 base::Value::CreateBooleanValue(false), NULL); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 scoped_refptr<SchemaMap> schema_map = new SchemaMap(domain_map); | 232 scoped_refptr<SchemaMap> schema_map = new SchemaMap(domain_map); |
231 | 233 |
232 // |bundle| contains policies loaded by a policy provider. | 234 // |bundle| contains policies loaded by a policy provider. |
233 PolicyBundle bundle; | 235 PolicyBundle bundle; |
234 | 236 |
235 // Known components with schemas are filtered. | 237 // Known components with schemas are filtered. |
236 PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "with-schema"); | 238 PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "with-schema"); |
237 bundle.Get(extension_ns).Set("String", | 239 bundle.Get(extension_ns).Set("String", |
238 POLICY_LEVEL_MANDATORY, | 240 POLICY_LEVEL_MANDATORY, |
239 POLICY_SCOPE_USER, | 241 POLICY_SCOPE_USER, |
240 base::Value::CreateStringValue("value 1"), | 242 new base::StringValue("value 1"), |
241 NULL); | 243 NULL); |
242 | 244 |
243 // The Chrome namespace isn't filtered. | 245 // The Chrome namespace isn't filtered. |
244 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); | 246 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); |
245 bundle.Get(chrome_ns).Set("ChromePolicy", | 247 bundle.Get(chrome_ns).Set("ChromePolicy", |
246 POLICY_LEVEL_MANDATORY, | 248 POLICY_LEVEL_MANDATORY, |
247 POLICY_SCOPE_USER, | 249 POLICY_SCOPE_USER, |
248 base::Value::CreateStringValue("value 3"), | 250 new base::StringValue("value 3"), |
249 NULL); | 251 NULL); |
250 | 252 |
251 PolicyBundle expected_bundle; | 253 PolicyBundle expected_bundle; |
252 expected_bundle.MergeFrom(bundle); | 254 expected_bundle.MergeFrom(bundle); |
253 | 255 |
254 // Known components without a schema are filtered out completely. | 256 // Known components without a schema are filtered out completely. |
255 PolicyNamespace without_schema_ns(POLICY_DOMAIN_EXTENSIONS, "without-schema"); | 257 PolicyNamespace without_schema_ns(POLICY_DOMAIN_EXTENSIONS, "without-schema"); |
256 bundle.Get(without_schema_ns).Set("Schemaless", | 258 bundle.Get(without_schema_ns).Set("Schemaless", |
257 POLICY_LEVEL_MANDATORY, | 259 POLICY_LEVEL_MANDATORY, |
258 POLICY_SCOPE_USER, | 260 POLICY_SCOPE_USER, |
259 base::Value::CreateStringValue("value 2"), | 261 new base::StringValue("value 2"), |
260 NULL); | 262 NULL); |
261 | 263 |
262 // Unknown policies of known components with a schema are removed. | 264 // Unknown policies of known components with a schema are removed. |
263 bundle.Get(extension_ns).Set("Surprise", | 265 bundle.Get(extension_ns).Set("Surprise", |
264 POLICY_LEVEL_MANDATORY, | 266 POLICY_LEVEL_MANDATORY, |
265 POLICY_SCOPE_USER, | 267 POLICY_SCOPE_USER, |
266 base::Value::CreateStringValue("value 4"), | 268 new base::StringValue("value 4"), |
267 NULL); | 269 NULL); |
268 | 270 |
269 // Unknown components are removed. | 271 // Unknown components are removed. |
270 PolicyNamespace unknown_ns(POLICY_DOMAIN_EXTENSIONS, "unknown"); | 272 PolicyNamespace unknown_ns(POLICY_DOMAIN_EXTENSIONS, "unknown"); |
271 bundle.Get(unknown_ns).Set("Surprise", | 273 bundle.Get(unknown_ns).Set("Surprise", |
272 POLICY_LEVEL_MANDATORY, | 274 POLICY_LEVEL_MANDATORY, |
273 POLICY_SCOPE_USER, | 275 POLICY_SCOPE_USER, |
274 base::Value::CreateStringValue("value 5"), | 276 new base::StringValue("value 5"), |
275 NULL); | 277 NULL); |
276 | 278 |
277 schema_map->FilterBundle(&bundle); | 279 schema_map->FilterBundle(&bundle); |
278 EXPECT_TRUE(bundle.Equals(expected_bundle)); | 280 EXPECT_TRUE(bundle.Equals(expected_bundle)); |
279 } | 281 } |
280 | 282 |
281 TEST_F(SchemaMapTest, GetChanges) { | 283 TEST_F(SchemaMapTest, GetChanges) { |
282 DomainMap map; | 284 DomainMap map; |
283 map[POLICY_DOMAIN_CHROME][""] = Schema(); | 285 map[POLICY_DOMAIN_CHROME][""] = Schema(); |
284 scoped_refptr<SchemaMap> older = new SchemaMap(map); | 286 scoped_refptr<SchemaMap> older = new SchemaMap(map); |
(...skipping 19 matching lines...) Expand all Loading... |
304 newer = new SchemaMap(map); | 306 newer = new SchemaMap(map); |
305 newer->GetChanges(older, &removed, &added); | 307 newer->GetChanges(older, &removed, &added); |
306 ASSERT_EQ(2u, removed.size()); | 308 ASSERT_EQ(2u, removed.size()); |
307 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_CHROME, ""), removed[0]); | 309 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_CHROME, ""), removed[0]); |
308 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), removed[1]); | 310 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), removed[1]); |
309 ASSERT_EQ(1u, added.size()); | 311 ASSERT_EQ(1u, added.size()); |
310 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"), added[0]); | 312 EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"), added[0]); |
311 } | 313 } |
312 | 314 |
313 } // namespace policy | 315 } // namespace policy |
OLD | NEW |