From 916b7e70ec5954595b67d4e1d8f1691560aed92a Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Mon, 31 Jan 2022 17:12:06 +0100 Subject: [PATCH] fix: remove indentation from debug_mode --- .../event_handler/api_gateway.py | 6 +----- docs/core/event_handler/api_gateway.md | 2 ++ .../functional/event_handler/test_api_gateway.py | 15 +++++++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/aws_lambda_powertools/event_handler/api_gateway.py b/aws_lambda_powertools/event_handler/api_gateway.py index f423f1291fa..ddf1276f298 100644 --- a/aws_lambda_powertools/event_handler/api_gateway.py +++ b/aws_lambda_powertools/event_handler/api_gateway.py @@ -446,10 +446,6 @@ def __init__( # Allow for a custom serializer or a concise json serialization self._serializer = serializer or partial(json.dumps, separators=(",", ":"), cls=Encoder) - if self._debug: - # Always does a pretty print when in debug mode - self._serializer = partial(json.dumps, indent=4, cls=Encoder) - def route( self, rule: str, @@ -496,7 +492,7 @@ def resolve(self, event, context) -> Dict[str, Any]: Returns the dict response """ if self._debug: - print(self._json_dump(event)) + print(self._json_dump(event), end="") BaseRouter.current_event = self._to_proxy_event(event) BaseRouter.lambda_context = context return self._resolve().build(self.current_event, self._cors) diff --git a/docs/core/event_handler/api_gateway.md b/docs/core/event_handler/api_gateway.md index ae0960875c2..f5e83068db7 100644 --- a/docs/core/event_handler/api_gateway.md +++ b/docs/core/event_handler/api_gateway.md @@ -940,6 +940,8 @@ This will enable full tracebacks errors in the response, print request and respo ???+ danger This might reveal sensitive information in your logs and relax CORS restrictions, use it sparingly. + It's best to use for local development only! + ```python hl_lines="3" title="Enabling debug mode" from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver diff --git a/tests/functional/event_handler/test_api_gateway.py b/tests/functional/event_handler/test_api_gateway.py index 76ecbc7cdd7..09d32b7ffc1 100644 --- a/tests/functional/event_handler/test_api_gateway.py +++ b/tests/functional/event_handler/test_api_gateway.py @@ -32,6 +32,12 @@ from tests.functional.utils import load_event +@pytest.fixture +def json_dump(): + # our serializers reduce length to save on costs; fixture to replicate separators + return lambda obj: json.dumps(obj, separators=(",", ":")) + + def read_media(file_name: str) -> bytes: path = Path(str(Path(__file__).parent.parent.parent.parent) + "/docs/media/" + file_name) return path.read_bytes() @@ -506,13 +512,10 @@ def custom_method(): assert headers["Access-Control-Allow-Methods"] == "CUSTOM" -def test_service_error_responses(): +def test_service_error_responses(json_dump): # SCENARIO handling different kind of service errors being raised app = ApiGatewayResolver(cors=CORSConfig()) - def json_dump(obj): - return json.dumps(obj, separators=(",", ":")) - # GIVEN an BadRequestError @app.get(rule="/bad-request-error", cors=False) def bad_request_error(): @@ -641,7 +644,7 @@ def test_debug_mode_environment_variable(monkeypatch): assert app._debug -def test_debug_json_formatting(): +def test_debug_json_formatting(json_dump): # GIVEN debug is True app = ApiGatewayResolver(debug=True) response = {"message": "Foo"} @@ -654,7 +657,7 @@ def foo(): result = app({"path": "/foo", "httpMethod": "GET"}, None) # THEN return a pretty print json in the body - assert result["body"] == json.dumps(response, indent=4) + assert result["body"] == json_dump(response) def test_debug_print_event(capsys):