configuration_policy_handler_chromeos_unittest.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/callback.h"
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_value_map.h"
101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/values.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/policy_error_map.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/external_data_fetcher.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "policy/policy_constants.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace {
229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Test cases for the screen magnifier type policy setting.
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class ScreenMagnifierPolicyHandlerTest : public testing::Test {
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) protected:
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PolicyMap policy_;
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PrefValueMap prefs_;
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ScreenMagnifierPolicyHandler handler_;
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)};
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Default) {
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_FALSE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, NULL));
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_FALSE(prefs_.GetValue(prefs::kScreenMagnifierType, NULL));
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Disabled) {
381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy_.Set(key::kScreenMagnifierType,
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_LEVEL_MANDATORY,
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_SCOPE_USER,
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              base::Value::CreateIntegerValue(0),
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              NULL);
431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* enabled = NULL;
461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, &enabled));
471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(enabled);
481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(false).Equals(enabled));
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* type = NULL;
511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierType, &type));
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(type);
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(0).Equals(type));
541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Enabled) {
571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy_.Set(key::kScreenMagnifierType,
581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_LEVEL_MANDATORY,
591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_SCOPE_USER,
601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              base::Value::CreateIntegerValue(1),
611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              NULL);
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* enabled = NULL;
651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, &enabled));
661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(enabled);
671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(true).Equals(enabled));
681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* type = NULL;
701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierType, &type));
711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(type);
721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(1).Equals(type));
731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, Empty) {
76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(ExternalDataPolicyHandler(key::kUserAvatarImage)
78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                  .CheckPolicySettings(PolicyMap(), &errors));
79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kUserAvatarImage).empty());
80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, WrongType) {
83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 new base::FundamentalValue(false),
88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, MissingURL) {
96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234567890123456789012345678901234567890");
98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, InvalidURL) {
111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://");
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234567890123456789012345678901234567890");
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, MissingHash) {
127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
132a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
137a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
141a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, InvalidHash) {
142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
144a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234");
145a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
151a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
152a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
155a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, Valid) {
158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  dict->SetString(
1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      "hash",
1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      "1234567890123456789012345678901234567890123456789012345678901234");
163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(ExternalDataPolicyHandler(key::kUserAvatarImage)
171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                  .CheckPolicySettings(policy_map, &errors));
172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kUserAvatarImage).empty());
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochconst char kLoginScreenPowerManagementPolicy[] =
1769ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "{"
1779ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"AC\": {"
1789ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"Delays\": {"
1799ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenDim\": 5000,"
1809ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenOff\": 7000,"
1819ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"Idle\": 9000"
1829ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    },"
1839ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"IdleAction\": \"DoNothing\""
1849ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  },"
1859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"Battery\": {"
1869ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"Delays\": {"
1879ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenDim\": 1000,"
1889ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenOff\": 3000,"
1899ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"Idle\": 4000"
1909ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    },"
1919ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"IdleAction\": \"DoNothing\""
1929ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  },"
1939ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"LidCloseAction\": \"DoNothing\","
1949ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"UserActivityScreenDimDelayScale\": 300"
1959ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "}";
1969ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
1979ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}  // namespace
1989ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, Empty) {
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) {
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC(
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "{"
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  \"NetworkConfigurations\": [{"
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"Type\": \"WiFi\","
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "    \"Name\": \"some name\","
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"WiFi\": {"
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "      \"Security\": \"WEP-PSK\","
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"SSID\": \"ssid\","
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"Passphrase\": \"pass\","
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    }"
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  }]"
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "}");
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateStringValue(kTestONC),
2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, WrongType) {
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateBooleanValue(false),
2427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) {
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC("I'm not proper JSON!");
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
2565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateStringValue(kTestONC),
2577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) {
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC(
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "{"
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  \"NetworkConfigurations\": [{"
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"Type\": \"WiFi\","
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "    \"Name\": \"some name\","
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"WiFi\": {"
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "      \"Security\": \"WEP-PSK\","
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"SSID\": \"ssid\","
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"Passphrase\": \"pass\","
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    }"
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  }]"
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "}");
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateStringValue(kTestONC),
2857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  handler->PrepareForDisplaying(&policy_map);
2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  const base::Value* sanitized =
2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      policy_map.GetValue(key::kOpenNetworkConfiguration);
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(sanitized);
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string sanitized_onc;
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc));
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(sanitized_onc.empty());
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, sanitized_onc.find("pass"));
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(PinnedLauncherAppsPolicyHandler, PrefTranslation) {
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::ListValue list;
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefValueMap prefs;
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::ListValue expected_pinned_apps;
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Value* value = NULL;
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PinnedLauncherAppsPolicyHandler handler;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
3087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handler.ApplyPolicySettings(policy_map, &prefs);
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StringValue entry1("abcdefghijklmnopabcdefghijklmnop");
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::DictionaryValue* entry1_dict = new base::DictionaryValue();
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry1_dict->Set(ash::kPinnedAppsPrefAppIDPath, entry1.DeepCopy());
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  expected_pinned_apps.Append(entry1_dict);
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  list.Append(entry1.DeepCopy());
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
3197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prefs.Clear();
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handler.ApplyPolicySettings(policy_map, &prefs);
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST(LoginScreenPowerManagementPolicyHandlerTest, Empty) {
3279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  LoginScreenPowerManagementPolicyHandler handler;
3299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
3319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
3349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST(LoginScreenPowerManagementPolicyHandlerTest, ValidPolicy) {
3359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  policy_map.Set(
3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      key::kDeviceLoginScreenPowerManagement,
3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      POLICY_LEVEL_MANDATORY,
3395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      POLICY_SCOPE_USER,
3405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::Value::CreateStringValue(kLoginScreenPowerManagementPolicy),
3415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      NULL);
3429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  LoginScreenPowerManagementPolicyHandler handler;
3439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
3459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
3489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST(LoginScreenPowerManagementPolicyHandlerTest, WrongType) {
3499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
3519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_LEVEL_MANDATORY,
3529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_SCOPE_USER,
3535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateBooleanValue(false),
3549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 NULL);
3559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  LoginScreenPowerManagementPolicyHandler handler;
3569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
3589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(
3599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
3629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST(LoginScreenPowerManagementPolicyHandlerTest, JSONParseError) {
3639ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  const std::string policy("I'm not proper JSON!");
3649ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
3669ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_LEVEL_MANDATORY,
3679ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_SCOPE_USER,
3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 base::Value::CreateStringValue(policy),
3699ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 NULL);
3709ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  LoginScreenPowerManagementPolicyHandler handler;
3719ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3729ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
3739ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(
3749ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3769ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace policy
378