Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6705)

Unified Diff: chrome/browser/policy/schema_map_unittest.cc

Issue 78453005: Move PolicySchema and PolicySchemaRegistry to components/policy/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: export nested class on win Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/policy/schema_map.cc ('k') | chrome/browser/policy/schema_registry.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/schema_map_unittest.cc
diff --git a/chrome/browser/policy/schema_map_unittest.cc b/chrome/browser/policy/schema_map_unittest.cc
deleted file mode 100644
index 29e05845ee7904751a4e436f59dd4abeed821de7..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/schema_map_unittest.cc
+++ /dev/null
@@ -1,313 +0,0 @@
-// 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/schema_map.h"
-
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "components/policy/core/common/external_data_fetcher.h"
-#include "components/policy/core/common/external_data_manager.h"
-#include "components/policy/core/common/policy_bundle.h"
-#include "components/policy/core/common/policy_map.h"
-#include "components/policy/core/common/schema.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace policy {
-
-namespace {
-
-const char kTestSchema[] =
- "{"
- " \"type\": \"object\","
- " \"properties\": {"
- " \"string\": { \"type\": \"string\" },"
- " \"integer\": { \"type\": \"integer\" },"
- " \"boolean\": { \"type\": \"boolean\" },"
- " \"null\": { \"type\": \"null\" },"
- " \"double\": { \"type\": \"number\" },"
- " \"list\": {"
- " \"type\": \"array\","
- " \"items\": { \"type\": \"string\" }"
- " },"
- " \"object\": {"
- " \"type\": \"object\","
- " \"properties\": {"
- " \"a\": { \"type\": \"string\" },"
- " \"b\": { \"type\": \"integer\" }"
- " }"
- " }"
- " }"
- "}";
-
-} // namespace
-
-class SchemaMapTest : public testing::Test {
- protected:
- Schema CreateTestSchema() {
- std::string error;
- Schema schema = Schema::Parse(kTestSchema, &error);
- if (!schema.valid())
- ADD_FAILURE() << error;
- return schema;
- }
-
- scoped_refptr<SchemaMap> CreateTestMap() {
- Schema schema = CreateTestSchema();
- ComponentMap component_map;
- component_map["extension-1"] = schema;
- component_map["extension-2"] = schema;
- component_map["legacy-extension"] = Schema();
-
- DomainMap domain_map;
- domain_map[POLICY_DOMAIN_EXTENSIONS] = component_map;
-
- return new SchemaMap(domain_map);
- }
-};
-
-TEST_F(SchemaMapTest, Empty) {
- scoped_refptr<SchemaMap> map = new SchemaMap();
- EXPECT_TRUE(map->GetDomains().empty());
- EXPECT_FALSE(map->GetComponents(POLICY_DOMAIN_CHROME));
- EXPECT_FALSE(map->GetComponents(POLICY_DOMAIN_EXTENSIONS));
- EXPECT_FALSE(map->GetSchema(PolicyNamespace(POLICY_DOMAIN_CHROME, "")));
- EXPECT_FALSE(map->HasComponents());
-}
-
-TEST_F(SchemaMapTest, HasComponents) {
- scoped_refptr<SchemaMap> map = new SchemaMap();
- EXPECT_FALSE(map->HasComponents());
-
- // The Chrome schema does not count as a component.
- Schema schema = CreateTestSchema();
- ComponentMap component_map;
- component_map[""] = schema;
- DomainMap domain_map;
- domain_map[POLICY_DOMAIN_CHROME] = component_map;
- map = new SchemaMap(domain_map);
- EXPECT_FALSE(map->HasComponents());
-
- // An extension schema does.
- domain_map[POLICY_DOMAIN_EXTENSIONS] = component_map;
- map = new SchemaMap(domain_map);
- EXPECT_TRUE(map->HasComponents());
-}
-
-TEST_F(SchemaMapTest, Lookups) {
- scoped_refptr<SchemaMap> map = CreateTestMap();
- ASSERT_TRUE(map);
- EXPECT_TRUE(map->HasComponents());
-
- EXPECT_FALSE(map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_CHROME, "")));
- EXPECT_FALSE(map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_CHROME, "extension-1")));
- EXPECT_FALSE(map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_CHROME, "legacy-extension")));
- EXPECT_FALSE(map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "")));
- EXPECT_FALSE(map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "extension-3")));
-
- const Schema* schema =
- map->GetSchema(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "extension-1"));
- ASSERT_TRUE(schema);
- EXPECT_TRUE(schema->valid());
-
- schema = map->GetSchema(
- PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "legacy-extension"));
- ASSERT_TRUE(schema);
- EXPECT_FALSE(schema->valid());
-}
-
-TEST_F(SchemaMapTest, FilterBundle) {
- std::string error;
- Schema schema = Schema::Parse(kTestSchema, &error);
- ASSERT_TRUE(schema.valid()) << error;
-
- DomainMap domain_map;
- domain_map[POLICY_DOMAIN_EXTENSIONS]["abc"] = schema;
- scoped_refptr<SchemaMap> schema_map = new SchemaMap(domain_map);
-
- PolicyBundle bundle;
- schema_map->FilterBundle(&bundle);
- const PolicyBundle empty_bundle;
- EXPECT_TRUE(bundle.Equals(empty_bundle));
-
- // The Chrome namespace isn't filtered.
- PolicyBundle expected_bundle;
- PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
- expected_bundle.Get(chrome_ns).Set("ChromePolicy",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value"),
- NULL);
- bundle.CopyFrom(expected_bundle);
-
- // Unknown components are filtered out.
- PolicyNamespace another_extension_ns(POLICY_DOMAIN_EXTENSIONS, "xyz");
- bundle.Get(another_extension_ns).Set(
- "AnotherExtensionPolicy",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value"),
- NULL);
- schema_map->FilterBundle(&bundle);
- EXPECT_TRUE(bundle.Equals(expected_bundle));
-
- PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "abc");
- PolicyMap& map = expected_bundle.Get(extension_ns);
- base::ListValue list;
- list.AppendString("a");
- list.AppendString("b");
- map.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- list.DeepCopy(), NULL);
- map.Set("boolean", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(true), NULL);
- map.Set("integer", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateIntegerValue(1), NULL);
- map.Set("null", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateNullValue(), NULL);
- map.Set("double", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateDoubleValue(1.2), NULL);
- base::DictionaryValue dict;
- dict.SetString("a", "b");
- dict.SetInteger("b", 2);
- map.Set("object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- dict.DeepCopy(), NULL);
- map.Set("string", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value"), NULL);
-
- bundle.MergeFrom(expected_bundle);
- bundle.Get(extension_ns).Set("Unexpected",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("to-be-removed"),
- NULL);
-
- schema_map->FilterBundle(&bundle);
- EXPECT_TRUE(bundle.Equals(expected_bundle));
-
- // Mismatched types are also removed.
- bundle.Clear();
- PolicyMap& badmap = bundle.Get(extension_ns);
- badmap.Set("list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(false), NULL);
- badmap.Set("boolean", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateIntegerValue(0), NULL);
- badmap.Set("integer", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(false), NULL);
- badmap.Set("null", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(false), NULL);
- badmap.Set("double", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(false), NULL);
- badmap.Set("object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- base::Value::CreateBooleanValue(false), NULL);
- badmap.Set("string", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- NULL,
- new ExternalDataFetcher(base::WeakPtr<ExternalDataManager>(),
- std::string()));
-
- schema_map->FilterBundle(&bundle);
- EXPECT_TRUE(bundle.Equals(empty_bundle));
-}
-
-TEST_F(SchemaMapTest, LegacyComponents) {
- std::string error;
- Schema schema = Schema::Parse(
- "{"
- " \"type\":\"object\","
- " \"properties\": {"
- " \"String\": { \"type\": \"string\" }"
- " }"
- "}", &error);
- ASSERT_TRUE(schema.valid()) << error;
-
- DomainMap domain_map;
- domain_map[POLICY_DOMAIN_EXTENSIONS]["with-schema"] = schema;
- domain_map[POLICY_DOMAIN_EXTENSIONS]["without-schema"] = Schema();
- scoped_refptr<SchemaMap> schema_map = new SchemaMap(domain_map);
-
- // |bundle| contains policies loaded by a policy provider.
- PolicyBundle bundle;
-
- // Known components with schemas are filtered.
- PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "with-schema");
- bundle.Get(extension_ns).Set("String",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value 1"),
- NULL);
-
- // Known components without a schema are not filtered.
- PolicyNamespace without_schema_ns(POLICY_DOMAIN_EXTENSIONS, "without-schema");
- bundle.Get(without_schema_ns).Set("Schemaless",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value 2"),
- NULL);
-
- // The Chrome namespace isn't filtered.
- PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
- bundle.Get(chrome_ns).Set("ChromePolicy",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value 3"),
- NULL);
-
- PolicyBundle expected_bundle;
- expected_bundle.MergeFrom(bundle);
-
- // Unknown policies of known components with a schema are removed.
- bundle.Get(extension_ns).Set("Surprise",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value 4"),
- NULL);
-
- // Unknown components are removed.
- PolicyNamespace unknown_ns(POLICY_DOMAIN_EXTENSIONS, "unknown");
- bundle.Get(unknown_ns).Set("Surprise",
- POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_USER,
- base::Value::CreateStringValue("value 5"),
- NULL);
-
- schema_map->FilterBundle(&bundle);
- EXPECT_TRUE(bundle.Equals(expected_bundle));
-}
-
-TEST_F(SchemaMapTest, GetChanges) {
- DomainMap map;
- map[POLICY_DOMAIN_CHROME][""] = Schema();
- scoped_refptr<SchemaMap> older = new SchemaMap(map);
- map[POLICY_DOMAIN_CHROME][""] = Schema();
- scoped_refptr<SchemaMap> newer = new SchemaMap(map);
-
- PolicyNamespaceList removed;
- PolicyNamespaceList added;
- newer->GetChanges(older, &removed, &added);
- EXPECT_TRUE(removed.empty());
- EXPECT_TRUE(added.empty());
-
- map[POLICY_DOMAIN_CHROME][""] = Schema();
- map[POLICY_DOMAIN_EXTENSIONS]["xyz"] = Schema();
- newer = new SchemaMap(map);
- newer->GetChanges(older, &removed, &added);
- EXPECT_TRUE(removed.empty());
- ASSERT_EQ(1u, added.size());
- EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), added[0]);
-
- older = newer;
- map[POLICY_DOMAIN_EXTENSIONS]["abc"] = Schema();
- newer = new SchemaMap(map);
- newer->GetChanges(older, &removed, &added);
- ASSERT_EQ(2u, removed.size());
- EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_CHROME, ""), removed[0]);
- EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), removed[1]);
- ASSERT_EQ(1u, added.size());
- EXPECT_EQ(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"), added[0]);
-}
-
-} // namespace policy
« no previous file with comments | « chrome/browser/policy/schema_map.cc ('k') | chrome/browser/policy/schema_registry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698