From 7a8601b6f0511c28815307e169da16f5872f1b47 Mon Sep 17 00:00:00 2001 From: Ruben Fonseca Date: Mon, 19 Feb 2024 14:28:34 +0100 Subject: [PATCH 1/2] fix(event-handler): swagger schema respects api stage --- .../event_handler/api_gateway.py | 8 +++++- .../event_handler/test_openapi_swagger.py | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/aws_lambda_powertools/event_handler/api_gateway.py b/aws_lambda_powertools/event_handler/api_gateway.py index 43b5bf139ea..271c767c060 100644 --- a/aws_lambda_powertools/event_handler/api_gateway.py +++ b/aws_lambda_powertools/event_handler/api_gateway.py @@ -1692,7 +1692,13 @@ def swagger_handler(): body=escaped_spec, ) - body = generate_swagger_html(escaped_spec, path, swagger_js, swagger_css, swagger_base_url) + body = generate_swagger_html( + escaped_spec, + f"{base_path}{path}", + swagger_js, + swagger_css, + swagger_base_url, + ) return Response( status_code=200, diff --git a/tests/functional/event_handler/test_openapi_swagger.py b/tests/functional/event_handler/test_openapi_swagger.py index 27fca16f2fa..d48ce7983e7 100644 --- a/tests/functional/event_handler/test_openapi_swagger.py +++ b/tests/functional/event_handler/test_openapi_swagger.py @@ -1,4 +1,5 @@ import json +from copy import deepcopy from typing import Dict from aws_lambda_powertools.event_handler import APIGatewayRestResolver @@ -73,3 +74,30 @@ def test_openapi_swagger_json_view_with_custom_path(): assert result["multiValueHeaders"]["Content-Type"] == ["application/json"] assert isinstance(json.loads(result["body"]), Dict) assert "OpenAPI JSON View" in result["body"] + + +def test_openapi_swagger_with_rest_api_default_stage(): + app = APIGatewayRestResolver(enable_validation=True) + app.enable_swagger() + + event = deepcopy(LOAD_GW_EVENT) + event["path"] = "/swagger" + event["requestContext"]["stage"] = "$default" + + result = app(event, {}) + assert result["statusCode"] == 200 + assert "ui.specActions.updateUrl('/swagger?format=json')" in result["body"] + + +def test_openapi_swagger_with_rest_api_stage(): + app = APIGatewayRestResolver(enable_validation=True) + app.enable_swagger() + + event = deepcopy(LOAD_GW_EVENT) + event["path"] = "/swagger" + event["requestContext"]["stage"] = "prod" + event["requestContext"]["path"] = "/prod/swagger" + + result = app(event, {}) + assert result["statusCode"] == 200 + assert "ui.specActions.updateUrl('/prod/swagger?format=json')" in result["body"] From 6bac07e782173fe358c07bff1275e534b73d0fdc Mon Sep 17 00:00:00 2001 From: Ruben Fonseca Date: Mon, 19 Feb 2024 14:45:35 +0100 Subject: [PATCH 2/2] fix: constant mutation --- tests/functional/event_handler/test_openapi_swagger.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/functional/event_handler/test_openapi_swagger.py b/tests/functional/event_handler/test_openapi_swagger.py index d48ce7983e7..45e908742b4 100644 --- a/tests/functional/event_handler/test_openapi_swagger.py +++ b/tests/functional/event_handler/test_openapi_swagger.py @@ -1,5 +1,4 @@ import json -from copy import deepcopy from typing import Dict from aws_lambda_powertools.event_handler import APIGatewayRestResolver @@ -80,7 +79,7 @@ def test_openapi_swagger_with_rest_api_default_stage(): app = APIGatewayRestResolver(enable_validation=True) app.enable_swagger() - event = deepcopy(LOAD_GW_EVENT) + event = load_event("apiGatewayProxyEvent.json") event["path"] = "/swagger" event["requestContext"]["stage"] = "$default" @@ -93,7 +92,7 @@ def test_openapi_swagger_with_rest_api_stage(): app = APIGatewayRestResolver(enable_validation=True) app.enable_swagger() - event = deepcopy(LOAD_GW_EVENT) + event = load_event("apiGatewayProxyEvent.json") event["path"] = "/swagger" event["requestContext"]["stage"] = "prod" event["requestContext"]["path"] = "/prod/swagger"