From 0c499219a0a18af4706dc307b35706163569648a Mon Sep 17 00:00:00 2001 From: quobix Date: Thu, 2 May 2024 16:17:23 -0400 Subject: [PATCH] Addressing issue #83 mocking upgraded upstream in libopenapi --- mock/mock_engine_test.go | 121 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/mock/mock_engine_test.go b/mock/mock_engine_test.go index eca1809..451e410 100644 --- a/mock/mock_engine_test.go +++ b/mock/mock_engine_test.go @@ -1111,4 +1111,125 @@ components: assert.NoError(t, err) assert.Equal(t, 200, status) assert.Equal(t, "

Happy Days", string(b[:])) + +} + +// https://github.com/pb33f/wiretap/issues/83 +func TestNewMockEngine_UseExamples_Items_Issue83(t *testing.T) { + + spec := `openapi: 3.1.0 +paths: + /chip-shop: + get: + operationId: itemsExamples + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + args: + type: object + properties: + arrParam: + type: string + example: "test,test2" + arrParamExploded: + type: array + items: + type: string + examples: + - "1" + - "2" + required: + - arrParam + - arrParamExploded + required: + - args +` + + d, _ := libopenapi.NewDocument([]byte(spec)) + doc, _ := d.BuildV3Model() + + me := NewMockEngine(&doc.Model, false) + + request, _ := http.NewRequest(http.MethodGet, "https://api.pb33f.io/chip-shop", nil) + + b, status, err := me.GenerateResponse(request) + + assert.NoError(t, err) + assert.Equal(t, 200, status) + + var decoded map[string]any + _ = json.Unmarshal(b, &decoded) + + args := decoded["args"].(map[string]any) + + assert.Equal(t, "test,test2", args["arrParam"]) + + items := args["arrParamExploded"].([]any) + assert.Equal(t, "1", items[0]) + assert.Equal(t, "2", items[1]) + +} + +// https://github.com/pb33f/wiretap/issues/83 +func TestNewMockEngine_UseExample_Items_Issue83(t *testing.T) { + + spec := `openapi: 3.1.0 +paths: + /chip-shop: + get: + operationId: itemsExamples + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + args: + type: object + properties: + arrParam: + type: string + example: "test,test2" + arrParamExploded: + type: array + items: + type: string + example: "1" + required: + - arrParam + - arrParamExploded + required: + - args +` + + d, _ := libopenapi.NewDocument([]byte(spec)) + doc, _ := d.BuildV3Model() + + me := NewMockEngine(&doc.Model, false) + + request, _ := http.NewRequest(http.MethodGet, "https://api.pb33f.io/chip-shop", nil) + + b, status, err := me.GenerateResponse(request) + + assert.NoError(t, err) + assert.Equal(t, 200, status) + + var decoded map[string]any + _ = json.Unmarshal(b, &decoded) + + args := decoded["args"].(map[string]any) + + assert.Equal(t, "test,test2", args["arrParam"]) + + items := args["arrParamExploded"].([]any) + assert.Equal(t, "1", items[0]) + assert.Equal(t, "2", items[1]) + }