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"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/json/json_reader.h"
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_value_map.h"
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/values.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/policy_error_map.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/external_data_fetcher.h"
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h"
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/policy/core/common/schema.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "policy/policy_constants.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace {
249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Test cases for the screen magnifier type policy setting.
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class ScreenMagnifierPolicyHandlerTest : public testing::Test {
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) protected:
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PolicyMap policy_;
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PrefValueMap prefs_;
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ScreenMagnifierPolicyHandler handler_;
311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)};
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass LoginScreenPowerManagementPolicyHandlerTest : public testing::Test {
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch protected:
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  LoginScreenPowerManagementPolicyHandlerTest();
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void SetUp() OVERRIDE;
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  Schema chrome_schema_;
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private:
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  DISALLOW_COPY_AND_ASSIGN(LoginScreenPowerManagementPolicyHandlerTest);
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
45effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochLoginScreenPowerManagementPolicyHandlerTest::
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    LoginScreenPowerManagementPolicyHandlerTest() {
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid LoginScreenPowerManagementPolicyHandlerTest::SetUp() {
50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  chrome_schema_ = Schema::Wrap(GetChromeSchemaData());
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Default) {
541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(
56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      prefs_.GetValue(prefs::kAccessibilityScreenMagnifierEnabled, NULL));
57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(prefs_.GetValue(prefs::kAccessibilityScreenMagnifierType, NULL));
581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Disabled) {
611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy_.Set(key::kScreenMagnifierType,
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_LEVEL_MANDATORY,
631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_SCOPE_USER,
64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch              new base::FundamentalValue(0),
651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              NULL);
661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* enabled = NULL;
69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(
70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      prefs_.GetValue(prefs::kAccessibilityScreenMagnifierEnabled, &enabled));
711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(enabled);
721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(false).Equals(enabled));
731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* type = NULL;
75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kAccessibilityScreenMagnifierType, &type));
761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(type);
771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(0).Equals(type));
781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(ScreenMagnifierPolicyHandlerTest, Enabled) {
811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy_.Set(key::kScreenMagnifierType,
821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_LEVEL_MANDATORY,
831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              POLICY_SCOPE_USER,
84effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch              new base::FundamentalValue(1),
851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)              NULL);
861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler_.ApplyPolicySettings(policy_, &prefs_);
871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* enabled = NULL;
89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(
90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      prefs_.GetValue(prefs::kAccessibilityScreenMagnifierEnabled, &enabled));
911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(enabled);
921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(true).Equals(enabled));
931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* type = NULL;
95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(prefs_.GetValue(prefs::kAccessibilityScreenMagnifierType, &type));
961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(type);
971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(base::FundamentalValue(1).Equals(type));
981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, Empty) {
101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(ExternalDataPolicyHandler(key::kUserAvatarImage)
103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                  .CheckPolicySettings(PolicyMap(), &errors));
104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kUserAvatarImage).empty());
105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, WrongType) {
108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 new base::FundamentalValue(false),
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, MissingURL) {
121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234567890123456789012345678901234567890");
123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
132a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, InvalidURL) {
136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
137a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://");
138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234567890123456789012345678901234567890");
139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
141a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
144a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
145a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
151a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, MissingHash) {
152a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
155a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
161a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, InvalidHash) {
167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("hash", "1234");
170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
177a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(ExternalDataPolicyHandler(key::kUserAvatarImage)
178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   .CheckPolicySettings(policy_map, &errors));
179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kUserAvatarImage).empty());
180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(ExternalDataPolicyHandlerTest, Valid) {
183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  dict->SetString("url", "http://localhost/");
1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  dict->SetString(
1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      "hash",
1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      "1234567890123456789012345678901234567890123456789012345678901234");
188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyMap policy_map;
189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  policy_map.Set(key::kUserAvatarImage,
190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 POLICY_SCOPE_USER,
192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 dict.release(),
193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                 NULL);
194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  PolicyErrorMap errors;
195a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(ExternalDataPolicyHandler(key::kUserAvatarImage)
196a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                  .CheckPolicySettings(policy_map, &errors));
197a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kUserAvatarImage).empty());
198a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
199a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2009ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochconst char kLoginScreenPowerManagementPolicy[] =
2019ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "{"
2029ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"AC\": {"
2039ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"Delays\": {"
2049ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenDim\": 5000,"
2059ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenOff\": 7000,"
2069ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"Idle\": 9000"
2079ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    },"
2089ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"IdleAction\": \"DoNothing\""
2099ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  },"
2109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"Battery\": {"
2119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"Delays\": {"
2129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenDim\": 1000,"
2139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"ScreenOff\": 3000,"
2149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "      \"Idle\": 4000"
2159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    },"
2169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "    \"IdleAction\": \"DoNothing\""
2179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  },"
2189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"LidCloseAction\": \"DoNothing\","
2199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "  \"UserActivityScreenDimDelayScale\": 300"
2209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    "}";
2219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
2229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}  // namespace
2239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, Empty) {
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) {
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC(
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "{"
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  \"NetworkConfigurations\": [{"
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"Type\": \"WiFi\","
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "    \"Name\": \"some name\","
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"WiFi\": {"
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "      \"Security\": \"WEP-PSK\","
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"SSID\": \"ssid\","
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"Passphrase\": \"pass\","
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    }"
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  }]"
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "}");
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
252effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 new base::StringValue(kTestONC),
2537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, WrongType) {
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
266effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 new base::FundamentalValue(false),
2677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) {
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC("I'm not proper JSON!");
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
281effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 new base::StringValue(kTestONC),
2827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) {
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string kTestONC(
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "{"
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  \"NetworkConfigurations\": [{"
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"Type\": \"WiFi\","
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "    \"Name\": \"some name\","
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    \"WiFi\": {"
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      "      \"Security\": \"WEP-PSK\","
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"SSID\": \"ssid\","
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "      \"Passphrase\": \"pass\","
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "    }"
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "  }]"
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "}");
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kOpenNetworkConfiguration,
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_LEVEL_MANDATORY,
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 POLICY_SCOPE_USER,
309effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 new base::StringValue(kTestONC),
3107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 NULL);
311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyErrorMap errors;
314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  handler->PrepareForDisplaying(&policy_map);
3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  const base::Value* sanitized =
3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      policy_map.GetValue(key::kOpenNetworkConfiguration);
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(sanitized);
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string sanitized_onc;
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc));
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(sanitized_onc.empty());
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, sanitized_onc.find("pass"));
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(PinnedLauncherAppsPolicyHandler, PrefTranslation) {
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::ListValue list;
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PolicyMap policy_map;
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefValueMap prefs;
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::ListValue expected_pinned_apps;
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Value* value = NULL;
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PinnedLauncherAppsPolicyHandler handler;
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
3337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handler.ApplyPolicySettings(policy_map, &prefs);
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StringValue entry1("abcdefghijklmnopabcdefghijklmnop");
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::DictionaryValue* entry1_dict = new base::DictionaryValue();
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry1_dict->Set(ash::kPinnedAppsPrefAppIDPath, entry1.DeepCopy());
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  expected_pinned_apps.Append(entry1_dict);
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  list.Append(entry1.DeepCopy());
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
3447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prefs.Clear();
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handler.ApplyPolicySettings(policy_map, &prefs);
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
351effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(LoginScreenPowerManagementPolicyHandlerTest, Empty) {
3529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
353effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  LoginScreenPowerManagementPolicyHandler handler(chrome_schema_);
3549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
3569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
359effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(LoginScreenPowerManagementPolicyHandlerTest, ValidPolicy) {
3609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
3629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_LEVEL_MANDATORY,
3639ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_SCOPE_USER,
364effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 base::JSONReader::Read(kLoginScreenPowerManagementPolicy),
3659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 NULL);
366effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  LoginScreenPowerManagementPolicyHandler handler(chrome_schema_);
3679ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
368effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
369effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3709ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3719ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
372effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(LoginScreenPowerManagementPolicyHandlerTest, WrongType) {
3739ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyMap policy_map;
3749ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
3759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_LEVEL_MANDATORY,
3769ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 POLICY_SCOPE_USER,
377effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                 new base::FundamentalValue(false),
3789ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                 NULL);
379effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  LoginScreenPowerManagementPolicyHandler handler(chrome_schema_);
3809ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PolicyErrorMap errors;
3819ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
3829ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  EXPECT_FALSE(
3839ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
3849ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
3859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace policy
387