public async Task PropertyExclusiveMinimumDefiniton()
        {
            //// Arrange
            var data      = @"{
                ""$schema"": ""http://json-schema.org/draft-04/schema#"",
                ""title"": ""test schema"",
                ""type"": ""object"",
                ""required"": [
                  ""body""
                ],
                ""properties"": {
                  ""body"": {
                    ""$ref"": ""#/definitions/body""
                  }
                },
                ""definitions"": {
                  ""body"": {
                    ""type"": ""object"",
                    ""additionalProperties"": false,
                    ""properties"": {
                      ""numberContent"": {
                        ""$ref"": ""#/definitions/numberContent""
                      }
                    }
                  },
                  ""numberContent"": {
                    ""type"": ""object"",
                    ""additionalProperties"": false,
                    ""properties"": {
                      ""value"": {
                        ""type"": ""number"",
                        ""maximum"": 5.0,
                        ""minimum"": 1.0,
                        ""exclusiveMinimum"" : true
                      }
                    }
                  }
                }
              }";
            var generator = new SampleJsonDataGenerator();
            var schema    = await JsonSchema.FromJsonAsync(data);

            //// Act
            var testJson = generator.Generate(schema);

            //// Assert
            var validationResult = schema.Validate(testJson);

            Assert.NotNull(validationResult);
            Assert.Equal(0, validationResult.Count);
            Assert.Equal(1.1, testJson.SelectToken("body.numberContent.value").Value <double>());
        }
        public void Default_values_are_set_for_arrays()
        {
            //// Arrange
            var schema    = JsonSchema.FromType <Measurements>();
            var generator = new SampleJsonDataGenerator();

            //// Act
            var token = generator.Generate(schema);
            var obj   = token as JObject;

            //// Assert
            Assert.Equal(new JArray(new int[] { 1, 2, 3 }), obj.GetValue(nameof(Measurements.Weights)));
        }
        public void When_sample_data_is_generated_from_schema_then_properties_are_set()
        {
            //// Arrange
            var schema    = JsonSchema.FromType <Person>();
            var generator = new SampleJsonDataGenerator();

            //// Act
            var token = generator.Generate(schema);
            var obj   = token as JObject;

            //// Assert
            Assert.NotNull(obj.Property(nameof(Person.FirstName)));
            Assert.NotNull(obj.Property(nameof(Person.LastName)));
            Assert.NotNull(obj.Property(nameof(Person.MainAddress)));
            Assert.NotNull(obj.Property(nameof(Person.Addresses)));
        }
        public async Task When_generateOptionalProperties_is_false_then_optional_properties_are_not_set()
        {
            //// Arrange
            var data = @"{
                ""$schema"": ""http://json-schema.org/draft-04/schema#"",
                ""title"": ""test schema"",
                ""type"": ""object"",
                ""required"": [
                  ""isrequired""
                ],
                ""properties"": {
                  ""isrequired"": {
                    ""type"": ""object"",
                    ""properties"": {
                      ""value"": {
                        ""type"": ""integer""
                      }
                    }
                  },
                  ""isoptional"": {
                    ""type"": ""object"",
                    ""properties"": {
                      ""value"": {
                        ""type"": ""integer""
                      }
                    }
                  }
                }
              }";

            var schema = await JsonSchema.FromJsonAsync(data);

            var generator = new SampleJsonDataGenerator(new SampleJsonDataGeneratorSettings
            {
                GenerateOptionalProperties = false
            });

            //// Act
            var token = generator.Generate(schema);
            var obj   = token as JObject;

            //// Assert
            Assert.NotNull(obj.Property("isrequired"));
            Assert.Null(obj.Property("isoptional"));
        }
Ejemplo n.º 5
0
        /// <summary>Creates a <see cref="JsonSchema" /> from sample JSON data.</summary>
        /// <returns>The JSON Schema.</returns>
        public JToken ToSampleJson()
        {
            var generator = new SampleJsonDataGenerator();

            return(generator.Generate(this));
        }