From 3524c9a3c146613575b23919423484870cb31dc3 Mon Sep 17 00:00:00 2001 From: Darragh Duffy Date: Thu, 1 Dec 2022 16:10:29 +0000 Subject: [PATCH] fix for vnd.api+json content type using regex --- openapi_tester/schema_tester.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openapi_tester/schema_tester.py b/openapi_tester/schema_tester.py index 331df48e..89ce17f7 100644 --- a/openapi_tester/schema_tester.py +++ b/openapi_tester/schema_tester.py @@ -1,6 +1,7 @@ """ Schema Tester """ from __future__ import annotations +import re from itertools import chain from typing import TYPE_CHECKING, Any, Callable, cast @@ -89,11 +90,16 @@ def __init__( raise ImproperlyConfigured(INIT_ERROR) @staticmethod - def get_key_value(schema: dict[str, dict], key: str, error_addon: str = "") -> dict: + def get_key_value(schema: dict[str, dict], key: str, error_addon: str = "", use_regex=False) -> dict: """ Returns the value of a given key """ try: + if use_regex: + compiled_pattern = re.compile(key) + for key_ in schema.keys(): + if compiled_pattern.match(key_): + return schema[key_] return schema[key] except KeyError as e: raise UndocumentedSchemaSectionError( @@ -168,9 +174,10 @@ def get_response_schema_section(self, response: Response) -> dict[str, Any]: ) json_object = self.get_key_value( content_object, - "application/json", + r"^application\/.*json$", "\n\nNo `application/json` responses documented for method: " f"{response_method}, path: {parameterized_path}", + use_regex=True, ) return self.get_key_value(json_object, "schema")