Beispiel #1
0
        public void ValidateReturnsValidOnValidPatternProperty()
        {
            var schema = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["test1"] = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                },
                AdditionalProperties = AdditionalProperties.False,
                PatternProperties    = new Dictionary <Regex, IJsonSchema>
                {
                    { new Regex("[0-9]"), new JsonSchema04 {
                          Type = JsonSchemaType.Integer
                      } }
                }
            };
            var json = new JsonObject {
                { "test1", "value" }, { "test2", 2 }
            };

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #2
0
        public void DeserializeSchema_TypePropertyIsArray_Issue14()
        {
            JsonSchemaFactory.SetDefaultSchemaVersion <JsonSchema04>();

            var text     = "{\"type\":\"object\",\"properties\":{\"home\":{\"type\":[\"object\",\"null\"],\"properties\":{\"street\":{\"type\":\"string\"}}}}}";
            var json     = JsonValue.Parse(text);
            var expected = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["home"] = new JsonSchema04
                    {
                        Type       = JsonSchemaType.Object | JsonSchemaType.Null,
                        Properties = new Dictionary <string, IJsonSchema>
                        {
                            ["street"] = new JsonSchema04 {
                                Type = JsonSchemaType.String
                            }
                        }
                    }
                }
            };

            var actual = JsonSchemaFactory.FromJson(json);

            Assert.AreEqual(expected, actual);
        }
Beispiel #3
0
        public void ValidateReturnsValidOnValidAdditionalProperty()
        {
            var schema = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["test1"] = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                },
                AdditionalProperties =
                    new AdditionalProperties {
                    Definition = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                }
            };
            var json = new JsonObject {
                { "test1", "value" }, { "test", "value" }
            };

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #4
0
        public void ValidateReturnsValidOnValidIpv6Format()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.Ipv6
            };
            var json = (JsonValue)"2001:0db8:85a3:0042:1000:8a2e:0370:7334";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #5
0
        public void ValidateReturnsValidOnPatternMatch()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Pattern = "^[0-9_]+$"
            };
            var json = (JsonValue)"81681_1868";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #6
0
        public void ValidateReturnsErrorOnTooLong()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, MaxLength = 5
            };
            var json = (JsonValue)"test123";

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
        public void Draft04_ValidateReturnsErrorOnEqualsExclusiveMinimum()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.Integer, Minimum = 5, ExclusiveMinimum = true
            };
            var json = (JsonValue)5;

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
Beispiel #8
0
        public void ValidateReturnsErrorOnPatternNonMatch()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Pattern = "^[0-9_]+$"
            };
            var json = (JsonValue)"test123";

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
Beispiel #9
0
        public void ValidateReturnsValidOnValidHostNameFormat()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.HostName
            };
            var json = (JsonValue)"me.you.com";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #10
0
        public void ValidateReturnsErrorOnInvalidUriFormat()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.Uri
            };
            var json = (JsonValue)"test123^%";

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
Beispiel #11
0
        public void ValidateReturnsValidOnValidIpv4Format()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.Ipv4
            };
            var json = (JsonValue)"255.255.1.1";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #12
0
        public void ValidateReturnsValidOnValidDateTimeFormat()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.DateTime
            };
            var json = (JsonValue)"2016-01-25T10:32:02Z";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #13
0
        public void ValidateReturnsValidOnValidEmailFormat2()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.Email
            };
            var json = (JsonValue)"*****@*****.**";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #14
0
        public void ValidateReturnsErrorOnNonString()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String
            };
            var json = new JsonObject();

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
Beispiel #15
0
        public void Draft04_ValidateReturnsValidOnLessThanExclusiveMaximum()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.Number, Maximum = 5, ExclusiveMaximum = true
            };
            var json = (JsonValue)3;

            var results = schema.Validate(json);

            results.AssertValid();
        }
        public void Draft04_ValidateReturnsValidOnMoreThanExclusiveMinimum()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.Integer, Minimum = 5, ExclusiveMinimum = true
            };
            var json = (JsonValue)10;

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #17
0
        public void ValidateReturnsValidOnLengthLessThanMaxLength()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, MaxLength = 5
            };
            var json = (JsonValue)"test";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #18
