1 package com.networknt.schema; 2 3 import com.fasterxml.jackson.databind.JsonNode; 4 import com.fasterxml.jackson.databind.ObjectMapper; 5 import org.junit.jupiter.api.Assertions; 6 import org.junit.jupiter.api.Test; 7 8 import java.io.IOException; 9 import java.util.Set; 10 11 public class UnknownMetaSchemaTest { 12 13 private String schema1 = "{\"$schema\":\"http://json-schema.org/draft-07/schema\",\"title\":\"thingModel\",\"description\":\"description of thing\",\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"integer\"},\"required\":[\"data\"]}}"; 14 private String schema2 = "{\"$schema\":\"https://json-schema.org/draft-07/schema\",\"title\":\"thingModel\",\"description\":\"description of thing\",\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"integer\"},\"required\":[\"data\"]}}"; 15 private String schema3 = "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"title\":\"thingModel\",\"description\":\"description of thing\",\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"integer\"},\"required\":[\"data\"]}}"; 16 17 private String json = "{\"data\":1}"; 18 19 @Test testSchema1()20 public void testSchema1() throws IOException { 21 ObjectMapper mapper = new ObjectMapper(); 22 JsonNode jsonNode = mapper.readTree(this.json); 23 24 JsonSchemaFactory factory = JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7)).jsonMapper(mapper).build(); 25 JsonSchema jsonSchema = factory.getSchema(schema1); 26 27 Set<ValidationMessage> errors = jsonSchema.validate(jsonNode); 28 for(ValidationMessage error:errors) { 29 System.out.println(error.getMessage()); 30 } 31 } 32 33 @Test testSchema2()34 public void testSchema2() throws IOException { 35 ObjectMapper mapper = new ObjectMapper(); 36 JsonNode jsonNode = mapper.readTree(this.json); 37 38 JsonSchemaFactory factory = JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7)).jsonMapper(mapper).build(); 39 JsonSchema jsonSchema = factory.getSchema(schema2); 40 41 Set<ValidationMessage> errors = jsonSchema.validate(jsonNode); 42 for(ValidationMessage error:errors) { 43 System.out.println(error.getMessage()); 44 } 45 } 46 @Test testSchema3()47 public void testSchema3() throws IOException { 48 ObjectMapper mapper = new ObjectMapper(); 49 JsonNode jsonNode = mapper.readTree(this.json); 50 51 JsonSchemaFactory factory = JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7)).jsonMapper(mapper).build(); 52 JsonSchema jsonSchema = factory.getSchema(schema3); 53 54 Set<ValidationMessage> errors = jsonSchema.validate(jsonNode); 55 for(ValidationMessage error:errors) { 56 System.out.println(error.getMessage()); 57 } 58 } 59 60 @Test testNormalize()61 public void testNormalize() throws JsonSchemaException { 62 63 String uri01 = "http://json-schema.org/draft-07/schema"; 64 String uri02 = "http://json-schema.org/draft-07/schema#"; 65 String uri03 = "http://json-schema.org/draft-07/schema?key=value"; 66 String uri04 = "http://json-schema.org/draft-07/schema?key=value&key2=value2"; 67 String expected = SchemaId.V7; 68 69 Assertions.assertEquals(expected, JsonSchemaFactory.normalizeMetaSchemaUri(uri01)); 70 Assertions.assertEquals(expected, JsonSchemaFactory.normalizeMetaSchemaUri(uri02)); 71 Assertions.assertEquals(expected, JsonSchemaFactory.normalizeMetaSchemaUri(uri03)); 72 Assertions.assertEquals(expected, JsonSchemaFactory.normalizeMetaSchemaUri(uri04)); 73 74 } 75 } 76