1 package com.networknt.schema; 2 3 import com.fasterxml.jackson.databind.ObjectMapper; 4 import org.junit.jupiter.api.Assertions; 5 import org.junit.jupiter.api.Test; 6 7 public class Issue928Test { 8 private final ObjectMapper mapper = new ObjectMapper(); 9 factoryFor(SpecVersion.VersionFlag version)10 private JsonSchemaFactory factoryFor(SpecVersion.VersionFlag version) { 11 return JsonSchemaFactory 12 .builder(JsonSchemaFactory.getInstance(version)) 13 .jsonMapper(mapper) 14 .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("https://example.org", "classpath:")) 15 .build(); 16 } 17 18 @Test test_07()19 public void test_07() { 20 test_spec(SpecVersion.VersionFlag.V7); 21 } 22 23 @Test test_201909()24 public void test_201909() { 25 test_spec(SpecVersion.VersionFlag.V201909); 26 } 27 28 @Test test_202012()29 public void test_202012() { 30 test_spec(SpecVersion.VersionFlag.V202012); 31 } 32 test_spec(SpecVersion.VersionFlag specVersion)33 public void test_spec(SpecVersion.VersionFlag specVersion) { 34 JsonSchemaFactory schemaFactory = factoryFor(specVersion); 35 36 String versionId = specVersion.getId(); 37 String versionStr = versionId.substring(versionId.indexOf("draft") + 6, versionId.indexOf("/schema")); 38 39 String baseUrl = String.format("https://example.org/schema/issue928-v%s.json", versionStr); 40 System.out.println("baseUrl: " + baseUrl); 41 42 JsonSchema byPointer = schemaFactory.getSchema( 43 SchemaLocation.of(baseUrl + "#/definitions/example")); 44 45 Assertions.assertEquals(byPointer.validate(mapper.valueToTree("A")).size(), 0); 46 Assertions.assertEquals(byPointer.validate(mapper.valueToTree("Z")).size(), 1); 47 48 JsonSchema byAnchor = schemaFactory.getSchema( 49 SchemaLocation.of(baseUrl + "#example")); 50 51 Assertions.assertEquals( 52 byPointer.getSchemaNode(), 53 byAnchor.getSchemaNode()); 54 55 Assertions.assertEquals(byAnchor.validate(mapper.valueToTree("A")).size(), 0); 56 Assertions.assertEquals(byAnchor.validate(mapper.valueToTree("Z")).size(), 1); 57 } 58 } 59