OLD | NEW |
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/chromeos/policy/configuration_policy_handler_chromeos.h
" | 5 #include "chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.h
" |
6 | 6 |
| 7 #include <memory> |
| 8 |
7 #include "base/callback.h" | 9 #include "base/callback.h" |
8 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "base/values.h" | 12 #include "base/values.h" |
12 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" | 13 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" |
13 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
14 #include "components/policy/core/browser/policy_error_map.h" | 15 #include "components/policy/core/browser/policy_error_map.h" |
15 #include "components/policy/core/common/external_data_fetcher.h" | 16 #include "components/policy/core/common/external_data_fetcher.h" |
16 #include "components/policy/core/common/policy_map.h" | 17 #include "components/policy/core/common/policy_map.h" |
17 #include "components/policy/core/common/policy_types.h" | 18 #include "components/policy/core/common/policy_types.h" |
18 #include "components/policy/core/common/schema.h" | 19 #include "components/policy/core/common/schema.h" |
19 #include "components/prefs/pref_value_map.h" | 20 #include "components/prefs/pref_value_map.h" |
20 #include "policy/policy_constants.h" | 21 #include "policy/policy_constants.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 POLICY_SOURCE_CLOUD, | 117 POLICY_SOURCE_CLOUD, |
117 new base::FundamentalValue(false), | 118 new base::FundamentalValue(false), |
118 NULL); | 119 NULL); |
119 PolicyErrorMap errors; | 120 PolicyErrorMap errors; |
120 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) | 121 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) |
121 .CheckPolicySettings(policy_map, &errors)); | 122 .CheckPolicySettings(policy_map, &errors)); |
122 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); | 123 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); |
123 } | 124 } |
124 | 125 |
125 TEST(ExternalDataPolicyHandlerTest, MissingURL) { | 126 TEST(ExternalDataPolicyHandlerTest, MissingURL) { |
126 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 127 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
127 dict->SetString("hash", "1234567890123456789012345678901234567890"); | 128 dict->SetString("hash", "1234567890123456789012345678901234567890"); |
128 PolicyMap policy_map; | 129 PolicyMap policy_map; |
129 policy_map.Set(key::kUserAvatarImage, | 130 policy_map.Set(key::kUserAvatarImage, |
130 POLICY_LEVEL_MANDATORY, | 131 POLICY_LEVEL_MANDATORY, |
131 POLICY_SCOPE_USER, | 132 POLICY_SCOPE_USER, |
132 POLICY_SOURCE_CLOUD, | 133 POLICY_SOURCE_CLOUD, |
133 dict.release(), | 134 dict.release(), |
134 NULL); | 135 NULL); |
135 PolicyErrorMap errors; | 136 PolicyErrorMap errors; |
136 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) | 137 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) |
137 .CheckPolicySettings(policy_map, &errors)); | 138 .CheckPolicySettings(policy_map, &errors)); |
138 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); | 139 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); |
139 } | 140 } |
140 | 141 |
141 TEST(ExternalDataPolicyHandlerTest, InvalidURL) { | 142 TEST(ExternalDataPolicyHandlerTest, InvalidURL) { |
142 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 143 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
143 dict->SetString("url", "http://"); | 144 dict->SetString("url", "http://"); |
144 dict->SetString("hash", "1234567890123456789012345678901234567890"); | 145 dict->SetString("hash", "1234567890123456789012345678901234567890"); |
145 PolicyMap policy_map; | 146 PolicyMap policy_map; |
146 policy_map.Set(key::kUserAvatarImage, | 147 policy_map.Set(key::kUserAvatarImage, |
147 POLICY_LEVEL_MANDATORY, | 148 POLICY_LEVEL_MANDATORY, |
148 POLICY_SCOPE_USER, | 149 POLICY_SCOPE_USER, |
149 POLICY_SOURCE_CLOUD, | 150 POLICY_SOURCE_CLOUD, |
150 dict.release(), | 151 dict.release(), |
151 NULL); | 152 NULL); |
152 PolicyErrorMap errors; | 153 PolicyErrorMap errors; |
153 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) | 154 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) |
154 .CheckPolicySettings(policy_map, &errors)); | 155 .CheckPolicySettings(policy_map, &errors)); |
155 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); | 156 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); |
156 } | 157 } |
157 | 158 |
158 TEST(ExternalDataPolicyHandlerTest, MissingHash) { | 159 TEST(ExternalDataPolicyHandlerTest, MissingHash) { |
159 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 160 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
160 dict->SetString("url", "http://localhost/"); | 161 dict->SetString("url", "http://localhost/"); |
161 PolicyMap policy_map; | 162 PolicyMap policy_map; |
162 policy_map.Set(key::kUserAvatarImage, | 163 policy_map.Set(key::kUserAvatarImage, |
163 POLICY_LEVEL_MANDATORY, | 164 POLICY_LEVEL_MANDATORY, |
164 POLICY_SCOPE_USER, | 165 POLICY_SCOPE_USER, |
165 POLICY_SOURCE_CLOUD, | 166 POLICY_SOURCE_CLOUD, |
166 dict.release(), | 167 dict.release(), |
167 NULL); | 168 NULL); |
168 PolicyErrorMap errors; | 169 PolicyErrorMap errors; |
169 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) | 170 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) |
170 .CheckPolicySettings(policy_map, &errors)); | 171 .CheckPolicySettings(policy_map, &errors)); |
171 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); | 172 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); |
172 } | 173 } |
173 | 174 |
174 TEST(ExternalDataPolicyHandlerTest, InvalidHash) { | 175 TEST(ExternalDataPolicyHandlerTest, InvalidHash) { |
175 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 176 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
176 dict->SetString("url", "http://localhost/"); | 177 dict->SetString("url", "http://localhost/"); |
177 dict->SetString("hash", "1234"); | 178 dict->SetString("hash", "1234"); |
178 PolicyMap policy_map; | 179 PolicyMap policy_map; |
179 policy_map.Set(key::kUserAvatarImage, | 180 policy_map.Set(key::kUserAvatarImage, |
180 POLICY_LEVEL_MANDATORY, | 181 POLICY_LEVEL_MANDATORY, |
181 POLICY_SCOPE_USER, | 182 POLICY_SCOPE_USER, |
182 POLICY_SOURCE_CLOUD, | 183 POLICY_SOURCE_CLOUD, |
183 dict.release(), | 184 dict.release(), |
184 NULL); | 185 NULL); |
185 PolicyErrorMap errors; | 186 PolicyErrorMap errors; |
186 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) | 187 EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage) |
187 .CheckPolicySettings(policy_map, &errors)); | 188 .CheckPolicySettings(policy_map, &errors)); |
188 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); | 189 EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty()); |
189 } | 190 } |
190 | 191 |
191 TEST(ExternalDataPolicyHandlerTest, Valid) { | 192 TEST(ExternalDataPolicyHandlerTest, Valid) { |
192 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 193 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
193 dict->SetString("url", "http://localhost/"); | 194 dict->SetString("url", "http://localhost/"); |
194 dict->SetString( | 195 dict->SetString( |
195 "hash", | 196 "hash", |
196 "1234567890123456789012345678901234567890123456789012345678901234"); | 197 "1234567890123456789012345678901234567890123456789012345678901234"); |
197 PolicyMap policy_map; | 198 PolicyMap policy_map; |
198 policy_map.Set(key::kUserAvatarImage, | 199 policy_map.Set(key::kUserAvatarImage, |
199 POLICY_LEVEL_MANDATORY, | 200 POLICY_LEVEL_MANDATORY, |
200 POLICY_SCOPE_USER, | 201 POLICY_SCOPE_USER, |
201 POLICY_SOURCE_CLOUD, | 202 POLICY_SOURCE_CLOUD, |
202 dict.release(), | 203 dict.release(), |
(...skipping 23 matching lines...) Expand all Loading... |
226 " \"IdleAction\": \"DoNothing\"" | 227 " \"IdleAction\": \"DoNothing\"" |
227 " }," | 228 " }," |
228 " \"LidCloseAction\": \"DoNothing\"," | 229 " \"LidCloseAction\": \"DoNothing\"," |
229 " \"UserActivityScreenDimDelayScale\": 300" | 230 " \"UserActivityScreenDimDelayScale\": 300" |
230 "}"; | 231 "}"; |
231 | 232 |
232 } // namespace | 233 } // namespace |
233 | 234 |
234 TEST(NetworkConfigurationPolicyHandlerTest, Empty) { | 235 TEST(NetworkConfigurationPolicyHandlerTest, Empty) { |
235 PolicyMap policy_map; | 236 PolicyMap policy_map; |
236 scoped_ptr<NetworkConfigurationPolicyHandler> handler( | 237 std::unique_ptr<NetworkConfigurationPolicyHandler> handler( |
237 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); | 238 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); |
238 PolicyErrorMap errors; | 239 PolicyErrorMap errors; |
239 EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors)); | 240 EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors)); |
240 EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); | 241 EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); |
241 } | 242 } |
242 | 243 |
243 TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) { | 244 TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) { |
244 const std::string kTestONC( | 245 const std::string kTestONC( |
245 "{" | 246 "{" |
246 " \"NetworkConfigurations\": [{" | 247 " \"NetworkConfigurations\": [{" |
247 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," | 248 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," |
248 " \"Type\": \"WiFi\"," | 249 " \"Type\": \"WiFi\"," |
249 " \"Name\": \"some name\"," | 250 " \"Name\": \"some name\"," |
250 " \"WiFi\": {" | 251 " \"WiFi\": {" |
251 " \"Security\": \"WEP-PSK\"," | 252 " \"Security\": \"WEP-PSK\"," |
252 " \"SSID\": \"ssid\"," | 253 " \"SSID\": \"ssid\"," |
253 " \"Passphrase\": \"pass\"," | 254 " \"Passphrase\": \"pass\"," |
254 " }" | 255 " }" |
255 " }]" | 256 " }]" |
256 "}"); | 257 "}"); |
257 | 258 |
258 PolicyMap policy_map; | 259 PolicyMap policy_map; |
259 policy_map.Set(key::kOpenNetworkConfiguration, | 260 policy_map.Set(key::kOpenNetworkConfiguration, |
260 POLICY_LEVEL_MANDATORY, | 261 POLICY_LEVEL_MANDATORY, |
261 POLICY_SCOPE_USER, | 262 POLICY_SCOPE_USER, |
262 POLICY_SOURCE_CLOUD, | 263 POLICY_SOURCE_CLOUD, |
263 new base::StringValue(kTestONC), | 264 new base::StringValue(kTestONC), |
264 NULL); | 265 NULL); |
265 scoped_ptr<NetworkConfigurationPolicyHandler> handler( | 266 std::unique_ptr<NetworkConfigurationPolicyHandler> handler( |
266 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); | 267 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); |
267 PolicyErrorMap errors; | 268 PolicyErrorMap errors; |
268 EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors)); | 269 EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors)); |
269 EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); | 270 EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); |
270 } | 271 } |
271 | 272 |
272 TEST(NetworkConfigurationPolicyHandlerTest, WrongType) { | 273 TEST(NetworkConfigurationPolicyHandlerTest, WrongType) { |
273 PolicyMap policy_map; | 274 PolicyMap policy_map; |
274 policy_map.Set(key::kOpenNetworkConfiguration, | 275 policy_map.Set(key::kOpenNetworkConfiguration, |
275 POLICY_LEVEL_MANDATORY, | 276 POLICY_LEVEL_MANDATORY, |
276 POLICY_SCOPE_USER, | 277 POLICY_SCOPE_USER, |
277 POLICY_SOURCE_CLOUD, | 278 POLICY_SOURCE_CLOUD, |
278 new base::FundamentalValue(false), | 279 new base::FundamentalValue(false), |
279 NULL); | 280 NULL); |
280 scoped_ptr<NetworkConfigurationPolicyHandler> handler( | 281 std::unique_ptr<NetworkConfigurationPolicyHandler> handler( |
281 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); | 282 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); |
282 PolicyErrorMap errors; | 283 PolicyErrorMap errors; |
283 EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors)); | 284 EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors)); |
284 EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); | 285 EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); |
285 } | 286 } |
286 | 287 |
287 TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) { | 288 TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) { |
288 const std::string kTestONC("I'm not proper JSON!"); | 289 const std::string kTestONC("I'm not proper JSON!"); |
289 PolicyMap policy_map; | 290 PolicyMap policy_map; |
290 policy_map.Set(key::kOpenNetworkConfiguration, | 291 policy_map.Set(key::kOpenNetworkConfiguration, |
291 POLICY_LEVEL_MANDATORY, | 292 POLICY_LEVEL_MANDATORY, |
292 POLICY_SCOPE_USER, | 293 POLICY_SCOPE_USER, |
293 POLICY_SOURCE_CLOUD, | 294 POLICY_SOURCE_CLOUD, |
294 new base::StringValue(kTestONC), | 295 new base::StringValue(kTestONC), |
295 NULL); | 296 NULL); |
296 scoped_ptr<NetworkConfigurationPolicyHandler> handler( | 297 std::unique_ptr<NetworkConfigurationPolicyHandler> handler( |
297 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); | 298 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); |
298 PolicyErrorMap errors; | 299 PolicyErrorMap errors; |
299 EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors)); | 300 EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors)); |
300 EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); | 301 EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty()); |
301 } | 302 } |
302 | 303 |
303 TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) { | 304 TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) { |
304 const std::string kTestONC( | 305 const std::string kTestONC( |
305 "{" | 306 "{" |
306 " \"NetworkConfigurations\": [{" | 307 " \"NetworkConfigurations\": [{" |
307 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," | 308 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," |
308 " \"Type\": \"WiFi\"," | 309 " \"Type\": \"WiFi\"," |
309 " \"Name\": \"some name\"," | 310 " \"Name\": \"some name\"," |
310 " \"WiFi\": {" | 311 " \"WiFi\": {" |
311 " \"Security\": \"WEP-PSK\"," | 312 " \"Security\": \"WEP-PSK\"," |
312 " \"SSID\": \"ssid\"," | 313 " \"SSID\": \"ssid\"," |
313 " \"Passphrase\": \"pass\"," | 314 " \"Passphrase\": \"pass\"," |
314 " }" | 315 " }" |
315 " }]" | 316 " }]" |
316 "}"); | 317 "}"); |
317 | 318 |
318 PolicyMap policy_map; | 319 PolicyMap policy_map; |
319 policy_map.Set(key::kOpenNetworkConfiguration, | 320 policy_map.Set(key::kOpenNetworkConfiguration, |
320 POLICY_LEVEL_MANDATORY, | 321 POLICY_LEVEL_MANDATORY, |
321 POLICY_SCOPE_USER, | 322 POLICY_SCOPE_USER, |
322 POLICY_SOURCE_CLOUD, | 323 POLICY_SOURCE_CLOUD, |
323 new base::StringValue(kTestONC), | 324 new base::StringValue(kTestONC), |
324 NULL); | 325 NULL); |
325 scoped_ptr<NetworkConfigurationPolicyHandler> handler( | 326 std::unique_ptr<NetworkConfigurationPolicyHandler> handler( |
326 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); | 327 NetworkConfigurationPolicyHandler::CreateForUserPolicy()); |
327 PolicyErrorMap errors; | 328 PolicyErrorMap errors; |
328 handler->PrepareForDisplaying(&policy_map); | 329 handler->PrepareForDisplaying(&policy_map); |
329 const base::Value* sanitized = | 330 const base::Value* sanitized = |
330 policy_map.GetValue(key::kOpenNetworkConfiguration); | 331 policy_map.GetValue(key::kOpenNetworkConfiguration); |
331 ASSERT_TRUE(sanitized); | 332 ASSERT_TRUE(sanitized); |
332 std::string sanitized_onc; | 333 std::string sanitized_onc; |
333 EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc)); | 334 EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc)); |
334 EXPECT_FALSE(sanitized_onc.empty()); | 335 EXPECT_FALSE(sanitized_onc.empty()); |
335 EXPECT_EQ(std::string::npos, sanitized_onc.find("pass")); | 336 EXPECT_EQ(std::string::npos, sanitized_onc.find("pass")); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 new base::FundamentalValue(false), | 396 new base::FundamentalValue(false), |
396 NULL); | 397 NULL); |
397 LoginScreenPowerManagementPolicyHandler handler(chrome_schema_); | 398 LoginScreenPowerManagementPolicyHandler handler(chrome_schema_); |
398 PolicyErrorMap errors; | 399 PolicyErrorMap errors; |
399 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); | 400 EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); |
400 EXPECT_FALSE( | 401 EXPECT_FALSE( |
401 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty()); | 402 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty()); |
402 } | 403 } |
403 | 404 |
404 } // namespace policy | 405 } // namespace policy |
OLD | NEW |