summaryrefslogtreecommitdiff
path: root/src/test/java/com/networknt/schema/Issue475Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/networknt/schema/Issue475Test.java')
-rw-r--r--src/test/java/com/networknt/schema/Issue475Test.java125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/test/java/com/networknt/schema/Issue475Test.java b/src/test/java/com/networknt/schema/Issue475Test.java
new file mode 100644
index 0000000..e9944cb
--- /dev/null
+++ b/src/test/java/com/networknt/schema/Issue475Test.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2024 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.networknt.schema;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.Set;
+
+import org.junit.jupiter.api.Test;
+
+import com.networknt.schema.SpecVersion.VersionFlag;
+import com.networknt.schema.serialization.JsonMapperFactory;
+
+/**
+ * Tests for validation of schema against meta schema.
+ */
+public class Issue475Test {
+ private static final String VALID_INPUT = "{ \n"
+ + " \"type\": \"object\", \n"
+ + " \"properties\": { \n"
+ + " \"key\": { \n"
+ + " \"title\" : \"My key\", \n"
+ + " \"type\": \"array\" \n"
+ + " } \n"
+ + " }\n"
+ + "}";
+
+ private static final String INVALID_INPUT = "{ \n"
+ + " \"type\": \"object\", \n"
+ + " \"properties\": { \n"
+ + " \"key\": { \n"
+ + " \"title\" : \"My key\", \n"
+ + " \"type\": \"blabla\" \n"
+ + " } \n"
+ + " }\n"
+ + "}";
+
+ @Test
+ public void draft4() throws Exception {
+ JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.getInstance(VersionFlag.V4, builder -> builder
+ .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("http://json-schema.org", "classpath:")));
+ SchemaValidatorsConfig config = new SchemaValidatorsConfig();
+ config.setPathType(PathType.JSON_POINTER);
+ JsonSchema schema = jsonSchemaFactory.getSchema(SchemaLocation.of(SchemaId.V4), config);
+
+ Set<ValidationMessage> assertions = schema.validate(JsonMapperFactory.getInstance().readTree(INVALID_INPUT));
+ assertEquals(2, assertions.size());
+
+ assertions = schema.validate(JsonMapperFactory.getInstance().readTree(VALID_INPUT));
+ assertEquals(0, assertions.size());
+ }
+
+ @Test
+ public void draft6() throws Exception {
+ JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.getInstance(VersionFlag.V6, builder -> builder
+ .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("http://json-schema.org", "classpath:")));
+ SchemaValidatorsConfig config = new SchemaValidatorsConfig();
+ config.setPathType(PathType.JSON_POINTER);
+ JsonSchema schema = jsonSchemaFactory.getSchema(SchemaLocation.of(SchemaId.V6), config);
+
+ Set<ValidationMessage> assertions = schema.validate(JsonMapperFactory.getInstance().readTree(INVALID_INPUT));
+ assertEquals(2, assertions.size());
+
+ assertions = schema.validate(JsonMapperFactory.getInstance().readTree(VALID_INPUT));
+ assertEquals(0, assertions.size());
+ }
+
+ @Test
+ public void draft7() throws Exception {
+ JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.getInstance(VersionFlag.V7, builder -> builder
+ .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("http://json-schema.org", "classpath:")));
+ SchemaValidatorsConfig config = new SchemaValidatorsConfig();
+ config.setPathType(PathType.JSON_POINTER);
+ JsonSchema schema = jsonSchemaFactory.getSchema(SchemaLocation.of(SchemaId.V7), config);
+
+ Set<ValidationMessage> assertions = schema.validate(JsonMapperFactory.getInstance().readTree(INVALID_INPUT));
+ assertEquals(2, assertions.size());
+
+ assertions = schema.validate(JsonMapperFactory.getInstance().readTree(VALID_INPUT));
+ assertEquals(0, assertions.size());
+ }
+
+ @Test
+ public void draft201909() throws Exception {
+ JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.getInstance(VersionFlag.V201909, builder -> builder
+ .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("https://json-schema.org", "classpath:")));
+ SchemaValidatorsConfig config = new SchemaValidatorsConfig();
+ config.setPathType(PathType.JSON_POINTER);
+ JsonSchema schema = jsonSchemaFactory.getSchema(SchemaLocation.of(SchemaId.V201909), config);
+
+ Set<ValidationMessage> assertions = schema.validate(JsonMapperFactory.getInstance().readTree(INVALID_INPUT));
+ assertEquals(2, assertions.size());
+
+ assertions = schema.validate(JsonMapperFactory.getInstance().readTree(VALID_INPUT));
+ assertEquals(0, assertions.size());
+ }
+
+ @Test
+ public void draft202012() throws Exception {
+ JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.getInstance(VersionFlag.V202012, builder -> builder
+ .schemaMappers(schemaMappers -> schemaMappers.mapPrefix("https://json-schema.org", "classpath:")));
+ SchemaValidatorsConfig config = new SchemaValidatorsConfig();
+ config.setPathType(PathType.JSON_POINTER);
+ JsonSchema schema = jsonSchemaFactory.getSchema(SchemaLocation.of(SchemaId.V202012), config);
+
+ Set<ValidationMessage> assertions = schema.validate(JsonMapperFactory.getInstance().readTree(INVALID_INPUT));
+ assertEquals(2, assertions.size());
+
+ assertions = schema.validate(JsonMapperFactory.getInstance().readTree(VALID_INPUT));
+ assertEquals(0, assertions.size());
+ }
+}