| Index: chrome/browser/policy/policy_map_unittest.cc
|
| diff --git a/chrome/browser/policy/policy_map_unittest.cc b/chrome/browser/policy/policy_map_unittest.cc
|
| index eb54400c66c5da051813ae6b118ead03d048134e..a2f6207713a4e367ba7d94e0f33332b91ff0cd43 100644
|
| --- a/chrome/browser/policy/policy_map_unittest.cc
|
| +++ b/chrome/browser/policy/policy_map_unittest.cc
|
| @@ -1,35 +1,55 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2012 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_map.h"
|
|
|
| +#include <set>
|
| +#include <string>
|
| +
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "policy/configuration_policy_type.h"
|
| +#include "policy/policy_constants.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace policy {
|
|
|
| +namespace {
|
| +
|
| +// Utility function for the tests.
|
| +void SetPolicy(PolicyMap* map, const char* name, Value* value) {
|
| + map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, value);
|
| +}
|
| +
|
| TEST(PolicyMapTest, SetAndGet) {
|
| PolicyMap map;
|
| - map.Set(kPolicyHomepageLocation, Value::CreateStringValue("aaa"));
|
| + SetPolicy(&map, key::kHomepageLocation, Value::CreateStringValue("aaa"));
|
| StringValue expected("aaa");
|
| - EXPECT_TRUE(expected.Equals(map.Get(kPolicyHomepageLocation)));
|
| - map.Set(kPolicyHomepageLocation, Value::CreateStringValue("bbb"));
|
| + EXPECT_TRUE(expected.Equals(map.GetValue(key::kHomepageLocation)));
|
| + SetPolicy(&map, key::kHomepageLocation, Value::CreateStringValue("bbb"));
|
| StringValue expected_b("bbb");
|
| - EXPECT_TRUE(expected_b.Equals(map.Get(kPolicyHomepageLocation)));
|
| + EXPECT_TRUE(expected_b.Equals(map.GetValue(key::kHomepageLocation)));
|
| + const PolicyMap::Entry* entry = map.Get(key::kHomepageLocation);
|
| + ASSERT_TRUE(entry != NULL);
|
| + EXPECT_EQ(POLICY_LEVEL_MANDATORY, entry->level);
|
| + EXPECT_EQ(POLICY_SCOPE_USER, entry->scope);
|
| + map.Set(key::kHomepageLocation, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_MACHINE, NULL);
|
| + entry = map.Get(key::kHomepageLocation);
|
| + ASSERT_TRUE(entry != NULL);
|
| + EXPECT_EQ(POLICY_LEVEL_RECOMMENDED, entry->level);
|
| + EXPECT_EQ(POLICY_SCOPE_MACHINE, entry->scope);
|
| }
|
|
|
| TEST(PolicyMapTest, Equals) {
|
| PolicyMap a;
|
| - a.Set(kPolicyHomepageLocation, Value::CreateStringValue("aaa"));
|
| + SetPolicy(&a, key::kHomepageLocation, Value::CreateStringValue("aaa"));
|
| PolicyMap a2;
|
| - a2.Set(kPolicyHomepageLocation, Value::CreateStringValue("aaa"));
|
| + SetPolicy(&a2, key::kHomepageLocation, Value::CreateStringValue("aaa"));
|
| PolicyMap b;
|
| - b.Set(kPolicyHomepageLocation, Value::CreateStringValue("bbb"));
|
| + SetPolicy(&b, key::kHomepageLocation, Value::CreateStringValue("bbb"));
|
| PolicyMap c;
|
| - c.Set(kPolicyHomepageLocation, Value::CreateStringValue("aaa"));
|
| - c.Set(kPolicyHomepageIsNewTabPage, Value::CreateBooleanValue(true));
|
| + SetPolicy(&c, key::kHomepageLocation, Value::CreateStringValue("aaa"));
|
| + SetPolicy(&c, key::kHomepageIsNewTabPage, Value::CreateBooleanValue(true));
|
| EXPECT_FALSE(a.Equals(b));
|
| EXPECT_FALSE(b.Equals(a));
|
| EXPECT_FALSE(a.Equals(c));
|
| @@ -46,17 +66,17 @@ TEST(PolicyMapTest, Equals) {
|
|
|
| TEST(PolicyMapTest, Swap) {
|
| PolicyMap a;
|
| - a.Set(kPolicyHomepageLocation, Value::CreateStringValue("aaa"));
|
| + SetPolicy(&a, key::kHomepageLocation, Value::CreateStringValue("aaa"));
|
| PolicyMap b;
|
| - b.Set(kPolicyHomepageLocation, Value::CreateStringValue("bbb"));
|
| - b.Set(kPolicyHomepageIsNewTabPage, Value::CreateBooleanValue(true));
|
| + SetPolicy(&b, key::kHomepageLocation, Value::CreateStringValue("bbb"));
|
| + SetPolicy(&b, key::kHomepageIsNewTabPage, Value::CreateBooleanValue(true));
|
| a.Swap(&b);
|
| base::StringValue expected("bbb");
|
| - EXPECT_TRUE(expected.Equals(a.Get(kPolicyHomepageLocation)));
|
| + EXPECT_TRUE(expected.Equals(a.GetValue(key::kHomepageLocation)));
|
| base::FundamentalValue expected_bool(true);
|
| - EXPECT_TRUE(expected_bool.Equals(a.Get(kPolicyHomepageIsNewTabPage)));
|
| + EXPECT_TRUE(expected_bool.Equals(a.GetValue(key::kHomepageIsNewTabPage)));
|
| StringValue expected_a("aaa");
|
| - EXPECT_TRUE(expected_a.Equals(b.Get(kPolicyHomepageLocation)));
|
| + EXPECT_TRUE(expected_a.Equals(b.GetValue(key::kHomepageLocation)));
|
|
|
| b.Clear();
|
| a.Swap(&b);
|
| @@ -65,4 +85,98 @@ TEST(PolicyMapTest, Swap) {
|
| EXPECT_FALSE(b.Equals(empty));
|
| }
|
|
|
| +TEST(PolicyMapTest, MergeFrom) {
|
| + PolicyMap a;
|
| + a.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| + Value::CreateStringValue("google.com"));
|
| + a.Set(key::kShowHomeButton, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(true));
|
| + a.Set(key::kBookmarkBarEnabled, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(false));
|
| + a.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_MACHINE, Value::CreateStringValue("google.com/q={x}"));
|
| +
|
| + PolicyMap b;
|
| + b.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateStringValue("chromium.org"));
|
| + b.Set(key::kShowHomeButton, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(false));
|
| + b.Set(key::kBookmarkBarEnabled, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_MACHINE, Value::CreateBooleanValue(true));
|
| + b.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE, Value::CreateStringValue(""));
|
| + b.Set(key::kDisableSpdy, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(true));
|
| +
|
| + a.MergeFrom(b);
|
| +
|
| + PolicyMap c;
|
| + // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER.
|
| + c.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateStringValue("chromium.org"));
|
| + // |a| has precedence over |b|.
|
| + c.Set(key::kShowHomeButton, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(true));
|
| + // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER for POLICY_LEVEL_RECOMMENDED.
|
| + c.Set(key::kBookmarkBarEnabled, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_MACHINE, Value::CreateBooleanValue(true));
|
| + // POLICY_LEVEL_MANDATORY over POLICY_LEVEL_RECOMMENDED.
|
| + c.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE, Value::CreateStringValue(""));
|
| + // Merge new ones.
|
| + c.Set(key::kDisableSpdy, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(true));
|
| +
|
| + EXPECT_TRUE(a.Equals(c));
|
| +}
|
| +
|
| +TEST(PolicyMapTest, GetDifferingKeys) {
|
| + PolicyMap a;
|
| + a.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| + Value::CreateStringValue("google.com"));
|
| + a.Set(key::kShowHomeButton, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(true));
|
| + a.Set(key::kBookmarkBarEnabled, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(false));
|
| + a.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_MACHINE, Value::CreateStringValue("google.com/q={x}"));
|
| + a.Set(key::kDisable3DAPIs, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(true));
|
| +
|
| + PolicyMap b;
|
| + b.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| + Value::CreateStringValue("google.com"));
|
| + b.Set(key::kShowHomeButton, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(false));
|
| + b.Set(key::kBookmarkBarEnabled, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(false));
|
| + b.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_RECOMMENDED,
|
| + POLICY_SCOPE_USER, Value::CreateStringValue("google.com/q={x}"));
|
| + b.Set(key::kDisableSpdy, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
|
| + Value::CreateBooleanValue(true));
|
| +
|
| + std::set<std::string> diff;
|
| + std::set<std::string> diff2;
|
| + a.GetDifferingKeys(b, &diff);
|
| + b.GetDifferingKeys(a, &diff2);
|
| + // Order shouldn't matter.
|
| + EXPECT_EQ(diff, diff2);
|
| + // No change.
|
| + EXPECT_TRUE(diff.find(key::kHomepageLocation) == diff.end());
|
| + // Different values.
|
| + EXPECT_TRUE(diff.find(key::kShowHomeButton) != diff.end());
|
| + // Different levels.
|
| + EXPECT_TRUE(diff.find(key::kBookmarkBarEnabled) != diff.end());
|
| + // Different scopes.
|
| + EXPECT_TRUE(diff.find(key::kDefaultSearchProviderSearchURL) != diff.end());
|
| + // Not in |a|.
|
| + EXPECT_TRUE(diff.find(key::kDisableSpdy) != diff.end());
|
| + // Not in |b|.
|
| + EXPECT_TRUE(diff.find(key::kDisable3DAPIs) != diff.end());
|
| + // No surprises.
|
| + EXPECT_EQ(5u, diff.size());
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| } // namespace policy
|
|
|