// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/policy/policy_transformations.h" #include "base/memory/scoped_ptr.h" #include "base/values.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_map.h" #include "policy/policy_constants.h" #include "testing/gtest/include/gtest/gtest.h" namespace policy { TEST(PolicyTransformationsTest, FixDeprecatedPolicies) { PolicyBundle policy_bundle; PolicyMap& policy_map = policy_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); // Individual proxy policy values in the Chrome namespace should be collected // into a dictionary. policy_map.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, base::Value::CreateIntegerValue(3), NULL); // Both these policies should be ignored, since there's a higher priority // policy available. policy_map.Set(key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, base::Value::CreateStringValue("pac_script"), NULL); policy_map.Set(key::kProxyPacUrl, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, base::Value::CreateStringValue("http://example.com/wpad.dat"), NULL); // Add a value to a non-Chrome namespace. policy_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, std::string())) .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, base::Value::CreateIntegerValue(3), NULL); PolicyBundle actual_bundle; actual_bundle.CopyFrom(policy_bundle); FixDeprecatedPolicies(&actual_bundle); PolicyBundle expected_bundle; // The resulting Chrome namespace map should have the collected policy. PolicyMap& expected_map = expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); scoped_ptr expected_value(new base::DictionaryValue); expected_value->SetInteger(key::kProxyServerMode, 3); expected_map.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, expected_value.release(), NULL); // The resulting Extensions namespace map shouldn't have been modified. expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, std::string())) .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, base::Value::CreateIntegerValue(3), NULL); EXPECT_TRUE(expected_bundle.Equals(actual_bundle)); } } // namespace policy