OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/callback.h" | |
6 #include "base/memory/scoped_ptr.h" | |
7 #include "base/prefs/pref_value_map.h" | |
8 #include "components/policy/core/browser/configuration_policy_handler.h" | |
9 #include "components/policy/core/browser/policy_error_map.h" | |
10 #include "components/policy/core/common/policy_map.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 // Note: this file should move to components/policy/core/browser, but the | |
14 // components_unittests runner does not load the ResourceBundle as | |
15 // ChromeTestSuite::Initialize does, which leads to failures using | |
16 // PolicyErrorMap. | |
17 | |
18 namespace policy { | |
19 | |
20 namespace { | |
21 | |
22 StringToIntEnumListPolicyHandler::MappingEntry kTestTypeMap[] = { | |
23 { "one", 1 }, | |
24 { "two", 2 }, | |
25 }; | |
26 | |
27 const char kTestPolicy[] = "unit_test.test_policy"; | |
28 const char kTestPref[] = "unit_test.test_pref"; | |
29 | |
30 } // namespace | |
31 | |
32 TEST(StringToIntEnumListPolicyHandlerTest, CheckPolicySettings) { | |
33 base::ListValue list; | |
34 PolicyMap policy_map; | |
35 PolicyErrorMap errors; | |
36 StringToIntEnumListPolicyHandler handler( | |
37 kTestPolicy, | |
38 kTestPref, | |
39 kTestTypeMap, | |
40 kTestTypeMap + arraysize(kTestTypeMap)); | |
41 | |
42 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
43 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
44 errors.Clear(); | |
45 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
46 EXPECT_TRUE(errors.empty()); | |
47 | |
48 list.AppendString("one"); | |
49 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
50 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
51 errors.Clear(); | |
52 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
53 EXPECT_TRUE(errors.empty()); | |
54 | |
55 list.AppendString("invalid"); | |
56 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
57 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
58 errors.Clear(); | |
59 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
60 EXPECT_FALSE(errors.empty()); | |
61 EXPECT_FALSE(errors.GetErrors(kTestPolicy).empty()); | |
62 | |
63 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
64 POLICY_SCOPE_USER, | |
65 base::Value::CreateStringValue("no list"), NULL); | |
66 errors.Clear(); | |
67 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
68 EXPECT_FALSE(errors.empty()); | |
69 EXPECT_FALSE(errors.GetErrors(kTestPolicy).empty()); | |
70 } | |
71 | |
72 TEST(StringToIntEnumListPolicyHandlerTest, ApplyPolicySettings) { | |
73 base::ListValue list; | |
74 base::ListValue expected; | |
75 PolicyMap policy_map; | |
76 PrefValueMap prefs; | |
77 base::Value* value; | |
78 StringToIntEnumListPolicyHandler handler( | |
79 kTestPolicy, | |
80 kTestPref, | |
81 kTestTypeMap, | |
82 kTestTypeMap + arraysize(kTestTypeMap)); | |
83 | |
84 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
85 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
86 handler.ApplyPolicySettings(policy_map, &prefs); | |
87 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
88 EXPECT_TRUE(base::Value::Equals(&expected, value)); | |
89 | |
90 list.AppendString("two"); | |
91 expected.AppendInteger(2); | |
92 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
93 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
94 handler.ApplyPolicySettings(policy_map, &prefs); | |
95 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
96 EXPECT_TRUE(base::Value::Equals(&expected, value)); | |
97 | |
98 list.AppendString("invalid"); | |
99 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
100 POLICY_SCOPE_USER, list.DeepCopy(), NULL); | |
101 handler.ApplyPolicySettings(policy_map, &prefs); | |
102 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
103 EXPECT_TRUE(base::Value::Equals(&expected, value)); | |
104 } | |
105 | |
106 TEST(IntRangePolicyHandler, CheckPolicySettingsClamp) { | |
107 PolicyMap policy_map; | |
108 PolicyErrorMap errors; | |
109 | |
110 // This tests needs to modify an int policy. The exact policy used and its | |
111 // semantics outside the test are irrelevant. | |
112 IntRangePolicyHandler handler(kTestPolicy, kTestPref, 0, 10, true); | |
113 | |
114 // Check that values lying in the accepted range are not rejected. | |
115 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
116 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
117 errors.Clear(); | |
118 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
119 EXPECT_TRUE(errors.empty()); | |
120 | |
121 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
122 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
123 errors.Clear(); | |
124 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
125 EXPECT_TRUE(errors.empty()); | |
126 | |
127 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
128 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
129 errors.Clear(); | |
130 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
131 EXPECT_TRUE(errors.empty()); | |
132 | |
133 // Check that values lying outside the accepted range are not rejected | |
134 // (because clamping is enabled) but do yield a warning message. | |
135 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
136 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
137 errors.Clear(); | |
138 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
139 EXPECT_FALSE(errors.empty()); | |
140 | |
141 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
142 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
143 errors.Clear(); | |
144 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
145 EXPECT_FALSE(errors.empty()); | |
146 | |
147 // Check that an entirely invalid value is rejected and yields an error | |
148 // message. | |
149 policy_map.Set(kTestPolicy, | |
150 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
151 base::Value::CreateStringValue("invalid"), NULL); | |
152 errors.Clear(); | |
153 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
154 EXPECT_FALSE(errors.empty()); | |
155 } | |
156 | |
157 TEST(IntRangePolicyHandler, CheckPolicySettingsDontClamp) { | |
158 PolicyMap policy_map; | |
159 PolicyErrorMap errors; | |
160 | |
161 // This tests needs to modify an int policy. The exact policy used and its | |
162 // semantics outside the test are irrelevant. | |
163 IntRangePolicyHandler handler(kTestPolicy, kTestPref, 0, 10, false); | |
164 | |
165 // Check that values lying in the accepted range are not rejected. | |
166 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
167 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
168 errors.Clear(); | |
169 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
170 EXPECT_TRUE(errors.empty()); | |
171 | |
172 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
173 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
174 errors.Clear(); | |
175 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
176 EXPECT_TRUE(errors.empty()); | |
177 | |
178 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
179 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
180 errors.Clear(); | |
181 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
182 EXPECT_TRUE(errors.empty()); | |
183 | |
184 // Check that values lying outside the accepted range are rejected and yield | |
185 // an error message. | |
186 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
187 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
188 errors.Clear(); | |
189 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
190 EXPECT_FALSE(errors.empty()); | |
191 | |
192 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
193 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
194 errors.Clear(); | |
195 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
196 EXPECT_FALSE(errors.empty()); | |
197 | |
198 // Check that an entirely invalid value is rejected and yields an error | |
199 // message. | |
200 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
201 base::Value::CreateStringValue("invalid"), NULL); | |
202 errors.Clear(); | |
203 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
204 EXPECT_FALSE(errors.empty()); | |
205 } | |
206 | |
207 TEST(IntRangePolicyHandler, ApplyPolicySettingsClamp) { | |
208 PolicyMap policy_map; | |
209 PrefValueMap prefs; | |
210 scoped_ptr<base::Value> expected; | |
211 const base::Value* value; | |
212 | |
213 // This tests needs to modify an int policy. The exact policy used and its | |
214 // semantics outside the test are irrelevant. | |
215 IntRangePolicyHandler handler(kTestPolicy, kTestPref, 0, 10, true); | |
216 | |
217 // Check that values lying in the accepted range are written to the pref. | |
218 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
219 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
220 prefs.Clear(); | |
221 handler.ApplyPolicySettings(policy_map, &prefs); | |
222 expected.reset(base::Value::CreateIntegerValue(0)); | |
223 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
224 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
225 | |
226 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
227 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
228 prefs.Clear(); | |
229 handler.ApplyPolicySettings(policy_map, &prefs); | |
230 expected.reset(base::Value::CreateIntegerValue(5)); | |
231 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
232 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
233 | |
234 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
235 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
236 prefs.Clear(); | |
237 handler.ApplyPolicySettings(policy_map, &prefs); | |
238 expected.reset(base::Value::CreateIntegerValue(10)); | |
239 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
240 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
241 | |
242 // Check that values lying outside the accepted range are clamped and written | |
243 // to the pref. | |
244 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
245 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
246 prefs.Clear(); | |
247 handler.ApplyPolicySettings(policy_map, &prefs); | |
248 expected.reset(base::Value::CreateIntegerValue(0)); | |
249 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
250 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
251 | |
252 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
253 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
254 prefs.Clear(); | |
255 handler.ApplyPolicySettings(policy_map, &prefs); | |
256 expected.reset(base::Value::CreateIntegerValue(10)); | |
257 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
258 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
259 } | |
260 | |
261 TEST(IntRangePolicyHandler, ApplyPolicySettingsDontClamp) { | |
262 PolicyMap policy_map; | |
263 PrefValueMap prefs; | |
264 scoped_ptr<base::Value> expected; | |
265 const base::Value* value; | |
266 | |
267 // This tests needs to modify an int policy. The exact policy used and its | |
268 // semantics outside the test are irrelevant. | |
269 IntRangePolicyHandler handler(kTestPolicy, kTestPref, 0, 10, true); | |
270 | |
271 // Check that values lying in the accepted range are written to the pref. | |
272 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
273 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
274 prefs.Clear(); | |
275 handler.ApplyPolicySettings(policy_map, &prefs); | |
276 expected.reset(base::Value::CreateIntegerValue(0)); | |
277 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
278 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
279 | |
280 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
281 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
282 prefs.Clear(); | |
283 handler.ApplyPolicySettings(policy_map, &prefs); | |
284 expected.reset(base::Value::CreateIntegerValue(5)); | |
285 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
286 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
287 | |
288 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
289 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
290 prefs.Clear(); | |
291 handler.ApplyPolicySettings(policy_map, &prefs); | |
292 expected.reset(base::Value::CreateIntegerValue(10)); | |
293 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
294 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
295 } | |
296 | |
297 TEST(IntPercentageToDoublePolicyHandler, CheckPolicySettingsClamp) { | |
298 PolicyMap policy_map; | |
299 PolicyErrorMap errors; | |
300 | |
301 // This tests needs to modify an int policy. The exact policy used and its | |
302 // semantics outside the test are irrelevant. | |
303 IntPercentageToDoublePolicyHandler handler( | |
304 kTestPolicy, kTestPref, 0, 10, true); | |
305 | |
306 // Check that values lying in the accepted range are not rejected. | |
307 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
308 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
309 errors.Clear(); | |
310 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
311 EXPECT_TRUE(errors.empty()); | |
312 | |
313 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
314 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
315 errors.Clear(); | |
316 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
317 EXPECT_TRUE(errors.empty()); | |
318 | |
319 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
320 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
321 errors.Clear(); | |
322 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
323 EXPECT_TRUE(errors.empty()); | |
324 | |
325 // Check that values lying outside the accepted range are not rejected | |
326 // (because clamping is enabled) but do yield a warning message. | |
327 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
328 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
329 errors.Clear(); | |
330 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
331 EXPECT_FALSE(errors.empty()); | |
332 | |
333 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
334 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
335 errors.Clear(); | |
336 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
337 EXPECT_FALSE(errors.empty()); | |
338 | |
339 // Check that an entirely invalid value is rejected and yields an error | |
340 // message. | |
341 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
342 base::Value::CreateStringValue("invalid"), NULL); | |
343 errors.Clear(); | |
344 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
345 EXPECT_FALSE(errors.empty()); | |
346 } | |
347 | |
348 TEST(IntPercentageToDoublePolicyHandler, CheckPolicySettingsDontClamp) { | |
349 PolicyMap policy_map; | |
350 PolicyErrorMap errors; | |
351 | |
352 // This tests needs to modify an int policy. The exact policy used and its | |
353 // semantics outside the test are irrelevant. | |
354 IntPercentageToDoublePolicyHandler handler( | |
355 kTestPolicy, kTestPref, 0, 10, false); | |
356 | |
357 // Check that values lying in the accepted range are not rejected. | |
358 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
359 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
360 errors.Clear(); | |
361 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
362 EXPECT_TRUE(errors.empty()); | |
363 | |
364 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
365 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
366 errors.Clear(); | |
367 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
368 EXPECT_TRUE(errors.empty()); | |
369 | |
370 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
371 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
372 errors.Clear(); | |
373 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); | |
374 EXPECT_TRUE(errors.empty()); | |
375 | |
376 // Check that values lying outside the accepted range are rejected and yield | |
377 // an error message. | |
378 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
379 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
380 errors.Clear(); | |
381 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
382 EXPECT_FALSE(errors.empty()); | |
383 | |
384 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
385 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
386 errors.Clear(); | |
387 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
388 EXPECT_FALSE(errors.empty()); | |
389 | |
390 // Check that an entirely invalid value is rejected and yields an error | |
391 // message. | |
392 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
393 base::Value::CreateStringValue("invalid"), NULL); | |
394 errors.Clear(); | |
395 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | |
396 EXPECT_FALSE(errors.empty()); | |
397 } | |
398 | |
399 TEST(IntPercentageToDoublePolicyHandler, ApplyPolicySettingsClamp) { | |
400 PolicyMap policy_map; | |
401 PrefValueMap prefs; | |
402 scoped_ptr<base::Value> expected; | |
403 const base::Value* value; | |
404 | |
405 // This tests needs to modify an int policy. The exact policy used and its | |
406 // semantics outside the test are irrelevant. | |
407 IntPercentageToDoublePolicyHandler handler( | |
408 kTestPolicy, kTestPref, 0, 10, true); | |
409 | |
410 // Check that values lying in the accepted range are written to the pref. | |
411 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
412 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
413 prefs.Clear(); | |
414 handler.ApplyPolicySettings(policy_map, &prefs); | |
415 expected.reset(base::Value::CreateDoubleValue(0.0)); | |
416 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
417 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
418 | |
419 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
420 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
421 prefs.Clear(); | |
422 handler.ApplyPolicySettings(policy_map, &prefs); | |
423 expected.reset(base::Value::CreateDoubleValue(0.05)); | |
424 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
425 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
426 | |
427 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
428 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
429 prefs.Clear(); | |
430 handler.ApplyPolicySettings(policy_map, &prefs); | |
431 expected.reset(base::Value::CreateDoubleValue(0.1)); | |
432 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
433 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
434 | |
435 // Check that values lying outside the accepted range are clamped and written | |
436 // to the pref. | |
437 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
438 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(-5), NULL); | |
439 prefs.Clear(); | |
440 handler.ApplyPolicySettings(policy_map, &prefs); | |
441 expected.reset(base::Value::CreateDoubleValue(0.0)); | |
442 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
443 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
444 | |
445 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
446 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(15), NULL); | |
447 prefs.Clear(); | |
448 handler.ApplyPolicySettings(policy_map, &prefs); | |
449 expected.reset(base::Value::CreateDoubleValue(0.1)); | |
450 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
451 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
452 } | |
453 | |
454 TEST(IntPercentageToDoublePolicyHandler, ApplyPolicySettingsDontClamp) { | |
455 PolicyMap policy_map; | |
456 PrefValueMap prefs; | |
457 scoped_ptr<base::Value> expected; | |
458 const base::Value* value; | |
459 | |
460 // This tests needs to modify an int policy. The exact policy used and its | |
461 // semantics outside the test are irrelevant. | |
462 IntPercentageToDoublePolicyHandler handler( | |
463 kTestPolicy, kTestPref, 0, 10, true); | |
464 | |
465 // Check that values lying in the accepted range are written to the pref. | |
466 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
467 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(0), NULL); | |
468 prefs.Clear(); | |
469 handler.ApplyPolicySettings(policy_map, &prefs); | |
470 expected.reset(base::Value::CreateDoubleValue(0.0)); | |
471 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
472 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
473 | |
474 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
475 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(5), NULL); | |
476 prefs.Clear(); | |
477 handler.ApplyPolicySettings(policy_map, &prefs); | |
478 expected.reset(base::Value::CreateDoubleValue(0.05)); | |
479 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
480 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
481 | |
482 policy_map.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, | |
483 POLICY_SCOPE_USER, base::Value::CreateIntegerValue(10), NULL); | |
484 prefs.Clear(); | |
485 handler.ApplyPolicySettings(policy_map, &prefs); | |
486 expected.reset(base::Value::CreateDoubleValue(0.1)); | |
487 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); | |
488 EXPECT_TRUE(base::Value::Equals(expected.get(), value)); | |
489 } | |
490 | |
491 } // namespace policy | |
OLD | NEW |