Exemple #1
0
        public void PatternIsNotAnchored(string desc, string data, bool expected)
        {
            // pattern is not anchored
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'pattern':'a+' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void PropertiesPatternPropertiesAdditionalPropertiesInteraction(string desc, string data, bool expected)
        {
            // properties, patternProperties, additionalProperties interaction
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':{ 'type':'integer' }, 'patternProperties':{ 'f.o':{ 'minItems':2 } }, 'properties':{ 'bar':{ 'type':'array' }, 'foo':{ 'maxItems':3, 'type':'array' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void PropertiesWithEscapedCharacters(string desc, string data, bool expected)
        {
            // properties with escaped characters
            Console.Error.WriteLine(desc);
            string   schemaData = @"{ 'properties':{ 'foo\tbar':{ 'type':'number' }, 'foo\nbar':{ 'type':'number' }, 'foo\fbar':{ 'type':'number' }, 'foo\rbar':{ 'type':'number' }, 'foo\'bar':{ 'type':'number' }, 'foo\\bar':{ 'type':'number' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #4
0
        public void LocationIndependentIdentifierWithBaseURIChangeInSubschema(string desc, string data, bool expected)
        {
            // Location-independent identifier with base URI change in subschema
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '$id':'http://localhost:1234/root', 'allOf':[ { '$ref':'http://localhost:1234/nested.json#foo' } ], 'definitions':{ 'A':{ '$id':'nested.json', 'definitions':{ 'B':{ '$id':'#foo', 'type':'integer' } } } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #5
0
        public void ContainsKeywordValidation(string desc, string data, bool expected)
        {
            // contains keyword validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'contains':{ 'minimum':5 } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft201909
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #6
0
        public void RefToBooleanSchemaFalse(string desc, string data, bool expected)
        {
            // $ref to boolean schema false
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '$ref':'#/definitions/bool', 'definitions':{ 'bool':false } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #7
0
        public void RefsWithQuote(string desc, string data, bool expected)
        {
            // refs with quote
            Console.Error.WriteLine(desc);
            string   schemaData = @"{ 'definitions':{ 'foo\""bar':{ 'type':'number' } }, 'properties':{ 'foo\""bar':{ '$ref':'#/definitions/foo%22bar' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void AdditionalPropertiesBeingFalseDoesNotAllowOtherProperties(string desc, string data, bool expected)
        {
            // additionalProperties being false does not allow other properties
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':false, 'patternProperties':{ '^v':{ } }, 'properties':{ 'bar':{ }, 'foo':{ } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void NonASCIIPatternWithAdditionalProperties(string desc, string data, bool expected)
        {
            // non-ASCII pattern with additionalProperties
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':false, 'patternProperties':{ '^á':{ } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void AdditionalPropertiesAreAllowedByDefault(string desc, string data, bool expected)
        {
            // additionalProperties are allowed by default
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ 'bar':{ }, 'foo':{ } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void AdditionalPropertiesShouldNotLookInApplicators(string desc, string data, bool expected)
        {
            // additionalProperties should not look in applicators
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':{ 'type':'boolean' }, 'allOf':[ { 'properties':{ 'foo':{ } } } ] }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void AdditionalPropertiesCanExistByItself(string desc, string data, bool expected)
        {
            // additionalProperties can exist by itself
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':{ 'type':'boolean' } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void AdditionalPropertiesAllowsASchemaWhichShouldValidate(string desc, string data, bool expected)
        {
            // additionalProperties allows a schema which should validate
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':{ 'type':'boolean' }, 'properties':{ 'bar':{ }, 'foo':{ } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void ByNumber(string desc, string data, bool expected)
        {
            // by number
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'multipleOf':1.5 }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #15
0
        public void RemoteRefContainingRefsItself(string desc, string data, bool expected)
        {
            // remote ref, containing refs itself
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '$ref':'http://json-schema.org/draft-07/schema#' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #16
0
        public void ValidationOfRelativeJSONPointersRJP(string desc, string data, bool expected)
        {
            // validation of Relative JSON Pointers (RJP)
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'format':'relative-json-pointer' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #17
0
        public void PropertyNamedRefThatIsNotAReference(string desc, string data, bool expected)
        {
            // property named $ref that is not a reference
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ '$ref':{ 'type':'string' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #18
0
        public void ValidationOfEMailAddresses(string desc, string data, bool expected)
        {
            // validation of e-mail addresses
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'format':'email' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft4
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #19
0
        public void RecursiveReferencesBetweenSchemas(string desc, string data, bool expected)
        {
            // Recursive references between schemas
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '$id':'http://localhost:1234/tree', 'definitions':{ 'node':{ '$id':'http://localhost:1234/node', 'description':'node', 'properties':{ 'subtree':{ '$ref':'tree' }, 'value':{ 'type':'number' } }, 'required':[ 'value' ], 'type':'object' } }, 'description':'tree of nodes', 'properties':{ 'meta':{ 'type':'string' }, 'nodes':{ 'items':{ '$ref':'node' }, 'type':'array' } }, 'required':[ 'meta', 'nodes' ], 'type':'object' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #20
0
        public void RootPointerRef(string desc, string data, bool expected)
        {
            // root pointer ref
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'additionalProperties':false, 'properties':{ 'foo':{ '$ref':'#' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #21
0
        public void LocationIndependentIdentifier(string desc, string data, bool expected)
        {
            // Location-independent identifier
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'allOf':[ { '$ref':'#foo' } ], 'definitions':{ 'A':{ '$id':'#foo', 'type':'integer' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #22
0
        public void RelativePointerRefToObject(string desc, string data, bool expected)
        {
            // relative pointer ref to object
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ 'bar':{ '$ref':'#/properties/foo' }, 'foo':{ 'type':'integer' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #23
0
        public void EscapedPointerRef(string desc, string data, bool expected)
        {
            // escaped pointer ref
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'percent%field':{ 'type':'integer' }, 'properties':{ 'percent':{ '$ref':'#/percent%25field' }, 'slash':{ '$ref':'#/slash~1field' }, 'tilda':{ '$ref':'#/tilda~0field' } }, 'slash/field':{ 'type':'integer' }, 'tilda~field':{ 'type':'integer' } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #24
0
        public void RelativePointerRefToArray(string desc, string data, bool expected)
        {
            // relative pointer ref to array
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'items':[ { 'type':'integer' }, { '$ref':'#/items/0' } ] }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #25
0
        public void MaxPropertiesValidation(string desc, string data, bool expected)
        {
            // maxProperties validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'maxProperties':2 }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft4
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #26
0
        public void NestedRefs(string desc, string data, bool expected)
        {
            // nested refs
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '$ref':'#/definitions/c', 'definitions':{ 'a':{ 'type':'integer' }, 'b':{ '$ref':'#/definitions/a' }, 'c':{ '$ref':'#/definitions/b' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void PropertiesWithBooleanSchema(string desc, string data, bool expected)
        {
            // properties with boolean schema
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ 'bar':false, 'foo':true } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #28
0
        public void RefOverridesAnySiblingKeywords(string desc, string data, bool expected)
        {
            // ref overrides any sibling keywords
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'definitions':{ 'reffed':{ 'type':'array' } }, 'properties':{ 'foo':{ '$ref':'#/definitions/reffed', 'maxItems':2 } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
        public void ObjectPropertiesValidation(string desc, string data, bool expected)
        {
            // object properties validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ 'bar':{ 'type':'string' }, 'foo':{ 'type':'integer' } } }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Exemple #30
0
        public void AnyOfWithBaseSchema(string desc, string data, bool expected)
        {
            // anyOf with base schema
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'anyOf':[ { 'maxLength':2 }, { 'minLength':4 } ], 'type':'string' }";
            MPJson   schemaJson = MPJson.Parse(schemaData);
            MPJson   json       = MPJson.Parse(data);
            MPSchema schema     = schemaJson;
            var      validator  = new JsonValidator {
                Strict = true, Version = SchemaVersion.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }