configuration_policy_handler_chromeos_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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/prefs/pref_value_map.h"
8#include "chrome/browser/policy/policy_error_map.h"
9#include "chrome/browser/policy/policy_map.h"
10#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
11#include "chrome/common/pref_names.h"
12#include "policy/policy_constants.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15namespace policy {
16
17TEST(NetworkConfigurationPolicyHandlerTest, Empty) {
18  PolicyMap policy_map;
19  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
20      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
21  PolicyErrorMap errors;
22  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
23  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
24}
25
26TEST(NetworkConfigurationPolicyHandlerTest, ValidONC) {
27  const std::string kTestONC(
28      "{"
29      "  \"NetworkConfigurations\": [{"
30      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
31      "    \"Type\": \"WiFi\","
32      "    \"Name\": \"some name\","
33      "    \"WiFi\": {"
34      "      \"Security\": \"WEP-PSK\","
35      "      \"SSID\": \"ssid\","
36      "      \"Passphrase\": \"pass\","
37      "    }"
38      "  }]"
39      "}");
40
41  PolicyMap policy_map;
42  policy_map.Set(key::kOpenNetworkConfiguration,
43                 POLICY_LEVEL_MANDATORY,
44                 POLICY_SCOPE_USER,
45                 Value::CreateStringValue(kTestONC));
46  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
47      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
48  PolicyErrorMap errors;
49  EXPECT_TRUE(handler->CheckPolicySettings(policy_map, &errors));
50  EXPECT_TRUE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
51}
52
53TEST(NetworkConfigurationPolicyHandlerTest, WrongType) {
54  PolicyMap policy_map;
55  policy_map.Set(key::kOpenNetworkConfiguration,
56                 POLICY_LEVEL_MANDATORY,
57                 POLICY_SCOPE_USER,
58                 Value::CreateBooleanValue(false));
59  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
60      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
61  PolicyErrorMap errors;
62  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
63  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
64}
65
66TEST(NetworkConfigurationPolicyHandlerTest, JSONParseError) {
67  const std::string kTestONC("I'm not proper JSON!");
68  PolicyMap policy_map;
69  policy_map.Set(key::kOpenNetworkConfiguration,
70                 POLICY_LEVEL_MANDATORY,
71                 POLICY_SCOPE_USER,
72                 Value::CreateStringValue(kTestONC));
73  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
74      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
75  PolicyErrorMap errors;
76  EXPECT_FALSE(handler->CheckPolicySettings(policy_map, &errors));
77  EXPECT_FALSE(errors.GetErrors(key::kOpenNetworkConfiguration).empty());
78}
79
80TEST(NetworkConfigurationPolicyHandlerTest, Sanitization) {
81  const std::string kTestONC(
82      "{"
83      "  \"NetworkConfigurations\": [{"
84      "    \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
85      "    \"Type\": \"WiFi\","
86      "    \"Name\": \"some name\","
87      "    \"WiFi\": {"
88      "      \"Security\": \"WEP-PSK\","
89      "      \"SSID\": \"ssid\","
90      "      \"Passphrase\": \"pass\","
91      "    }"
92      "  }]"
93      "}");
94
95  PolicyMap policy_map;
96  policy_map.Set(key::kOpenNetworkConfiguration,
97                 POLICY_LEVEL_MANDATORY,
98                 POLICY_SCOPE_USER,
99                 Value::CreateStringValue(kTestONC));
100  scoped_ptr<NetworkConfigurationPolicyHandler> handler(
101      NetworkConfigurationPolicyHandler::CreateForUserPolicy());
102  PolicyErrorMap errors;
103  handler->PrepareForDisplaying(&policy_map);
104  const Value* sanitized = policy_map.GetValue(key::kOpenNetworkConfiguration);
105  ASSERT_TRUE(sanitized);
106  std::string sanitized_onc;
107  EXPECT_TRUE(sanitized->GetAsString(&sanitized_onc));
108  EXPECT_FALSE(sanitized_onc.empty());
109  EXPECT_EQ(std::string::npos, sanitized_onc.find("pass"));
110}
111
112TEST(PinnedLauncherAppsPolicyHandler, PrefTranslation) {
113  base::ListValue list;
114  PolicyMap policy_map;
115  PrefValueMap prefs;
116  base::ListValue expected_pinned_apps;
117  base::Value* value = NULL;
118  PinnedLauncherAppsPolicyHandler handler;
119
120  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
121                 POLICY_SCOPE_USER, list.DeepCopy());
122  handler.ApplyPolicySettings(policy_map, &prefs);
123  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
124  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
125
126  base::StringValue entry1("abcdefghijklmnopabcdefghijklmnop");
127  base::DictionaryValue* entry1_dict = new base::DictionaryValue();
128  entry1_dict->Set(ash::kPinnedAppsPrefAppIDPath, entry1.DeepCopy());
129  expected_pinned_apps.Append(entry1_dict);
130  list.Append(entry1.DeepCopy());
131  policy_map.Set(key::kPinnedLauncherApps, POLICY_LEVEL_MANDATORY,
132                 POLICY_SCOPE_USER, list.DeepCopy());
133  prefs.Clear();
134  handler.ApplyPolicySettings(policy_map, &prefs);
135  EXPECT_TRUE(prefs.GetValue(prefs::kPinnedLauncherApps, &value));
136  EXPECT_TRUE(base::Value::Equals(&expected_pinned_apps, value));
137}
138
139}  // namespace policy
140