tests: Add support for patching requestBody in curl example test.

This commit is contained in:
Vishnu Ks
2019-11-18 14:48:49 +00:00
committed by Tim Abbott
parent 742de73bde
commit 4c5e9e8eb0
2 changed files with 23 additions and 12 deletions

View File

@@ -160,10 +160,12 @@ def generate_curl_example(endpoint: str, method: str,
lines = ["```curl"] lines = ["```curl"]
openapi_entry = openapi_spec.spec()['paths'][endpoint][method.lower()] openapi_entry = openapi_spec.spec()['paths'][endpoint][method.lower()]
openapi_params = openapi_entry.get("parameters", []) openapi_params = openapi_entry.get("parameters", [])
openapi_request_body = openapi_entry.get("requestBody", None)
if settings.RUNNING_OPENAPI_CURL_TEST: # nocoverage if settings.RUNNING_OPENAPI_CURL_TEST: # nocoverage
from zerver.openapi.curl_param_value_generators import patch_openapi_params from zerver.openapi.curl_param_value_generators import patch_openapi_example_values
openapi_params = patch_openapi_params(endpoint + ":" + method.lower(), openapi_params) openapi_params, openapi_request_body = patch_openapi_example_values(endpoint + ":" + method.lower(),
openapi_params, openapi_request_body)
format_dict = {} format_dict = {}
for param in openapi_params: for param in openapi_params:

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any, Callable, Set, List from typing import Dict, Any, Callable, Set, List, Optional, Tuple
from functools import wraps from functools import wraps
@@ -36,16 +36,25 @@ def openapi_param_value_generator(endpoints: List[str]) -> Callable[[Callable[..
return _record_calls_wrapper return _record_calls_wrapper
return wrapper return wrapper
def patch_openapi_params(openapi_entry: str, openapi_params: List[Dict[str, Any]]) -> List[Dict[str, Any]]: def patch_openapi_example_values(entry: str, params: List[Dict[str, Any]],
if openapi_entry not in GENERATOR_FUNCTIONS: request_body: Optional[Dict[str, Any]]=None) \
return openapi_params -> Tuple[List[Dict[str, Any]], Optional[Dict[str, Any]]]:
func = GENERATOR_FUNCTIONS[openapi_entry] if entry not in GENERATOR_FUNCTIONS:
realm_param_values = func() # type: Dict[str, Any] return params, request_body
for param in openapi_params: func = GENERATOR_FUNCTIONS[entry]
realm_example_values = func() # type: Dict[str, Any]
for param in params:
param_name = param["name"] param_name = param["name"]
if param_name in realm_param_values: if param_name in realm_example_values:
param["example"] = realm_param_values[param_name] param["example"] = realm_example_values[param_name]
return openapi_params
if request_body is not None:
properties = request_body["content"]["multipart/form-data"]["schema"]["properties"]
for key, property in properties.items():
if key in realm_example_values:
property["example"] = realm_example_values[key]
return params, request_body
@openapi_param_value_generator(["/messages/{message_id}:get", "/messages/{message_id}/history:get", @openapi_param_value_generator(["/messages/{message_id}:get", "/messages/{message_id}/history:get",
"/messages/{message_id}:patch", "/messages/{message_id}:delete"]) "/messages/{message_id}:patch", "/messages/{message_id}:delete"])