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