Ejemplo n.º 1
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 2
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.Draft7
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 3
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 5
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 6
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 7
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 8
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 9
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-06/schema#' }";
            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);
        }
Ejemplo n.º 10
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 11
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 12
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 13
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.Draft6
            };
            bool actual = validator.Validate(schema, json);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 14
0
        public void EnumsInProperties(string desc, string data, bool expected)
        {
            // enums in properties
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'properties':{ 'bar':{ 'enum':[ 'bar' ] }, 'foo':{ 'enum':[ 'foo' ] } }, 'required':[ 'bar' ], 'type':'object' }";
            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);
        }
Ejemplo n.º 15
0
        public void EnumWith1DoesNotMatchTrue(string desc, string data, bool expected)
        {
            // enum with 1 does not match true
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'enum':[ 1 ] }";
            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);
        }
Ejemplo n.º 16
0
        public void TypeArrayOrObject(string desc, string data, bool expected)
        {
            // type: array or object
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'type':[ 'array', 'object' ] }";
            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);
        }
Ejemplo n.º 17
0
        public void NullTypeMatchesOnlyTheNullObject(string desc, string data, bool expected)
        {
            // null type matches only the null object
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'type':'null' }";
            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);
        }
Ejemplo n.º 18
0
        public void MultipleTypesCanBeSpecifiedInAnArray(string desc, string data, bool expected)
        {
            // multiple types can be specified in an array
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'type':[ 'integer', '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);
        }
Ejemplo n.º 19
0
        public void MinPropertiesValidation(string desc, string data, bool expected)
        {
            // minProperties validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'minProperties':1 }";
            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);
        }
Ejemplo n.º 20
0
        public void BooleanTypeMatchesBooleans(string desc, string data, bool expected)
        {
            // boolean type matches booleans
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'type':'boolean' }";
            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);
        }
Ejemplo n.º 21
0
        public void RequiredDefaultValidation(string desc, string data, bool expected)
        {
            // required default validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '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);
        }
Ejemplo n.º 22
0
        public void MaxLengthValidation(string desc, string data, bool expected)
        {
            // maxLength validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'maxLength':2 }";
            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);
        }
Ejemplo n.º 23
0
        public void IgnoreThenWithoutIf(string desc, string data, bool expected)
        {
            // ignore then without if
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'then':{ 'const':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);
        }
Ejemplo n.º 24
0
        public void SimpleEnumValidation(string desc, string data, bool expected)
        {
            // simple enum validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'enum':[ 1, 2, 3 ] }";
            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);
        }
Ejemplo n.º 25
0
        public void ValidateAgainstCorrectBranchThenVsElse(string desc, string data, bool expected)
        {
            // validate against correct branch, then vs else
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'else':{ 'multipleOf':2 }, 'if':{ 'exclusiveMaximum':0 }, 'then':{ 'minimum':-10 } }";
            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);
        }
Ejemplo n.º 26
0
        public void NonInterferenceAcrossCombinedSchemas(string desc, string data, bool expected)
        {
            // non-interference across combined schemas
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'allOf':[ { 'if':{ 'exclusiveMaximum':0 } }, { 'then':{ 'minimum':-10 } }, { 'else':{ 'multipleOf':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);
        }
Ejemplo n.º 27
0
        public void IfAndElseWithoutThen(string desc, string data, bool expected)
        {
            // if and else without then
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'else':{ 'multipleOf':2 }, 'if':{ 'exclusiveMaximum':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);
        }
Ejemplo n.º 28
0
        public void HeterogeneousEnumValidation(string desc, string data, bool expected)
        {
            // heterogeneous enum validation
            Console.Error.WriteLine(desc);
            string   schemaData = "{ 'enum':[ 6, 'foo', [ ], true, { 'foo':12 } ] }";
            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);
        }
Ejemplo n.º 29
0
        public void TypeAsArrayWithOneItem(string desc, string data, bool expected)
        {
            // type as array with one item
            Console.Error.WriteLine(desc);
            string   schemaData = "{ '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);
        }
Ejemplo n.º 30
0
        public void RequiredWithEscapedCharacters(string desc, string data, bool expected)
        {
            // required with escaped characters
            Console.Error.WriteLine(desc);
            string   schemaData = @"{ 'required':[ 'foo\nbar', 'foo\'bar', 'foo\\bar', 'foo\rbar', 'foo\tbar', 'foo\fbar' ] }";
            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 JsonValidatorOperation(string keyToValidate, string resultKey, bool negated)
     : base(keyToValidate, resultKey) {
     Validator = new JsonValidator(keyToValidate, negated);
 }
Ejemplo n.º 32
0
 public EmbededValidatorRule(FieldSelector selector, string alias, JsonValidator validator)
 {
     Selector = selector;
     Alias = alias;
     this.validator = validator;
 }
 public JsonValidatorDescription(JsonValidator validator, List<JsonFieldValidatorDescription> descriptions)
 {
     this.validator = validator;
     this.descriptions = descriptions;
 }