From 4b53bf6e0fe58d9b426fa72fe61a8f3c027e2462 Mon Sep 17 00:00:00 2001 From: Toly Date: Thu, 4 Jul 2024 09:39:00 +0200 Subject: [PATCH] openapi3: add a test for additionalProperties: false validation (#975) * test: add a test for additionalProperties: false validation * goimports --- openapi3/issue82_test.go | 103 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 openapi3/issue82_test.go diff --git a/openapi3/issue82_test.go b/openapi3/issue82_test.go new file mode 100644 index 00000000..3bf242bc --- /dev/null +++ b/openapi3/issue82_test.go @@ -0,0 +1,103 @@ +package openapi3 + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIssue82(t *testing.T) { + payload := map[string]interface{}{ + "prop1": "val", + "prop3": "val", + } + + schemas := []string{` +{ + "type": "object", + "additionalProperties": false, + "required": ["prop1"], + "properties": { + "prop1": { + "type": "string" + } + } +}`, `{ + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["prop1"], + "properties": { + "prop1": { + "type": "string" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "prop2": { + "type": "string" + } + } + } + ] +}`, `{ + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["prop1"], + "properties": { + "prop1": { + "type": "string" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "prop2": { + "type": "string" + } + } + } + ] +}`, `{ + "allOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["prop1"], + "properties": { + "prop1": { + "type": "string" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "prop2": { + "type": "string" + } + } + } + ] + } +`} + + for _, jsonSchema := range schemas { + var dataSchema Schema + err := json.Unmarshal([]byte(jsonSchema), &dataSchema) + require.NoError(t, err) + + err = dataSchema.VisitJSON(payload) + require.Error(t, err) + } +}