| Index: chrome/browser/policy/schema_registry_unittest.cc
|
| diff --git a/chrome/browser/policy/schema_registry_unittest.cc b/chrome/browser/policy/schema_registry_unittest.cc
|
| deleted file mode 100644
|
| index acff85c10bbf4cae021665e3da453bec8f1979b0..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/policy/schema_registry_unittest.cc
|
| +++ /dev/null
|
| @@ -1,242 +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_registry.h"
|
| -
|
| -#include "components/policy/core/common/policy_namespace.h"
|
| -#include "components/policy/core/common/schema.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using ::testing::Mock;
|
| -using ::testing::_;
|
| -
|
| -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\" }"
|
| - " }"
|
| - " }"
|
| - " }"
|
| - "}";
|
| -
|
| -class MockSchemaRegistryObserver : public SchemaRegistry::Observer {
|
| - public:
|
| - MockSchemaRegistryObserver() {}
|
| - virtual ~MockSchemaRegistryObserver() {}
|
| -
|
| - MOCK_METHOD1(OnSchemaRegistryUpdated, void(bool));
|
| - MOCK_METHOD0(OnSchemaRegistryReady, void());
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TEST(SchemaRegistryTest, Notifications) {
|
| - std::string error;
|
| - Schema schema = Schema::Parse(kTestSchema, &error);
|
| - ASSERT_TRUE(schema.valid()) << error;
|
| -
|
| - MockSchemaRegistryObserver observer;
|
| - SchemaRegistry registry;
|
| - EXPECT_FALSE(registry.HasObservers());
|
| - registry.AddObserver(&observer);
|
| - EXPECT_TRUE(registry.HasObservers());
|
| -
|
| - ASSERT_TRUE(registry.schema_map());
|
| - EXPECT_FALSE(registry.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - registry.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Re-register also triggers notifications, because the Schema might have
|
| - // changed.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - registry.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - EXPECT_TRUE(registry.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - registry.UnregisterComponent(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - EXPECT_FALSE(registry.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| -
|
| - // Registering multiple components at once issues only one notification.
|
| - ComponentMap components;
|
| - components["abc"] = schema;
|
| - components["def"] = schema;
|
| - components["xyz"] = schema;
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - registry.RegisterComponents(POLICY_DOMAIN_EXTENSIONS, components);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - registry.RemoveObserver(&observer);
|
| - EXPECT_FALSE(registry.HasObservers());
|
| -}
|
| -
|
| -TEST(SchemaRegistryTest, IsReady) {
|
| - SchemaRegistry registry;
|
| - MockSchemaRegistryObserver observer;
|
| - registry.AddObserver(&observer);
|
| -
|
| - EXPECT_FALSE(registry.IsReady());
|
| -#if defined(ENABLE_EXTENSIONS)
|
| - EXPECT_CALL(observer, OnSchemaRegistryReady()).Times(0);
|
| - registry.SetReady(POLICY_DOMAIN_EXTENSIONS);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - EXPECT_FALSE(registry.IsReady());
|
| -#endif
|
| - EXPECT_CALL(observer, OnSchemaRegistryReady());
|
| - registry.SetReady(POLICY_DOMAIN_CHROME);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - EXPECT_TRUE(registry.IsReady());
|
| - EXPECT_CALL(observer, OnSchemaRegistryReady()).Times(0);
|
| - registry.SetReady(POLICY_DOMAIN_CHROME);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - EXPECT_TRUE(registry.IsReady());
|
| -
|
| - CombinedSchemaRegistry combined;
|
| - EXPECT_TRUE(combined.IsReady());
|
| -
|
| - registry.RemoveObserver(&observer);
|
| -}
|
| -
|
| -TEST(SchemaRegistryTest, Combined) {
|
| - std::string error;
|
| - Schema schema = Schema::Parse(kTestSchema, &error);
|
| - ASSERT_TRUE(schema.valid()) << error;
|
| -
|
| - MockSchemaRegistryObserver observer;
|
| - SchemaRegistry registry1;
|
| - SchemaRegistry registry2;
|
| - CombinedSchemaRegistry combined;
|
| - combined.AddObserver(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(_)).Times(0);
|
| - registry1.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Starting to track a registry issues notifications when it comes with new
|
| - // schemas.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - combined.Track(®istry1);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Adding a new empty registry does not trigger notifications.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(_)).Times(0);
|
| - combined.Track(®istry2);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Adding the same component to the combined registry itself triggers
|
| - // notifications.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - combined.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Adding components to the sub-registries triggers notifications.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - registry2.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // If the same component is published in 2 sub-registries then the combined
|
| - // registry publishes one of them.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| - registry1.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - ASSERT_EQ(1u, combined.schema_map()->GetDomains().size());
|
| - ASSERT_TRUE(combined.schema_map()->GetComponents(POLICY_DOMAIN_EXTENSIONS));
|
| - ASSERT_EQ(
|
| - 2u,
|
| - combined.schema_map()->GetComponents(POLICY_DOMAIN_EXTENSIONS)->size());
|
| - EXPECT_TRUE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| - EXPECT_TRUE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def")));
|
| - EXPECT_FALSE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - registry1.UnregisterComponent(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - // Still registered at the combined registry.
|
| - EXPECT_TRUE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - combined.UnregisterComponent(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - // Now it's gone.
|
| - EXPECT_FALSE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "abc")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - registry1.UnregisterComponent(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - // Still registered at registry2.
|
| - EXPECT_TRUE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - registry2.UnregisterComponent(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| - // Now it's gone.
|
| - EXPECT_FALSE(combined.schema_map()->GetSchema(
|
| - PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "def")));
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(true)).Times(2);
|
| - registry1.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_CHROME, ""),
|
| - schema);
|
| - registry2.RegisterComponent(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "hij"),
|
| - schema);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Untracking |registry1| doesn't trigger an update nofitication, because it
|
| - // doesn't contain any components.
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(_)).Times(0);
|
| - combined.Untrack(®istry1);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnSchemaRegistryUpdated(false));
|
| - combined.Untrack(®istry2);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - combined.RemoveObserver(&observer);
|
| -}
|
| -
|
| -} // namespace policy
|
|
|