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

Side by Side Diff: chrome/browser/extensions/policy_handlers_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 <utility>
6
5 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
6 #include "chrome/browser/extensions/external_policy_loader.h" 8 #include "chrome/browser/extensions/external_policy_loader.h"
7 #include "chrome/browser/extensions/policy_handlers.h" 9 #include "chrome/browser/extensions/policy_handlers.h"
8 #include "components/policy/core/browser/policy_error_map.h" 10 #include "components/policy/core/browser/policy_error_map.h"
9 #include "components/policy/core/common/policy_map.h" 11 #include "components/policy/core/common/policy_map.h"
10 #include "components/policy/core/common/policy_types.h" 12 #include "components/policy/core/common/policy_types.h"
11 #include "components/policy/core/common/schema.h" 13 #include "components/policy/core/common/schema.h"
12 #include "components/prefs/pref_value_map.h" 14 #include "components/prefs/pref_value_map.h"
13 #include "extensions/browser/pref_names.h" 15 #include "extensions/browser/pref_names.h"
14 #include "policy/policy_constants.h" 16 #include "policy/policy_constants.h"
(...skipping 20 matching lines...) Expand all
35 "}"; 37 "}";
36 38
37 TEST(ExtensionListPolicyHandlerTest, CheckPolicySettings) { 39 TEST(ExtensionListPolicyHandlerTest, CheckPolicySettings) {
38 base::ListValue list; 40 base::ListValue list;
39 policy::PolicyMap policy_map; 41 policy::PolicyMap policy_map;
40 policy::PolicyErrorMap errors; 42 policy::PolicyErrorMap errors;
41 ExtensionListPolicyHandler handler( 43 ExtensionListPolicyHandler handler(
42 policy::key::kExtensionInstallBlacklist, kTestPref, true); 44 policy::key::kExtensionInstallBlacklist, kTestPref, true);
43 45
44 policy_map.Set(policy::key::kExtensionInstallBlacklist, 46 policy_map.Set(policy::key::kExtensionInstallBlacklist,
45 policy::POLICY_LEVEL_MANDATORY, 47 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
46 policy::POLICY_SCOPE_USER, 48 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
47 policy::POLICY_SOURCE_CLOUD,
48 list.DeepCopy(),
49 NULL);
50 errors.Clear(); 49 errors.Clear();
51 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 50 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
52 EXPECT_TRUE(errors.empty()); 51 EXPECT_TRUE(errors.empty());
53 52
54 list.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop")); 53 list.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop"));
55 policy_map.Set(policy::key::kExtensionInstallBlacklist, 54 policy_map.Set(policy::key::kExtensionInstallBlacklist,
56 policy::POLICY_LEVEL_MANDATORY, 55 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
57 policy::POLICY_SCOPE_USER, 56 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
58 policy::POLICY_SOURCE_CLOUD,
59 list.DeepCopy(),
60 NULL);
61 errors.Clear(); 57 errors.Clear();
62 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 58 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
63 EXPECT_TRUE(errors.empty()); 59 EXPECT_TRUE(errors.empty());
64 60
65 list.Append(new base::StringValue("*")); 61 list.Append(new base::StringValue("*"));
66 policy_map.Set(policy::key::kExtensionInstallBlacklist, 62 policy_map.Set(policy::key::kExtensionInstallBlacklist,
67 policy::POLICY_LEVEL_MANDATORY, 63 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
68 policy::POLICY_SCOPE_USER, 64 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
69 policy::POLICY_SOURCE_CLOUD,
70 list.DeepCopy(),
71 NULL);
72 errors.Clear(); 65 errors.Clear();
73 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 66 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
74 EXPECT_TRUE(errors.empty()); 67 EXPECT_TRUE(errors.empty());
75 68
76 list.Append(new base::StringValue("invalid")); 69 list.Append(new base::StringValue("invalid"));
77 policy_map.Set(policy::key::kExtensionInstallBlacklist, 70 policy_map.Set(policy::key::kExtensionInstallBlacklist,
78 policy::POLICY_LEVEL_MANDATORY, 71 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
79 policy::POLICY_SCOPE_USER, 72 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
80 policy::POLICY_SOURCE_CLOUD,
81 list.DeepCopy(),
82 NULL);
83 errors.Clear(); 73 errors.Clear();
84 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 74 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
85 EXPECT_FALSE(errors.empty()); 75 EXPECT_FALSE(errors.empty());
86 EXPECT_FALSE( 76 EXPECT_FALSE(
87 errors.GetErrors(policy::key::kExtensionInstallBlacklist).empty()); 77 errors.GetErrors(policy::key::kExtensionInstallBlacklist).empty());
88 } 78 }
89 79
90 TEST(ExtensionListPolicyHandlerTest, ApplyPolicySettings) { 80 TEST(ExtensionListPolicyHandlerTest, ApplyPolicySettings) {
91 base::ListValue policy; 81 base::ListValue policy;
92 base::ListValue expected; 82 base::ListValue expected;
93 policy::PolicyMap policy_map; 83 policy::PolicyMap policy_map;
94 PrefValueMap prefs; 84 PrefValueMap prefs;
95 base::Value* value = NULL; 85 base::Value* value = NULL;
96 ExtensionListPolicyHandler handler( 86 ExtensionListPolicyHandler handler(
97 policy::key::kExtensionInstallBlacklist, kTestPref, false); 87 policy::key::kExtensionInstallBlacklist, kTestPref, false);
98 88
99 policy.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop")); 89 policy.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop"));
100 expected.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop")); 90 expected.Append(new base::StringValue("abcdefghijklmnopabcdefghijklmnop"));
101 91
102 policy_map.Set(policy::key::kExtensionInstallBlacklist, 92 policy_map.Set(policy::key::kExtensionInstallBlacklist,
103 policy::POLICY_LEVEL_MANDATORY, 93 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
104 policy::POLICY_SCOPE_USER, 94 policy::POLICY_SOURCE_CLOUD, policy.CreateDeepCopy(), nullptr);
105 policy::POLICY_SOURCE_CLOUD,
106 policy.DeepCopy(),
107 NULL);
108 handler.ApplyPolicySettings(policy_map, &prefs); 95 handler.ApplyPolicySettings(policy_map, &prefs);
109 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); 96 EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
110 EXPECT_TRUE(base::Value::Equals(&expected, value)); 97 EXPECT_TRUE(base::Value::Equals(&expected, value));
111 98
112 policy.Append(new base::StringValue("invalid")); 99 policy.Append(new base::StringValue("invalid"));
113 policy_map.Set(policy::key::kExtensionInstallBlacklist, 100 policy_map.Set(policy::key::kExtensionInstallBlacklist,
114 policy::POLICY_LEVEL_MANDATORY, 101 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
115 policy::POLICY_SCOPE_USER, 102 policy::POLICY_SOURCE_CLOUD, policy.CreateDeepCopy(), nullptr);
116 policy::POLICY_SOURCE_CLOUD,
117 policy.DeepCopy(),
118 NULL);
119 handler.ApplyPolicySettings(policy_map, &prefs); 103 handler.ApplyPolicySettings(policy_map, &prefs);
120 EXPECT_TRUE(prefs.GetValue(kTestPref, &value)); 104 EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
121 EXPECT_TRUE(base::Value::Equals(&expected, value)); 105 EXPECT_TRUE(base::Value::Equals(&expected, value));
122 } 106 }
123 107
124 TEST(ExtensionInstallForcelistPolicyHandlerTest, CheckPolicySettings) { 108 TEST(ExtensionInstallForcelistPolicyHandlerTest, CheckPolicySettings) {
125 base::ListValue list; 109 base::ListValue list;
126 policy::PolicyMap policy_map; 110 policy::PolicyMap policy_map;
127 policy::PolicyErrorMap errors; 111 policy::PolicyErrorMap errors;
128 ExtensionInstallForcelistPolicyHandler handler; 112 ExtensionInstallForcelistPolicyHandler handler;
129 113
130 policy_map.Set(policy::key::kExtensionInstallForcelist, 114 policy_map.Set(policy::key::kExtensionInstallForcelist,
131 policy::POLICY_LEVEL_MANDATORY, 115 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
132 policy::POLICY_SCOPE_USER, 116 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
133 policy::POLICY_SOURCE_CLOUD,
134 list.DeepCopy(),
135 NULL);
136 errors.Clear(); 117 errors.Clear();
137 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 118 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
138 EXPECT_TRUE(errors.empty()); 119 EXPECT_TRUE(errors.empty());
139 120
140 list.AppendString("abcdefghijklmnopabcdefghijklmnop;http://example.com"); 121 list.AppendString("abcdefghijklmnopabcdefghijklmnop;http://example.com");
141 policy_map.Set(policy::key::kExtensionInstallForcelist, 122 policy_map.Set(policy::key::kExtensionInstallForcelist,
142 policy::POLICY_LEVEL_MANDATORY, 123 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
143 policy::POLICY_SCOPE_USER, 124 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
144 policy::POLICY_SOURCE_CLOUD,
145 list.DeepCopy(),
146 NULL);
147 errors.Clear(); 125 errors.Clear();
148 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 126 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
149 EXPECT_TRUE(errors.empty()); 127 EXPECT_TRUE(errors.empty());
150 128
151 // Add an erroneous entry. This should generate an error, but the good 129 // Add an erroneous entry. This should generate an error, but the good
152 // entry should still be translated successfully. 130 // entry should still be translated successfully.
153 list.AppendString("adfasdf;http://example.com"); 131 list.AppendString("adfasdf;http://example.com");
154 policy_map.Set(policy::key::kExtensionInstallForcelist, 132 policy_map.Set(policy::key::kExtensionInstallForcelist,
155 policy::POLICY_LEVEL_MANDATORY, 133 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
156 policy::POLICY_SCOPE_USER, 134 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
157 policy::POLICY_SOURCE_CLOUD,
158 list.DeepCopy(),
159 NULL);
160 errors.Clear(); 135 errors.Clear();
161 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 136 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
162 EXPECT_EQ(1U, errors.size()); 137 EXPECT_EQ(1U, errors.size());
163 138
164 // Add an entry with bad URL, which should generate another error. 139 // Add an entry with bad URL, which should generate another error.
165 list.AppendString("abcdefghijklmnopabcdefghijklmnop;nourl"); 140 list.AppendString("abcdefghijklmnopabcdefghijklmnop;nourl");
166 policy_map.Set(policy::key::kExtensionInstallForcelist, 141 policy_map.Set(policy::key::kExtensionInstallForcelist,
167 policy::POLICY_LEVEL_MANDATORY, 142 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
168 policy::POLICY_SCOPE_USER, 143 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
169 policy::POLICY_SOURCE_CLOUD,
170 list.DeepCopy(),
171 NULL);
172 errors.Clear(); 144 errors.Clear();
173 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 145 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
174 EXPECT_EQ(2U, errors.size()); 146 EXPECT_EQ(2U, errors.size());
175 147
176 // Just an extension ID should also generate an error. 148 // Just an extension ID should also generate an error.
177 list.AppendString("abcdefghijklmnopabcdefghijklmnop"); 149 list.AppendString("abcdefghijklmnopabcdefghijklmnop");
178 policy_map.Set(policy::key::kExtensionInstallForcelist, 150 policy_map.Set(policy::key::kExtensionInstallForcelist,
179 policy::POLICY_LEVEL_MANDATORY, 151 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
180 policy::POLICY_SCOPE_USER, 152 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
181 policy::POLICY_SOURCE_CLOUD,
182 list.DeepCopy(),
183 NULL);
184 errors.Clear(); 153 errors.Clear();
185 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 154 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
186 EXPECT_EQ(3U, errors.size()); 155 EXPECT_EQ(3U, errors.size());
187 } 156 }
188 157
189 TEST(ExtensionInstallForcelistPolicyHandlerTest, ApplyPolicySettings) { 158 TEST(ExtensionInstallForcelistPolicyHandlerTest, ApplyPolicySettings) {
190 base::ListValue policy; 159 base::ListValue policy;
191 base::DictionaryValue expected; 160 base::DictionaryValue expected;
192 policy::PolicyMap policy_map; 161 policy::PolicyMap policy_map;
193 PrefValueMap prefs; 162 PrefValueMap prefs;
194 base::Value* value = NULL; 163 base::Value* value = NULL;
195 ExtensionInstallForcelistPolicyHandler handler; 164 ExtensionInstallForcelistPolicyHandler handler;
196 165
197 handler.ApplyPolicySettings(policy_map, &prefs); 166 handler.ApplyPolicySettings(policy_map, &prefs);
198 EXPECT_FALSE(prefs.GetValue(pref_names::kInstallForceList, &value)); 167 EXPECT_FALSE(prefs.GetValue(pref_names::kInstallForceList, &value));
199 EXPECT_FALSE(value); 168 EXPECT_FALSE(value);
200 169
201 policy_map.Set(policy::key::kExtensionInstallForcelist, 170 policy_map.Set(policy::key::kExtensionInstallForcelist,
202 policy::POLICY_LEVEL_MANDATORY, 171 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
203 policy::POLICY_SCOPE_USER, 172 policy::POLICY_SOURCE_CLOUD, policy.CreateDeepCopy(), nullptr);
204 policy::POLICY_SOURCE_CLOUD,
205 policy.DeepCopy(),
206 NULL);
207 handler.ApplyPolicySettings(policy_map, &prefs); 173 handler.ApplyPolicySettings(policy_map, &prefs);
208 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value)); 174 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value));
209 EXPECT_TRUE(base::Value::Equals(&expected, value)); 175 EXPECT_TRUE(base::Value::Equals(&expected, value));
210 176
211 policy.AppendString("abcdefghijklmnopabcdefghijklmnop;http://example.com"); 177 policy.AppendString("abcdefghijklmnopabcdefghijklmnop;http://example.com");
212 extensions::ExternalPolicyLoader::AddExtension( 178 extensions::ExternalPolicyLoader::AddExtension(
213 &expected, "abcdefghijklmnopabcdefghijklmnop", "http://example.com"); 179 &expected, "abcdefghijklmnopabcdefghijklmnop", "http://example.com");
214 policy_map.Set(policy::key::kExtensionInstallForcelist, 180 policy_map.Set(policy::key::kExtensionInstallForcelist,
215 policy::POLICY_LEVEL_MANDATORY, 181 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
216 policy::POLICY_SCOPE_USER, 182 policy::POLICY_SOURCE_CLOUD, policy.CreateDeepCopy(), nullptr);
217 policy::POLICY_SOURCE_CLOUD,
218 policy.DeepCopy(),
219 NULL);
220 handler.ApplyPolicySettings(policy_map, &prefs); 183 handler.ApplyPolicySettings(policy_map, &prefs);
221 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value)); 184 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value));
222 EXPECT_TRUE(base::Value::Equals(&expected, value)); 185 EXPECT_TRUE(base::Value::Equals(&expected, value));
223 186
224 policy.AppendString("invalid"); 187 policy.AppendString("invalid");
225 policy_map.Set(policy::key::kExtensionInstallForcelist, 188 policy_map.Set(policy::key::kExtensionInstallForcelist,
226 policy::POLICY_LEVEL_MANDATORY, 189 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
227 policy::POLICY_SCOPE_USER, 190 policy::POLICY_SOURCE_CLOUD, policy.CreateDeepCopy(), nullptr);
228 policy::POLICY_SOURCE_CLOUD,
229 policy.DeepCopy(),
230 NULL);
231 handler.ApplyPolicySettings(policy_map, &prefs); 191 handler.ApplyPolicySettings(policy_map, &prefs);
232 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value)); 192 EXPECT_TRUE(prefs.GetValue(pref_names::kInstallForceList, &value));
233 EXPECT_TRUE(base::Value::Equals(&expected, value)); 193 EXPECT_TRUE(base::Value::Equals(&expected, value));
234 } 194 }
235 195
236 TEST(ExtensionURLPatternListPolicyHandlerTest, CheckPolicySettings) { 196 TEST(ExtensionURLPatternListPolicyHandlerTest, CheckPolicySettings) {
237 base::ListValue list; 197 base::ListValue list;
238 policy::PolicyMap policy_map; 198 policy::PolicyMap policy_map;
239 policy::PolicyErrorMap errors; 199 policy::PolicyErrorMap errors;
240 ExtensionURLPatternListPolicyHandler handler( 200 ExtensionURLPatternListPolicyHandler handler(
241 policy::key::kExtensionInstallSources, kTestPref); 201 policy::key::kExtensionInstallSources, kTestPref);
242 202
243 policy_map.Set(policy::key::kExtensionInstallSources, 203 policy_map.Set(policy::key::kExtensionInstallSources,
244 policy::POLICY_LEVEL_MANDATORY, 204 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
245 policy::POLICY_SCOPE_USER, 205 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
246 policy::POLICY_SOURCE_CLOUD,
247 list.DeepCopy(),
248 NULL);
249 errors.Clear(); 206 errors.Clear();
250 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 207 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
251 EXPECT_TRUE(errors.empty()); 208 EXPECT_TRUE(errors.empty());
252 209
253 list.Append(new base::StringValue("http://*.google.com/*")); 210 list.Append(new base::StringValue("http://*.google.com/*"));
254 policy_map.Set(policy::key::kExtensionInstallSources, 211 policy_map.Set(policy::key::kExtensionInstallSources,
255 policy::POLICY_LEVEL_MANDATORY, 212 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
256 policy::POLICY_SCOPE_USER, 213 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
257 policy::POLICY_SOURCE_CLOUD,
258 list.DeepCopy(),
259 NULL);
260 errors.Clear(); 214 errors.Clear();
261 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 215 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
262 EXPECT_TRUE(errors.empty()); 216 EXPECT_TRUE(errors.empty());
263 217
264 list.Append(new base::StringValue("<all_urls>")); 218 list.Append(new base::StringValue("<all_urls>"));
265 policy_map.Set(policy::key::kExtensionInstallSources, 219 policy_map.Set(policy::key::kExtensionInstallSources,
266 policy::POLICY_LEVEL_MANDATORY, 220 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
267 policy::POLICY_SCOPE_USER, 221 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
268 policy::POLICY_SOURCE_CLOUD,
269 list.DeepCopy(),
270 NULL);
271 errors.Clear(); 222 errors.Clear();
272 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 223 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
273 EXPECT_TRUE(errors.empty()); 224 EXPECT_TRUE(errors.empty());
274 225
275 list.Append(new base::StringValue("invalid")); 226 list.Append(new base::StringValue("invalid"));
276 policy_map.Set(policy::key::kExtensionInstallSources, 227 policy_map.Set(policy::key::kExtensionInstallSources,
277 policy::POLICY_LEVEL_MANDATORY, 228 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
278 policy::POLICY_SCOPE_USER, 229 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
279 policy::POLICY_SOURCE_CLOUD,
280 list.DeepCopy(),
281 NULL);
282 errors.Clear(); 230 errors.Clear();
283 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); 231 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
284 EXPECT_FALSE(errors.empty()); 232 EXPECT_FALSE(errors.empty());
285 EXPECT_FALSE(errors.GetErrors(policy::key::kExtensionInstallSources).empty()); 233 EXPECT_FALSE(errors.GetErrors(policy::key::kExtensionInstallSources).empty());
286 234
287 // URLPattern syntax has a different way to express 'all urls'. Though '*' 235 // URLPattern syntax has a different way to express 'all urls'. Though '*'
288 // would be compatible today, it would be brittle, so we disallow. 236 // would be compatible today, it would be brittle, so we disallow.
289 list.Append(new base::StringValue("*")); 237 list.Append(new base::StringValue("*"));
290 policy_map.Set(policy::key::kExtensionInstallSources, 238 policy_map.Set(policy::key::kExtensionInstallSources,
291 policy::POLICY_LEVEL_MANDATORY, 239 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
292 policy::POLICY_SCOPE_USER, 240 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
293 policy::POLICY_SOURCE_CLOUD,
294 list.DeepCopy(),
295 NULL);
296 errors.Clear(); 241 errors.Clear();
297 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); 242 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
298 EXPECT_FALSE(errors.empty()); 243 EXPECT_FALSE(errors.empty());
299 EXPECT_FALSE(errors.GetErrors(policy::key::kExtensionInstallSources).empty()); 244 EXPECT_FALSE(errors.GetErrors(policy::key::kExtensionInstallSources).empty());
300 } 245 }
301 246
302 TEST(ExtensionURLPatternListPolicyHandlerTest, ApplyPolicySettings) { 247 TEST(ExtensionURLPatternListPolicyHandlerTest, ApplyPolicySettings) {
303 base::ListValue list; 248 base::ListValue list;
304 policy::PolicyMap policy_map; 249 policy::PolicyMap policy_map;
305 PrefValueMap prefs; 250 PrefValueMap prefs;
306 base::Value* value = NULL; 251 base::Value* value = NULL;
307 ExtensionURLPatternListPolicyHandler handler( 252 ExtensionURLPatternListPolicyHandler handler(
308 policy::key::kExtensionInstallSources, kTestPref); 253 policy::key::kExtensionInstallSources, kTestPref);
309 254
310 list.Append(new base::StringValue("https://corp.monkey.net/*")); 255 list.Append(new base::StringValue("https://corp.monkey.net/*"));
311 policy_map.Set(policy::key::kExtensionInstallSources, 256 policy_map.Set(policy::key::kExtensionInstallSources,
312 policy::POLICY_LEVEL_MANDATORY, 257 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
313 policy::POLICY_SCOPE_USER, 258 policy::POLICY_SOURCE_CLOUD, list.CreateDeepCopy(), nullptr);
314 policy::POLICY_SOURCE_CLOUD,
315 list.DeepCopy(),
316 NULL);
317 handler.ApplyPolicySettings(policy_map, &prefs); 259 handler.ApplyPolicySettings(policy_map, &prefs);
318 ASSERT_TRUE(prefs.GetValue(kTestPref, &value)); 260 ASSERT_TRUE(prefs.GetValue(kTestPref, &value));
319 EXPECT_TRUE(base::Value::Equals(&list, value)); 261 EXPECT_TRUE(base::Value::Equals(&list, value));
320 } 262 }
321 263
322 TEST(ExtensionSettingsPolicyHandlerTest, CheckPolicySettings) { 264 TEST(ExtensionSettingsPolicyHandlerTest, CheckPolicySettings) {
323 std::string error; 265 std::string error;
324 std::unique_ptr<base::Value> policy_value = 266 std::unique_ptr<base::Value> policy_value =
325 base::JSONReader::ReadAndReturnError( 267 base::JSONReader::ReadAndReturnError(
326 kTestManagementPolicy1, 268 kTestManagementPolicy1,
327 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL, &error); 269 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL, &error);
328 ASSERT_TRUE(policy_value.get()) << error; 270 ASSERT_TRUE(policy_value.get()) << error;
329 271
330 policy::Schema chrome_schema = 272 policy::Schema chrome_schema =
331 policy::Schema::Wrap(policy::GetChromeSchemaData()); 273 policy::Schema::Wrap(policy::GetChromeSchemaData());
332 policy::PolicyMap policy_map; 274 policy::PolicyMap policy_map;
333 policy::PolicyErrorMap errors; 275 policy::PolicyErrorMap errors;
334 ExtensionSettingsPolicyHandler handler(chrome_schema); 276 ExtensionSettingsPolicyHandler handler(chrome_schema);
335 277
336 policy_map.Set(policy::key::kExtensionSettings, 278 policy_map.Set(policy::key::kExtensionSettings,
337 policy::POLICY_LEVEL_MANDATORY, 279 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
338 policy::POLICY_SCOPE_USER, 280 policy::POLICY_SOURCE_CLOUD, std::move(policy_value), nullptr);
339 policy::POLICY_SOURCE_CLOUD,
340 policy_value.release(),
341 NULL);
342 // CheckPolicySettings() fails due to missing update URL. 281 // CheckPolicySettings() fails due to missing update URL.
343 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); 282 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
344 EXPECT_FALSE(errors.empty()); 283 EXPECT_FALSE(errors.empty());
345 } 284 }
346 285
347 TEST(ExtensionSettingsPolicyHandlerTest, ApplyPolicySettings) { 286 TEST(ExtensionSettingsPolicyHandlerTest, ApplyPolicySettings) {
348 std::string error; 287 std::string error;
349 std::unique_ptr<base::Value> policy_value = 288 std::unique_ptr<base::Value> policy_value =
350 base::JSONReader::ReadAndReturnError( 289 base::JSONReader::ReadAndReturnError(
351 kTestManagementPolicy2, 290 kTestManagementPolicy2,
352 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL, &error); 291 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL, &error);
353 ASSERT_TRUE(policy_value.get()) << error; 292 ASSERT_TRUE(policy_value.get()) << error;
354 293
355 policy::Schema chrome_schema = 294 policy::Schema chrome_schema =
356 policy::Schema::Wrap(policy::GetChromeSchemaData()); 295 policy::Schema::Wrap(policy::GetChromeSchemaData());
357 policy::PolicyMap policy_map; 296 policy::PolicyMap policy_map;
358 policy::PolicyErrorMap errors; 297 policy::PolicyErrorMap errors;
359 PrefValueMap prefs; 298 PrefValueMap prefs;
360 ExtensionSettingsPolicyHandler handler(chrome_schema); 299 ExtensionSettingsPolicyHandler handler(chrome_schema);
361 300
362 policy_map.Set(policy::key::kExtensionSettings, 301 policy_map.Set(policy::key::kExtensionSettings,
363 policy::POLICY_LEVEL_MANDATORY, 302 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
364 policy::POLICY_SCOPE_USER, 303 policy::POLICY_SOURCE_CLOUD, policy_value->CreateDeepCopy(),
365 policy::POLICY_SOURCE_CLOUD, 304 nullptr);
366 policy_value->DeepCopy(),
367 NULL);
368 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors)); 305 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
369 handler.ApplyPolicySettings(policy_map, &prefs); 306 handler.ApplyPolicySettings(policy_map, &prefs);
370 base::Value* value = NULL; 307 base::Value* value = NULL;
371 ASSERT_TRUE(prefs.GetValue(pref_names::kExtensionManagement, &value)); 308 ASSERT_TRUE(prefs.GetValue(pref_names::kExtensionManagement, &value));
372 EXPECT_TRUE(base::Value::Equals(policy_value.get(), value)); 309 EXPECT_TRUE(base::Value::Equals(policy_value.get(), value));
373 } 310 }
374 311
375 } // namespace extensions 312 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698