0
        public void ValidateReturnsValidOnValidUriFormat()
        {
            var schema = new JsonSchema04 {
                Type = JsonSchemaType.String, Format = StringFormat.Uri
            };
            var json = (JsonValue)"http://en.wikipedia.org/wiki/ISO_8601";

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #19
0
        public void ValidateReturnsValidOnNotTooFewProperties()
        {
            var schema = new JsonSchema04
            {
                Type          = JsonSchemaType.Object,
                MinProperties = 1
            };
            var json = new JsonObject {
                { "test1", "value" }, { "test2", 2 }
            };

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #20
0
        public void ValidateReturnsInvalidOnTooFewProperties()
        {
            var schema = new JsonSchema04
            {
                Type          = JsonSchemaType.Object,
                MinProperties = 5
            };
            var json = new JsonObject {
                { "test1", "value" }, { "test2", 2 }
            };

            var results = schema.Validate(json);

            Assert.AreEqual(1, results.Errors.Count());
            Assert.AreEqual(false, results.Valid);
        }
Beispiel #21
0
        public void ValidateReturnsValidOnOptionalPropertyMissing()
        {
            var schema = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["test1"] = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                }
            };
            var json = new JsonObject();

            var results = schema.Validate(json);

            results.AssertValid();
        }
Beispiel #22
0
        public void Issue49_RequiredAndAllOfInSingleSchema()
        {
            var fileName = System.IO.Path.Combine(TestContext.CurrentContext.TestDirectory, @"Files\issue49.json").AdjustForOS();
            var expected = new JsonSchema04
            {
                Title       = "JSON schema for Something",
                Schema      = "http://json-schema.org/draft-04/schema#",
                Definitions = new Dictionary <string, IJsonSchema>
                {
                    ["something"] = new JsonSchema04
                    {
                        Type  = JsonSchemaType.Object,
                        AllOf = new[]
                        {
                            new JsonSchema04
                            {
                                Properties = new Dictionary <string, IJsonSchema>
                                {
                                    ["name"] = new JsonSchema04 {
                                        Type = JsonSchemaType.String
                                    }
                                }
                            }
                        },
                        Required = new List <string> {
                            "name"
                        }
                    }
                },
                Type        = JsonSchemaType.Array,
                Description = "An array of somethings.",
                Items       = new JsonSchemaReference("#/definitions/something", typeof(JsonSchema04))
            };

            var schema = JsonSchemaRegistry.Get(fileName);

            Assert.AreEqual(expected, schema);

            var schemaJson   = schema.ToJson(null);
            var expectedJson = expected.ToJson(null);

            Console.WriteLine(schemaJson);
            Assert.AreEqual(expectedJson, schemaJson);
        }
Beispiel #23
0
        public void DeclaredTypeWithDeclaredEnum_Issue15()
        {
            JsonSchemaFactory.SetDefaultSchemaVersion <JsonSchema04>();

            var text     = "{\"type\":\"string\",\"enum\":[\"FeatureCollection\"]}";
            var json     = JsonValue.Parse(text);
            var expected = new JsonSchema04
            {
                Type = JsonSchemaType.String,
                Enum = new List <EnumSchemaValue>
                {
                    new EnumSchemaValue("FeatureCollection")
                }
            };

            var actual = JsonSchemaFactory.FromJson(json);

            Assert.AreEqual(expected, actual);
        }
Beispiel #24
0
        public void ValidateReturnsErrorOnInvalidProperty()
        {
            var schema = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["test1"] = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                }
            };
            var json = new JsonObject {
                { "test1", 1 }
            };

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
Beispiel #25
0
        public void ValidateReturnsErrorOnRequiredPropertyMissing()
        {
            var schema = new JsonSchema04
            {
                Type       = JsonSchemaType.Object,
                Properties = new Dictionary <string, IJsonSchema>
                {
                    ["test1"] = new JsonSchema04 {
                        Type = JsonSchemaType.String
                    }
                },
                Required = new List <string> {
                    "test1"
                }
            };
            var json = new JsonObject();

            var results = schema.Validate(json);

            results.AssertInvalid();
        }
 public static IEnumerable <IJsonSchemaPropertyValidator <JsonSchema04> > Get(JsonSchema04 schema, JsonValue json)
 {
     return(_schema04Validators.Where(v => v.Applies(schema, json)));
 }