@@ -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+
377422func TestValidateBody_InvalidBasicSchema_SetPath (t * testing.T ) {
378423 spec := `openapi: 3.1.0
379424paths:
0 commit comments