@@ -406,7 +406,7 @@ def api_request(configuration, context, name):
406
406
def request_body (context , data ):
407
407
"""Set request body."""
408
408
tpl = Template (data ).render (** context )
409
- context ["api_request" ]["kwargs" ]["body" ] = json . loads ( tpl )
409
+ context ["api_request" ]["kwargs" ]["body" ] = tpl
410
410
411
411
412
412
@given (parsers .parse ('body from file "{path}"' ))
@@ -416,21 +416,20 @@ def request_body_from_file(context, path, package_name):
416
416
with open (os .path .join (os .path .dirname (__file__ ), version , "features" , path )) as f :
417
417
data = f .read ()
418
418
tpl = Template (data ).render (** context )
419
- context ["api_request" ]["kwargs" ]["body" ] = json . loads ( tpl )
419
+ context ["api_request" ]["kwargs" ]["body" ] = tpl
420
420
421
421
422
422
@given (parsers .parse ('request contains "{name}" parameter from "{path}"' ))
423
423
def request_parameter (context , name , path ):
424
424
"""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 ))
427
426
428
427
429
428
@given (parsers .parse ('request contains "{name}" parameter with value {value}' ))
430
429
def request_parameter_with_value (context , name , value ):
431
430
"""Set request parameter."""
432
431
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
434
433
435
434
436
435
def build_given (version , operation ):
@@ -539,6 +538,10 @@ def execute_request(undo, context, client, api_version):
539
538
"""Execute the prepared request."""
540
539
api_request = context ["api_request" ]
541
540
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
+
542
545
try :
543
546
response = api_request ["request" ](* api_request ["args" ], ** api_request ["kwargs" ])
544
547
# Reserialise the response body to JSON to facilitate test assertions
@@ -569,6 +572,10 @@ def execute_request_with_pagination(undo, context, client, api_version):
569
572
"""Execute the prepared paginated request."""
570
573
api_request = context ["api_request" ]
571
574
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
+
572
579
kwargs = api_request ["kwargs" ]
573
580
client .configuration .return_http_data_only = True
574
581
method = getattr (api_request ["api" ], f"{ api_request ['request' ].__name__ } _with_pagination" )
0 commit comments