@@ -44,7 +44,7 @@ func newvalidateResponseTestBed(
4444 t .Fatalf ("failed to build v3 model: %v" , err )
4545 }
4646
47- tb := validateResponseTestBed {responseBodyValidator : NewResponseBodyValidator (& m .Model , config .WithXmlBodyValidation ())}
47+ tb := validateResponseTestBed {responseBodyValidator : NewResponseBodyValidator (& m .Model , config .WithXmlBodyValidation (), config . WithURLEncodedBodyValidation () )}
4848 tb .httpTestServer = httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
4949 if tb .responseHandlerFunc != nil {
5050 tb .responseHandlerFunc (w , r )
@@ -1325,6 +1325,49 @@ paths:
13251325 assert .Equal (t , errors [0 ].Message , "xml example is malformed" )
13261326}
13271327
1328+ func TestValidateResponseBody_URLEncodedMarshalError (t * testing.T ) {
1329+ tb := newvalidateResponseTestBed (
1330+ t ,
1331+ []byte (`
1332+ openapi: 3.1.0
1333+ info:
1334+ title: Test Spec
1335+ version: 1.0.0
1336+ paths:
1337+ /test:
1338+ get:
1339+ responses:
1340+ '200':
1341+ description: Success
1342+ content:
1343+ application/x-www-form-urlencoded:
1344+ schema:
1345+ type: object
1346+ properties:
1347+ bad_number:
1348+ type: number
1349+ ` ,
1350+ ),
1351+ )
1352+
1353+ req , res := tb .makeRequestWithReponse (
1354+ t ,
1355+ http .MethodGet ,
1356+ "/test" ,
1357+ func (w http.ResponseWriter , r * http.Request ) {
1358+ w .Header ().Set (helpers .ContentTypeHeader , helpers .URLEncodedContentType )
1359+ w .WriteHeader (http .StatusOK )
1360+ _ , _ = w .Write ([]byte ("bad_number=NaN" ))
1361+ },
1362+ )
1363+
1364+ valid , errors := tb .responseBodyValidator .ValidateResponseBody (req , res )
1365+
1366+ assert .False (t , valid )
1367+ assert .Len (t , errors , 1 )
1368+ assert .Equal (t , errors [0 ].Message , "Unable to parse form-urlencoded body" )
1369+ }
1370+
13281371func TestValidateResponseBody_NilSchema (t * testing.T ) {
13291372 tb := newvalidateResponseTestBed (
13301373 t ,
0 commit comments