From 27dcb6630ece677a2ba6b7e7b53465acc097cdf0 Mon Sep 17 00:00:00 2001 From: Pierre Fenoll Date: Thu, 29 Apr 2021 14:19:51 +0200 Subject: [PATCH] cannot reproduce #353 Signed-off-by: Pierre Fenoll --- routers/gorillamux/example_test.go | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 routers/gorillamux/example_test.go diff --git a/routers/gorillamux/example_test.go b/routers/gorillamux/example_test.go new file mode 100644 index 000000000..33ce98e6a --- /dev/null +++ b/routers/gorillamux/example_test.go @@ -0,0 +1,64 @@ +package gorillamux_test + +import ( + "context" + "fmt" + "net/http" + + "github.com/getkin/kin-openapi/openapi3" + "github.com/getkin/kin-openapi/openapi3filter" + "github.com/getkin/kin-openapi/routers/gorillamux" +) + +func Example() { + ctx := context.Background() + loader := &openapi3.Loader{Context: ctx, IsExternalRefsAllowed: true} + doc, err := loader.LoadFromFile("../../openapi3/testdata/pathref.openapi.yml") + if err != nil { + panic(err) + } + if err = doc.Validate(ctx); err != nil { + panic(err) + } + router, err := gorillamux.NewRouter(doc) + if err != nil { + panic(err) + } + httpReq, err := http.NewRequest(http.MethodGet, "/test", nil) + if err != nil { + panic(err) + } + + route, pathParams, err := router.FindRoute(httpReq) + if err != nil { + panic(err) + } + + requestValidationInput := &openapi3filter.RequestValidationInput{ + Request: httpReq, + PathParams: pathParams, + Route: route, + } + if err := openapi3filter.ValidateRequest(ctx, requestValidationInput); err != nil { + panic(err) + } + + responseValidationInput := &openapi3filter.ResponseValidationInput{ + RequestValidationInput: requestValidationInput, + Status: 200, + Header: http.Header{"Content-Type": []string{"application/json"}}, + } + responseValidationInput.SetBodyBytes([]byte(`{}`)) + + err = openapi3filter.ValidateResponse(ctx, responseValidationInput) + fmt.Println(err) + // Output: + // response body doesn't match the schema: Field must be set to string or not be present + // Schema: + // { + // "type": "string" + // } + // + // Value: + // "object" +}