Skip to content

Commit 285c6d3

Browse files
k1LoWdaveshanley
authored andcommitted
Add test for invalid response body
1 parent f29d820 commit 285c6d3

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

responses/validate_body_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,51 @@ paths:
374374
//assert.Len(t, errors[0].SchemaValidationErrors, 2)
375375
}
376376

377+
func TestValidateBody_InvalidResponse(t *testing.T) {
378+
spec := `openapi: 3.1.0
379+
paths:
380+
/burgers/createBurger:
381+
post:
382+
responses:
383+
'200':
384+
content:
385+
application/json:
386+
schema:
387+
type: object
388+
properties:
389+
name:
390+
type: string
391+
patties:
392+
type: integer
393+
vegetarian:
394+
type: boolean`
395+
396+
doc, _ := libopenapi.NewDocument([]byte(spec))
397+
398+
m, _ := doc.BuildV3Model()
399+
v := NewResponseBodyValidator(&m.Model)
400+
401+
// build a request
402+
request, _ := http.NewRequest(http.MethodPost, "https://things.com/burgers/createBurger", http.NoBody)
403+
request.Header.Set(helpers.ContentTypeHeader, helpers.JSONContentType)
404+
405+
// invalid response
406+
response := &http.Response{
407+
Header: http.Header{},
408+
StatusCode: http.StatusOK,
409+
Body: nil, // invalid response body
410+
}
411+
response.Header.Set(helpers.ContentTypeHeader, helpers.JSONContentType)
412+
413+
// validate!
414+
valid, errors := v.ValidateResponseBody(request, response)
415+
// doubletap to hit cache
416+
_, _ = v.ValidateResponseBody(request, response)
417+
418+
assert.False(t, valid)
419+
assert.Len(t, errors, 1)
420+
}
421+
377422
func TestValidateBody_InvalidBasicSchema_SetPath(t *testing.T) {
378423
spec := `openapi: 3.1.0
379424
paths:

0 commit comments

Comments
 (0)