• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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