@@ -406,7 +406,7 @@ def api_request(configuration, context, name):
406406def request_body (context , data ):
407407 """Set request body."""
408408 tpl = Template (data ).render (** context )
409- context ["api_request" ]["kwargs" ]["body" ] = json . loads ( tpl )
409+ context ["api_request" ]["kwargs" ]["body" ] = tpl
410410
411411
412412@given (parsers .parse ('body from file "{path}"' ))
@@ -416,21 +416,20 @@ def request_body_from_file(context, path, package_name):
416416 with open (os .path .join (os .path .dirname (__file__ ), version , "features" , path )) as f :
417417 data = f .read ()
418418 tpl = Template (data ).render (** context )
419- context ["api_request" ]["kwargs" ]["body" ] = json . loads ( tpl )
419+ context ["api_request" ]["kwargs" ]["body" ] = tpl
420420
421421
422422@given (parsers .parse ('request contains "{name}" parameter from "{path}"' ))
423423def request_parameter (context , name , path ):
424424 """Set request parameter."""
425-
426- context ["api_request" ]["kwargs" ][escape_reserved_keyword (snake_case (name ))] = glom (context , path )
425+ context ["api_request" ]["kwargs" ][escape_reserved_keyword (snake_case (name ))] = json .dumps (glom (context , path ))
427426
428427
429428@given (parsers .parse ('request contains "{name}" parameter with value {value}' ))
430429def request_parameter_with_value (context , name , value ):
431430 """Set request parameter."""
432431 tpl = Template (value ).render (** context )
433- context ["api_request" ]["kwargs" ][escape_reserved_keyword (snake_case (name ))] = json . loads ( tpl )
432+ context ["api_request" ]["kwargs" ][escape_reserved_keyword (snake_case (name ))] = tpl
434433
435434
436435def build_given (version , operation ):
@@ -539,6 +538,10 @@ def execute_request(undo, context, client, api_version):
539538 """Execute the prepared request."""
540539 api_request = context ["api_request" ]
541540
541+ params_map = getattr (api_request ["api" ], f'_{ api_request ["request" ].__name__ } _endpoint' ).params_map
542+ for k , v in api_request ["kwargs" ].items ():
543+ api_request ["kwargs" ][k ] = client .deserialize (v , params_map [k ]['openapi_types' ], True )
544+
542545 try :
543546 response = api_request ["request" ](* api_request ["args" ], ** api_request ["kwargs" ])
544547 # Reserialise the response body to JSON to facilitate test assertions
@@ -569,6 +572,10 @@ def execute_request_with_pagination(undo, context, client, api_version):
569572 """Execute the prepared paginated request."""
570573 api_request = context ["api_request" ]
571574
575+ params_map = getattr (api_request ["api" ], f'_{ api_request ["request" ].__name__ } _endpoint' ).params_map
576+ for k , v in api_request ["kwargs" ].items ():
577+ api_request ["kwargs" ][k ] = client .deserialize (v , params_map [k ]['openapi_types' ], True )
578+
572579 kwargs = api_request ["kwargs" ]
573580 client .configuration .return_http_data_only = True
574581 method = getattr (api_request ["api" ], f"{ api_request ['request' ].__name__ } _with_pagination" )
0 commit comments