configuration_policy_handler_chromeos_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.h"
6
7#include "base/callback.h"
8#include "base/prefs/pref_value_map.h"
9#include "base/values.h"
10#include "chrome/browser/policy/policy_error_map.h"
11#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
12#include "chrome/common/pref_names.h"
13#include "components/policy/core/common/external_data_fetcher.h"
14#include "components/policy/core/common/policy_map.h"
15#include "policy/policy_constants.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace policy {
19
20namespace {
21
22// Test cases for the screen magnifier type policy setting.
23class ScreenMagnifierPolicyHandlerTest : public testing::Test {
24 protected:
25  PolicyMap policy_;
26  PrefValueMap prefs_;
27  ScreenMagnifierPolicyHandler handler_;
28};
29
30TEST_F(ScreenMagnifierPolicyHandlerTest, Default) {
31  handler_.ApplyPolicySettings(policy_, &prefs_);
32  EXPECT_FALSE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, NULL));
33  EXPECT_FALSE(prefs_.GetValue(prefs::kScreenMagnifierType, NULL));
34}
35
36TEST_F(ScreenMagnifierPolicyHandlerTest, Disabled) {
37  policy_.Set(key::kScreenMagnifierType,
38              POLICY_LEVEL_MANDATORY,
39              POLICY_SCOPE_USER,
40              base::Value::CreateIntegerValue(0),
41              NULL);
42  handler_.ApplyPolicySettings(policy_, &prefs_);
43
44  const base::Value* enabled = NULL;
45  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, &enabled));
46  ASSERT_TRUE(enabled);
47  EXPECT_TRUE(base::FundamentalValue(false).Equals(enabled));
48
49  const base::Value* type = NULL;
50  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierType, &type));
51  ASSERT_TRUE(type);
52  EXPECT_TRUE(base::FundamentalValue(0).Equals(type));
53}
54
55TEST_F(ScreenMagnifierPolicyHandlerTest, Enabled) {
56  policy_.Set(key::kScreenMagnifierType,
57              POLICY_LEVEL_MANDATORY,
58              POLICY_SCOPE_USER,
59              base::Value::CreateIntegerValue(1),
60              NULL);
61  handler_.ApplyPolicySettings(policy_, &prefs_);
62
63  const base::Value* enabled = NULL;
64  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierEnabled, &enabled));
65  ASSERT_TRUE(enabled);
66  EXPECT_TRUE(base::FundamentalValue(true).Equals(enabled));
67
68  const base::Value* type = NULL;
69  EXPECT_TRUE(prefs_.GetValue(prefs::kScreenMagnifierType, &type));
70  ASSERT_TRUE(type);
71  EXPECT_TRUE(base::FundamentalValue(1).Equals(type));
72}
73
74const char kLoginScreenPowerManagementPolicy[] =
75    "{"
76    "  \"AC\": {"
77    "    \"Delays\": {"
78    "      \"ScreenDim\": 5000,"
79    "      \"ScreenOff\": 7000,"
80    "      \"Idle\": 9000"
81    "    },"
82    "    \"IdleAction\": \"DoNothing\""
83    "  },"
84    "  \"Battery\": {"
85    "    \"Delays\": {"
86    "      \"ScreenDim\": 1000,"
87    "      \"ScreenOff\": 3000,"
88    "      \"Idle\": 4000"
89    "    },"
90    "    \"IdleAction\": \"DoNothing\""
91    "  },"
92    "  \"LidCloseAction\": \"DoNothing\","
93    "  \"UserActivityScreenDimDelayScale\": 300"
94    "}";
95
96}  // namespace
97
98TEST(NetworkConfigurationPolicyHandlerTest, Empty) {
99  PolicyMap policy_map;
100  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
101      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
102  PolicyErrorMap errors;
103  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
104  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
105}
106
107TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) {
108  const std::string kTestONC(
109      "{"
110      "  \"NetworkConfigurations\": [{"
111      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
112      "    \"Type\": \"WiFi\","
113      "    \"Name\": \"some name\","
114      "    \"WiFi\": {"
115      "      \"Security\": \"WEP-PSK\","
116      "      \"SSID\": \"ssid\","
117      "      \"Passphrase\": \"pass\","
118      "    }"
119      "  }]"
120      "}");
121
122  PolicyMap policy_map;
123  policy_map.Set(key::kOpenNetworkConfiguration,
124                 POLICY_LEVEL_MANDATORY,
125                 POLICY_SCOPE_USER,
126                 Value::CreateStringValue(kTestONC),
127                 NULL);
128  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
129      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
130  PolicyErrorMap errors;
131  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
132  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
133}
134
135TEST(NetworkConfigurationPolicyHandlerTest, WrongType) {
136  PolicyMap policy_map;
137  policy_map.Set(key::kOpenNetworkConfiguration,
138                 POLICY_LEVEL_MANDATORY,
139                 POLICY_SCOPE_USER,
140                 Value::CreateBooleanValue(false),
141                 NULL);
142  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
143      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
144  PolicyErrorMap errors;
145  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
146  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
147}
148
149TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) {
150  const std::string kTestONC("I'm not proper JSON!");
151  PolicyMap policy_map;
152  policy_map.Set(key::kOpenNetworkConfiguration,
153                 POLICY_LEVEL_MANDATORY,
154                 POLICY_SCOPE_USER,
155                 Value::CreateStringValue(kTestONC),
156                 NULL);
157  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
158      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
159  PolicyErrorMap errors;
160  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
161  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
162}
163
164TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) {
165  const std::string kTestONC(
166      "{"
167      "  \"NetworkConfigurations\": [{"
168      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
169      "    \"Type\": \"WiFi\","
170      "    \"Name\": \"some name\","
171      "    \"WiFi\": {"
172      "      \"Security\": \"WEP-PSK\","
173      "      \"SSID\": \"ssid\","
174      "      \"Passphrase\": \"pass\","
175      "    }"
176      "  }]"
177      "}");
178
179  PolicyMap policy_map;
180  policy_map.Set(key::kOpenNetworkConfiguration,
181                 POLICY_LEVEL_MANDATORY,
182                 POLICY_SCOPE_USER,
183                 Value::CreateStringValue(kTestONC),
184                 NULL);
185  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
186      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
187  PolicyErrorMap errors;
188  handler->PrepareForDisplaying(&policy_map);
189  const Value* sanitized = policy_map.GetValue(key::kOpenNetworkConfiguration);
190  ASSERT_TRUE(sanitized);
191  std::string sanitized_onc;
192  EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc));
193  EXPECT_FALSE(sanitized_onc.empty());
194  EXPECT_EQ(std::string::npos, sanitized_onc.find("pass"));
195}
196
197TEST(PinnedLauncherAppsPolicyHandler, PrefTranslation) {
198  base::ListValue list;
199  PolicyMap policy_map;
200  PrefValueMap prefs;
201  base::ListValue expected_pinned_apps;
202  base::Value* value = NULL;
203  PinnedLauncherAppsPolicyHandler handler;
204
205  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
206                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
207  handler.ApplyPolicySettings(policy_map, &prefs);
208  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
209  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
210
211  base::StringValue entry1("abcdefghijklmnopabcdefghijklmnop");
212  base::DictionaryValue* entry1_dict = new base::DictionaryValue();
213  entry1_dict->Set(ash::kPinnedAppsPrefAppIDPath, entry1.DeepCopy());
214  expected_pinned_apps.Append(entry1_dict);
215  list.Append(entry1.DeepCopy());
216  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
217                 POLICY_SCOPE_USER, list.DeepCopy(), NULL);
218  prefs.Clear();
219  handler.ApplyPolicySettings(policy_map, &prefs);
220  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
221  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
222}
223
224TEST(LoginScreenPowerManagementPolicyHandlerTest, Empty) {
225  PolicyMap policy_map;
226  LoginScreenPowerManagementPolicyHandler handler;
227  PolicyErrorMap errors;
228  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
229  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
230}
231
232TEST(LoginScreenPowerManagementPolicyHandlerTest, ValidPolicy) {
233  PolicyMap policy_map;
234  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
235                 POLICY_LEVEL_MANDATORY,
236                 POLICY_SCOPE_USER,
237                 Value::CreateStringValue(kLoginScreenPowerManagementPolicy),
238                 NULL);
239  LoginScreenPowerManagementPolicyHandler handler;
240  PolicyErrorMap errors;
241  EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
242  EXPECT_TRUE(errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
243}
244
245TEST(LoginScreenPowerManagementPolicyHandlerTest, WrongType) {
246  PolicyMap policy_map;
247  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
248                 POLICY_LEVEL_MANDATORY,
249                 POLICY_SCOPE_USER,
250                 Value::CreateBooleanValue(false),
251                 NULL);
252  LoginScreenPowerManagementPolicyHandler handler;
253  PolicyErrorMap errors;
254  EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
255  EXPECT_FALSE(
256      errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
257}
258
259TEST(LoginScreenPowerManagementPolicyHandlerTest, JSONParseError) {
260  const std::string policy("I'm not proper JSON!");
261  PolicyMap policy_map;
262  policy_map.Set(key::kDeviceLoginScreenPowerManagement,
263                 POLICY_LEVEL_MANDATORY,
264                 POLICY_SCOPE_USER,
265                 Value::CreateStringValue(policy),
266                 NULL);
267  LoginScreenPowerManagementPolicyHandler handler;
268  PolicyErrorMap errors;
269  EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors));
270  EXPECT_FALSE(
271      errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
272}
273
274}  // namespace policy
275