Skip to content

Commit 64408c6

Browse files
therveci.datadog-api-specskarimo
authored
Check for unparsed object in tests (#1449)
* Check for unparsed object in tests When validation happens, make sure there is no unparsed object as that would be a generation bug. * pre-commit fixes * Update tests/conftest.py Co-authored-by: skarimo <[email protected]> --------- Co-authored-by: ci.datadog-api-spec <[email protected]> Co-authored-by: skarimo <[email protected]>
1 parent 74fa0a7 commit 64408c6

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

tests/conftest.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def pytest_terminal_summary(terminalreporter, exitstatus, config):
6464
from datadog_api_client import exceptions
6565
from datadog_api_client.api_client import ApiClient
6666
from datadog_api_client.configuration import Configuration
67+
from datadog_api_client.model_utils import OpenApiModel
6768

6869
logging.basicConfig()
6970

@@ -436,6 +437,19 @@ def request_parameter_with_value(context, name, value):
436437
context["api_request"]["kwargs"][escape_reserved_keyword(snake_case(name))] = tpl
437438

438439

440+
def assert_no_unparsed(data):
441+
if isinstance(data, list):
442+
for item in data:
443+
assert_no_unparsed(item)
444+
elif isinstance(data, dict):
445+
for item in data.values():
446+
assert_no_unparsed(item)
447+
elif isinstance(data, OpenApiModel):
448+
assert not data._unparsed
449+
for attr in data._data_store.values():
450+
assert_no_unparsed(attr)
451+
452+
439453
def build_given(version, operation):
440454
@sleep_after_request
441455
def wrapper(context, undo):
@@ -548,7 +562,7 @@ def cleanup(api, version, operation_id, response, client=client):
548562

549563

550564
@when("the request is sent")
551-
def execute_request(undo, context, client, api_version):
565+
def execute_request(undo, context, client, api_version, request):
552566
"""Execute the prepared request."""
553567
api_request = context["api_request"]
554568

@@ -568,6 +582,9 @@ def execute_request(undo, context, client, api_version):
568582
api_request["response"] = [e.body, e.status, e.headers]
569583
return
570584

585+
if "skip-validation" not in request.node.__scenario_report__.scenario.tags:
586+
assert_no_unparsed(response[0])
587+
571588
api = api_request["api"]
572589
operation_id = api_request["request"].__name__
573590
response = api_request["response"][0]

0 commit comments

Comments
 (0)