From adbf35e2588ca07fbc684b1c5f91f2455db4ad75 Mon Sep 17 00:00:00 2001 From: Dang Nguyen Date: Fri, 19 Jun 2020 16:03:29 +0200 Subject: [PATCH 1/2] fix regex to allow dot between parameters in path --- .../core/validation/ValidationRule.java | 4 +- .../openapi/3.0/invalid-property-name.json | 66 +++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/apicurio/datamodels/core/validation/ValidationRule.java b/src/main/java/io/apicurio/datamodels/core/validation/ValidationRule.java index baf3ca80..06d652fd 100644 --- a/src/main/java/io/apicurio/datamodels/core/validation/ValidationRule.java +++ b/src/main/java/io/apicurio/datamodels/core/validation/ValidationRule.java @@ -49,8 +49,8 @@ public abstract class ValidationRule extends CombinedAllNodeVisitor implements I })); }; - private static String PATH_MATCH_REGEX = "^(\\/[^{}\\/]*(\\{[a-zA-Z_][0-9a-zA-Z_]*\\})?)+$"; - private static String SEG_MATCH_REGEX = "\\/([^{}\\/]*)(\\{([a-zA-Z_][0-9a-zA-Z_]*)\\})?"; + private static String PATH_MATCH_REGEX = "^(\\/[^{}\\/]*(\\{[a-zA-Z_][0-9a-zA-Z_]*\\})?(\\.\\{[a-zA-Z_][0-9a-zA-Z_]*\\})?)+$"; + private static String SEG_MATCH_REGEX = "[\\/\\.]([^{}\\/]*)(\\{([a-zA-Z_][0-9a-zA-Z_]*)\\})?"; private static String URL_MATCH_REGEX = "^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$"; private static String EMAIL_MATCH_REGEX = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"; private static String MIME_TYPE_MATCH_REGEX = "^.*\\/.*(;.*)?$"; diff --git a/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json b/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json index a7fe7a48..f1a28264 100644 --- a/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json +++ b/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json @@ -643,6 +643,72 @@ } } } + }, + "/pathstest28/{var1}.{var2}": { + "get": { + "description": "pathstest28 - path with dot (/pathstest28/{var1}.{var2}) - valid", + "parameters": [ + { + "$ref": "#/components/parameters/var1" + }, + { + "$ref": "#/components/parameters/var2" + } + ], + "responses": { + "default": { + "description": "..." + } + } + } + }, + "/pathstest28/test.{var1}": { + "get": { + "description": "pathstest28 - path with dot (/pathstest28/test.{var1}) - valid", + "parameters": [ + { + "$ref": "#/components/parameters/var1" + } + ], + "responses": { + "default": { + "description": "..." + } + } + } + }, + "/pathstest28/{var1}.{var2}": { + "get": { + "description": "pathstest28 - path with dot (/pathstest28/{var1}.{var2}) - valid", + "parameters": [ + { + "$ref": "#/components/parameters/var1" + }, + { + "$ref": "#/components/parameters/var2" + } + ], + "responses": { + "default": { + "description": "..." + } + } + } + }, + "/pathstest28/test.{var1}": { + "get": { + "description": "pathstest28 - path with dot (/pathstest28/test.{var1}) - valid", + "parameters": [ + { + "$ref": "#/components/parameters/var1" + } + ], + "responses": { + "default": { + "description": "..." + } + } + } } }, "components": { From 853b8e461a6db764a5f88b60109c24c866d4e18c Mon Sep 17 00:00:00 2001 From: Dang Nguyen Date: Fri, 19 Jun 2020 16:24:05 +0200 Subject: [PATCH 2/2] remove duplicated tests --- .../openapi/3.0/invalid-property-name.json | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json b/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json index f1a28264..6c157316 100644 --- a/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json +++ b/src/test/resources/fixtures/validation/openapi/3.0/invalid-property-name.json @@ -662,39 +662,6 @@ } } }, - "/pathstest28/test.{var1}": { - "get": { - "description": "pathstest28 - path with dot (/pathstest28/test.{var1}) - valid", - "parameters": [ - { - "$ref": "#/components/parameters/var1" - } - ], - "responses": { - "default": { - "description": "..." - } - } - } - }, - "/pathstest28/{var1}.{var2}": { - "get": { - "description": "pathstest28 - path with dot (/pathstest28/{var1}.{var2}) - valid", - "parameters": [ - { - "$ref": "#/components/parameters/var1" - }, - { - "$ref": "#/components/parameters/var2" - } - ], - "responses": { - "default": { - "description": "..." - } - } - } - }, "/pathstest28/test.{var1}": { "get": { "description": "pathstest28 - path with dot (/pathstest28/test.{var1}) - valid",