From 2ff7c595854bcabe4659040dc54915e83480fa5f Mon Sep 17 00:00:00 2001 From: Tristan Cartledge Date: Mon, 4 Dec 2023 10:15:31 +0000 Subject: [PATCH] tests: add failing test case for recursive callback reference --- document_test.go | 21 +++++++++++++++++++ .../min-callbacks.yaml | 3 +++ .../min-components.yaml | 9 ++++++++ .../min-openapi.yaml | 16 ++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 test_specs/advancecallbackreferences/min-callbacks.yaml create mode 100644 test_specs/advancecallbackreferences/min-components.yaml create mode 100644 test_specs/advancecallbackreferences/min-openapi.yaml diff --git a/document_test.go b/document_test.go index c879870..4db12d4 100644 --- a/document_test.go +++ b/document_test.go @@ -3,6 +3,7 @@ package libopenapi import ( + "bytes" "fmt" "log/slog" "os" @@ -1170,3 +1171,23 @@ func TestDocument_Render_PreserveOrder(t *testing.T) { }) }) } + +func TestDocument_AdvanceCallbackReferences(t *testing.T) { + bs, _ := os.ReadFile("test_specs/advancecallbackreferences/min-openapi.yaml") + + buf := bytes.NewBuffer([]byte{}) + + config := datamodel.NewDocumentConfiguration() + config.AllowRemoteReferences = true + config.AllowFileReferences = true + config.BasePath = "test_specs/advancecallbackreferences" + config.Logger = slog.New(slog.NewJSONHandler(buf, &slog.HandlerOptions{Level: slog.LevelError})) + + doc, err := NewDocumentWithConfiguration(bs, config) + require.NoError(t, err) + + _, errs := doc.BuildV3Model() + require.Empty(t, errs) + + assert.Empty(t, buf.String()) +} diff --git a/test_specs/advancecallbackreferences/min-callbacks.yaml b/test_specs/advancecallbackreferences/min-callbacks.yaml new file mode 100644 index 0000000..d2ab1fb --- /dev/null +++ b/test_specs/advancecallbackreferences/min-callbacks.yaml @@ -0,0 +1,3 @@ +test-callback: + "/test-callback": + $ref: "./min-components.yaml#/components/pathItems/test-callback" diff --git a/test_specs/advancecallbackreferences/min-components.yaml b/test_specs/advancecallbackreferences/min-components.yaml new file mode 100644 index 0000000..3ad6089 --- /dev/null +++ b/test_specs/advancecallbackreferences/min-components.yaml @@ -0,0 +1,9 @@ +components: + pathItems: + test-callback: + $ref: "#/components/pathItems/test-callback-2" + test-callback-2: + get: + responses: + "200": + description: OK diff --git a/test_specs/advancecallbackreferences/min-openapi.yaml b/test_specs/advancecallbackreferences/min-openapi.yaml new file mode 100644 index 0000000..3b75fab --- /dev/null +++ b/test_specs/advancecallbackreferences/min-openapi.yaml @@ -0,0 +1,16 @@ +openapi: 3.1.0 +info: + title: Test + version: 0.0.1 +servers: + - url: https://test.com +paths: + /test: + get: + operationId: test + responses: + "200": + description: OK + callbacks: + test: + $ref: "./min-callbacks.yaml#/test-callback"