| Index: components/json_schema/json_schema_validator_unittest_base.cc
|
| diff --git a/components/json_schema/json_schema_validator_unittest_base.cc b/components/json_schema/json_schema_validator_unittest_base.cc
|
| index 2e936a2eb9a2a0ac923b0607df66ab0e41979524..5c9f1a5d6d8bcb8a1f9ad517163dab4156f2b2bc 100644
|
| --- a/components/json_schema/json_schema_validator_unittest_base.cc
|
| +++ b/components/json_schema/json_schema_validator_unittest_base.cc
|
| @@ -67,9 +67,7 @@ base::DictionaryValue* LoadDictionary(const std::string& filename) {
|
| } // namespace
|
|
|
|
|
| -JSONSchemaValidatorTestBase::JSONSchemaValidatorTestBase(
|
| - JSONSchemaValidatorTestBase::ValidatorType type)
|
| - : type_(type) {
|
| +JSONSchemaValidatorTestBase::JSONSchemaValidatorTestBase() {
|
| }
|
|
|
| void JSONSchemaValidatorTestBase::RunTests() {
|
| @@ -118,10 +116,6 @@ void JSONSchemaValidatorTestBase::TestComplex() {
|
| }
|
|
|
| void JSONSchemaValidatorTestBase::TestStringPattern() {
|
| - // Regex patterns not supported in CPP validator.
|
| - if (type_ == CPP)
|
| - return;
|
| -
|
| scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue());
|
| schema->SetString(schema::kType, schema::kString);
|
| schema->SetString(schema::kPattern, "foo+");
|
| @@ -224,8 +218,8 @@ void JSONSchemaValidatorTestBase::TestObject() {
|
| instance->SetBoolean("extra", true);
|
| ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL,
|
| "extra", JSONSchemaValidator::kUnexpectedProperty);
|
| -
|
| instance->Remove("extra", NULL);
|
| +
|
| instance->Remove("bar", NULL);
|
| ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "bar",
|
| JSONSchemaValidator::kObjectPropertyIsRequired);
|
| @@ -236,12 +230,47 @@ void JSONSchemaValidatorTestBase::TestObject() {
|
| JSONSchemaValidator::kInvalidType,
|
| schema::kInteger,
|
| schema::kString));
|
| + instance->SetInteger("bar", 42);
|
| +
|
| + // Test "patternProperties".
|
| + instance->SetInteger("extra", 42);
|
| + ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL,
|
| + "extra", JSONSchemaValidator::kUnexpectedProperty);
|
| + schema->SetString("patternProperties.extra+.type",
|
| + schema::kInteger);
|
| + ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
| + instance->Remove("extra", NULL);
|
| + instance->SetInteger("extraaa", 42);
|
| + ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
| + instance->Remove("extraaa", NULL);
|
| + instance->SetInteger("extr", 42);
|
| + ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL,
|
| + "extr", JSONSchemaValidator::kUnexpectedProperty);
|
| + instance->Remove("extr", NULL);
|
| + schema->Remove(schema::kPatternProperties, NULL);
|
| +
|
| + // Test "patternProperties" and "properties" schemas are both checked if
|
| + // applicable.
|
| + schema->SetString("patternProperties.fo+.type", schema::kInteger);
|
| + ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "foo",
|
| + JSONSchemaValidator::FormatErrorMessage(
|
| + JSONSchemaValidator::kInvalidType,
|
| + schema::kInteger,
|
| + schema::kString));
|
| + instance->SetInteger("foo", 123);
|
| + ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "foo",
|
| + JSONSchemaValidator::FormatErrorMessage(
|
| + JSONSchemaValidator::kInvalidType,
|
| + schema::kString,
|
| + schema::kInteger));
|
| + instance->SetString("foo", "foo");
|
| + schema->Remove(schema::kPatternProperties, NULL);
|
|
|
| + // Test additional properties.
|
| base::DictionaryValue* additional_properties = new base::DictionaryValue();
|
| additional_properties->SetString(schema::kType, schema::kAny);
|
| schema->Set(schema::kAdditionalProperties, additional_properties);
|
|
|
| - instance->SetInteger("bar", 42);
|
| instance->SetBoolean("extra", true);
|
| ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
|
|
| @@ -258,6 +287,7 @@ void JSONSchemaValidatorTestBase::TestObject() {
|
| JSONSchemaValidator::kInvalidType,
|
| schema::kBoolean,
|
| schema::kString));
|
| + instance->Remove("extra", NULL);
|
|
|
| base::DictionaryValue* properties = NULL;
|
| base::DictionaryValue* bar_property = NULL;
|
| @@ -265,7 +295,6 @@ void JSONSchemaValidatorTestBase::TestObject() {
|
| ASSERT_TRUE(properties->GetDictionary("bar", &bar_property));
|
|
|
| bar_property->SetBoolean(schema::kOptional, true);
|
| - instance->Remove("extra", NULL);
|
| ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
| instance->Remove("bar", NULL);
|
| ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
| @@ -281,6 +310,18 @@ void JSONSchemaValidatorTestBase::TestObject() {
|
| JSONSchemaValidator::kInvalidType,
|
| schema::kInteger,
|
| schema::kString));
|
| +
|
| + // Verify that JSON parser handles dot in "patternProperties" well.
|
| + schema.reset(LoadDictionary("pattern_properties_dot.json"));
|
| + ASSERT_TRUE(schema->GetDictionary(schema::kPatternProperties, &properties));
|
| + ASSERT_TRUE(properties->HasKey("^.$"));
|
| +
|
| + instance.reset(new base::DictionaryValue());
|
| + instance->SetString("a", "whatever");
|
| + ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL);
|
| + instance->SetString("foo", "bar");
|
| + ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL,
|
| + "foo", JSONSchemaValidator::kUnexpectedProperty);
|
| }
|
|
|
| void JSONSchemaValidatorTestBase::TestTypeReference() {
|
|
|