From 2ddc1bd172e2d25095d9a065aec8f03f593e1422 Mon Sep 17 00:00:00 2001 From: shivay Date: Wed, 10 Jun 2026 12:55:48 +0530 Subject: [PATCH] fix: Updated path param char limit from 32 to 128. --- openapi2kong/openapi2kong.go | 4 ++-- openapi2kong/openapi2kong_test.go | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/openapi2kong/openapi2kong.go b/openapi2kong/openapi2kong.go index 798fd5f..04bb44b 100644 --- a/openapi2kong/openapi2kong.go +++ b/openapi2kong/openapi2kong.go @@ -1254,8 +1254,8 @@ func Convert(content []byte, opts O2kOptions) (map[string]interface{}, error) { // match single segment; '/', '?', and '#' can mark the end of a segment // see https://github.com/OAI/OpenAPI-Specification/issues/291#issuecomment-316593913 captureName := openapitools.SanitizeRegexCapture(varName, opts.InsoCompat) - if len(captureName) >= 32 { - return nil, fmt.Errorf("path-parameter name exceeds 32 characters: '%s' (sanitized to '%s')", + if len(captureName) >= 128 { + return nil, fmt.Errorf("path-parameter name exceeds 128 characters: '%s' (sanitized to '%s')", varName, captureName) } regexMatch := "(?<" + captureName + ">[^#?/]+)" diff --git a/openapi2kong/openapi2kong_test.go b/openapi2kong/openapi2kong_test.go index 3175a30..d07e0f2 100644 --- a/openapi2kong/openapi2kong_test.go +++ b/openapi2kong/openapi2kong_test.go @@ -179,7 +179,10 @@ func Test_Openapi2kong_IgnoreCircularRefs(t *testing.T) { } func Test_Openapi2kong_pathParamLength(t *testing.T) { - testDataString := ` + // 129 characters, exceeding the 128-character limit + longParamName := "something-very-long-that-is-way-beyond-the-previous-32-character-" + + "limit-and-now-valid-with-the-updated-128-character-limit-123456" + testDataString := fmt.Sprintf(` openapi: 3.0.3 info: title: Path parameter test @@ -188,24 +191,24 @@ servers: - url: "https://example.com" paths: - /demo/{something-very-long-that-is-way-beyond-the-32-limit}/: + /demo/{%s}/: get: operationId: opsid parameters: - in: path - name: something-very-long-that-is-way-beyond-the-32-limit + name: %s required: true schema: type: string responses: "200": description: OK -` +`, longParamName, longParamName) _, err := Convert([]byte(testDataString), O2kOptions{}) if err == nil { t.Error("Expected error, but got none") } else { - assert.Contains(t, err.Error(), "path-parameter name exceeds 32 characters") + assert.Contains(t, err.Error(), "path-parameter name exceeds 128 characters") } }