public static void AssertResponseSchema <T>(this HttpResponseMessage message, bool useCamelCase = true)
        {
            NJsonSchema.Generation.JsonSchemaGeneratorSettings settings;

            if (useCamelCase)
            {
                settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings {
                    SerializerSettings = new JsonSerializerSettings {
                        ContractResolver = new DefaultContractResolver {
                            NamingStrategy = new CamelCaseNamingStrategy()
                        }
                    }
                };
            }
            else
            {
                settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings();
            }

            var schema = JsonSchema.FromType <T>(settings);

            var errors = schema.Validate(message.Content.ReadAsStringAsync().Result);

            if (errors.Count > 0)
            {
                throw new SchemaValidationException(errors.Select(e => $"{e.Path}: {e.Kind}").ToList());
            }
        }
Exemple #2
0
        static NJsonSchema.JsonReferenceResolver _Resolver(JSONSCHEMA schema, string basePath)
        {
            var generator = new NJsonSchema.Generation.JsonSchemaGeneratorSettings();

            var solver = new NJsonSchema.JsonSchemaAppender(schema, generator.TypeNameGenerator);

            return(new MyReferenceResolver(solver));
        }
Exemple #3
0
        public async Task Use_JsonSchemaGeneratorSettings_ContractResolver_For_JsonPropertyName()
        {
            var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings();

            settings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();

            //// Arrange
            var schema = JsonSchema.FromType <JsonPropertyAttributeTests.MyJsonPropertyTestClass>(settings);

            //// Act
            var property = schema.Properties["newName"];

            //// Assert
            Assert.Equal("newName", property.Name);
        }
Exemple #4
0
 public HttpResponseMessage Get()
 {
     try
     {
         var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings()
         {
             FlattenInheritanceHierarchy = true
         };
         var schema = NJsonSchema.JsonSchema.FromType <ExternalStandard>(settings);
         return(Request.CreateResponse(JsonConvert.DeserializeObject(schema.ToJson())));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        //        static string source_dir= @"";
        public static async Task jsonAsync(string file)
        {
            string directoryName     = Path.GetDirectoryName(file);
            string base_filenname    = Path.GetFileNameWithoutExtension(file);
            string https_schema_name = "https://schemas.insightglobal.net/" + base_filenname;

            string schema_text = File.ReadAllText(file);

            // schema_text=schema_text.Replace("$ref\": \"https://schemas.insightglobal.net/","$ref\":\"http://schema.dev.box/");

            try{
                NJsonSchema.Generation.JsonSchemaGeneratorSettings settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings();
                Func <JsonSchema4, JsonReferenceResolver>          referenceResolverFactory =
                    schema => new JsonReferenceResolver(
                        new NJsonSchema.JsonSchemaResolver(schema, settings)
                        );

                Console.WriteLine(file);
                var schema_object = await JsonSchema4.FromFileAsync(file, referenceResolverFactory).ConfigureAwait(true);

                // var schema_object= await JsonSchema4.FromUrlAsync(https_schema_name,referenceResolverFactory).ConfigureAwait(false);

                //settings


                //generate c# class
                var generator = new CSharpGenerator(schema_object);
                var cs_file   = generator.GenerateFile();

                string sub_path      = directoryName.Substring(source_dir.Length - 1);
                string dest_filename = String.Format("{0}\\{1}\\{2}.{3}", destination_dir, sub_path, base_filenname, "cs");

                //create directory
                string        dest_file_dir = Path.GetDirectoryName(dest_filename);
                DirectoryInfo di            = Directory.CreateDirectory(dest_file_dir);
                //write file
                File.WriteAllText(dest_filename, cs_file);
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
                Console.WriteLine(schema_text);
            }
        }
Exemple #6
0
        public async Task When_name_of_JsonPropertyAttribute_is_set_then_it_is_used_as_json_property_name_even_with_contactresolver_that_has_nameing_strategy()
        {
            var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings();

            settings.SerializerSettings = new JsonSerializerSettings
            {
                ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver
                {
                    NamingStrategy = new Newtonsoft.Json.Serialization.CamelCaseNamingStrategy()
                }
            };

            //// Arrange
            var schema = JsonSchema.FromType <JsonPropertyAttributeTests.MyJsonPropertyTestClass>(settings);

            //// Act
            var property = schema.Properties["NewName"];

            //// Assert
            Assert.Equal("NewName", property.Name);
        }