1 package com.networknt.schema; 2 3 import java.io.InputStream; 4 import java.util.Set; 5 6 import org.junit.jupiter.api.Assertions; 7 import org.junit.jupiter.api.Test; 8 9 import com.fasterxml.jackson.databind.JsonNode; 10 import com.fasterxml.jackson.databind.ObjectMapper; 11 12 public class Issue342Test { getJsonSchemaFromStreamContentV7(InputStream schemaContent)13 protected JsonSchema getJsonSchemaFromStreamContentV7(InputStream schemaContent) { 14 JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7); 15 return factory.getSchema(schemaContent); 16 } 17 getJsonNodeFromStreamContent(InputStream content)18 protected JsonNode getJsonNodeFromStreamContent(InputStream content) throws Exception { 19 ObjectMapper mapper = new ObjectMapper(); 20 JsonNode node = mapper.readTree(content); 21 return node; 22 } 23 24 @Test propertyNameEnumShouldFailV7()25 public void propertyNameEnumShouldFailV7() throws Exception { 26 String schemaPath = "/schema/issue342-v7.json"; 27 String dataPath = "/data/issue342.json"; 28 InputStream schemaInputStream = getClass().getResourceAsStream(schemaPath); 29 JsonSchema schema = getJsonSchemaFromStreamContentV7(schemaInputStream); 30 InputStream dataInputStream = getClass().getResourceAsStream(dataPath); 31 JsonNode node = getJsonNodeFromStreamContent(dataInputStream); 32 Set<ValidationMessage> errors = schema.validate(node); 33 Assertions.assertEquals(1, errors.size()); 34 final ValidationMessage error = errors.iterator().next(); 35 Assertions.assertEquals("$", error.getInstanceLocation().toString()); 36 Assertions.assertEquals("$: property 'z' name is not valid: does not have a value in the enumeration [a, b, c]", error.getMessage()); 37 } 38 } 39