Chromium Code Reviews| Index: chrome/browser/policy/policy_schema_unittest.cc |
| diff --git a/chrome/browser/policy/policy_schema_unittest.cc b/chrome/browser/policy/policy_schema_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..069ffd2f775dae0748cfbf6b4b5d8f8e8f21997f |
| --- /dev/null |
| +++ b/chrome/browser/policy/policy_schema_unittest.cc |
| @@ -0,0 +1,110 @@ |
| +// Copyright (c) 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_schema.h" |
| + |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace policy { |
| + |
| +namespace { |
| + |
| +#define SCHEMA_VERSION "\"$schema\":\"http://json-schema.org/draft-03/schema#\"" |
| +#define OBJECT_TYPE "\"type\":\"object\"" |
| + |
| +bool ParseFails(const std::string& content) { |
| + std::string error; |
| + scoped_ptr<PolicySchema> schema = PolicySchema::Parse(content, &error); |
| + EXPECT_TRUE(schema || !error.empty()); |
| + return !schema; |
| +} |
| + |
| +} // namespace |
| + |
| +TEST(PolicySchemaTest, MinimalSchema) { |
| + EXPECT_FALSE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE |
| + "}")); |
| +} |
| + |
| +TEST(PolicySchemaTest, InvalidSchemas) { |
| + EXPECT_TRUE(ParseFails("")); |
| + EXPECT_TRUE(ParseFails("omg")); |
| + EXPECT_TRUE(ParseFails("\"omg\"")); |
| + EXPECT_TRUE(ParseFails("123")); |
| + EXPECT_TRUE(ParseFails("[]")); |
| + EXPECT_TRUE(ParseFails("null")); |
| + EXPECT_TRUE(ParseFails("{}")); |
|
Mattias Nissler (ping if slow)
2013/05/15 10:04:12
Many of these seem redundant, given that you rely
Joao da Silva
2013/05/19 13:17:08
It's true that the JSONSchemaValidator tests cover
|
| + EXPECT_TRUE(ParseFails("{" SCHEMA_VERSION "}")); |
| + EXPECT_TRUE(ParseFails("{" OBJECT_TYPE "}")); |
| + |
| + EXPECT_TRUE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"additionalProperties\": { \"type\":\"object\" }" |
| + "}")); |
| + |
| + EXPECT_TRUE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"patternProperties\": { \"a+b*\": { \"type\": \"object\" } }" |
| + "}")); |
| + |
| + EXPECT_TRUE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"properties\": { \"Policy\": { \"type\": \"bogus\" } }" |
| + "}")); |
| + |
| + EXPECT_TRUE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"properties\": { \"Policy\": { \"type\": [\"string\", \"number\"] } }" |
| + "}")); |
| + |
| + EXPECT_TRUE(ParseFails( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"properties\": { \"Policy\": { \"type\": \"any\" } }" |
| + "}")); |
| +} |
| + |
| +TEST(PolicySchemaTest, TypeMap) { |
| + std::string error; |
| + scoped_ptr<PolicySchema> schema = PolicySchema::Parse( |
| + "{" |
| + SCHEMA_VERSION "," |
| + OBJECT_TYPE "," |
| + "\"properties\": {" |
| + " \"Array\": { \"type\": \"array\" }," |
| + " \"Boolean\": { \"type\": \"boolean\" }," |
| + " \"Integer\": { \"type\": \"integer\" }," |
| + " \"Null\": { \"type\": \"null\" }," |
| + " \"Number\": { \"type\": \"number\" }," |
| + " \"Object\": { \"type\": \"object\" }," |
| + " \"String\": { \"type\": \"string\" }" |
| + "}" |
| + "}", &error); |
| + ASSERT_TRUE(schema); |
| + |
| + PolicySchema::TypeMap map; |
| + map["Array"] = base::Value::TYPE_LIST; |
| + map["Boolean"] = base::Value::TYPE_BOOLEAN; |
| + map["Integer"] = base::Value::TYPE_INTEGER; |
| + map["Null"] = base::Value::TYPE_NULL; |
| + map["Number"] = base::Value::TYPE_DOUBLE; |
| + map["Object"] = base::Value::TYPE_DICTIONARY; |
| + map["String"] = base::Value::TYPE_STRING; |
| + |
| + EXPECT_EQ(map, schema->type_map()); |
| +} |
| + |
| +} // namespace policy |