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