Skip to content

Commit 537a481

Browse files
committed
fix: add more coverage
1 parent 509cfee commit 537a481

File tree

4 files changed

+115
-2
lines changed

4 files changed

+115
-2
lines changed

aws_lambda_powertools/event_handler/api_gateway.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -2180,7 +2180,7 @@ def __init__(
21802180

21812181
def _get_base_path(self) -> str:
21822182
stage = self.current_event.request_context.stage
2183-
return f"/{stage}" if stage else "/"
2183+
return f"/{stage}" if stage and stage != "$default" else "/"
21842184

21852185
# override route to ignore trailing "/" in routes for REST API
21862186
def route(
@@ -2243,6 +2243,10 @@ def __init__(
22432243
enable_validation,
22442244
)
22452245

2246+
def _get_base_path(self) -> str:
2247+
stage = self.current_event.request_context.stage
2248+
return f"/{stage}" if stage and stage != "$default" else "/"
2249+
22462250

22472251
class ALBResolver(ApiGatewayResolver):
22482252
current_event: ALBEvent

aws_lambda_powertools/event_handler/lambda_function_url.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,4 @@ def __init__(
6565

6666
def _get_base_path(self) -> str:
6767
stage = self.current_event.request_context.stage
68-
return f"/{stage}" if stage else "/"
68+
return f"/{stage}" if stage and stage != "$default" else "/"

aws_lambda_powertools/event_handler/vpc_lattice.py

+6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ def __init__(
5353
"""Amazon VPC Lattice resolver"""
5454
super().__init__(ProxyEventType.VPCLatticeEvent, cors, debug, serializer, strip_prefixes, enable_validation)
5555

56+
def _get_base_path(self) -> str:
57+
return "/"
58+
5659

5760
class VPCLatticeV2Resolver(ApiGatewayResolver):
5861
"""VPC Lattice resolver
@@ -98,3 +101,6 @@ def __init__(
98101
):
99102
"""Amazon VPC Lattice resolver"""
100103
super().__init__(ProxyEventType.VPCLatticeEventV2, cors, debug, serializer, strip_prefixes, enable_validation)
104+
105+
def _get_base_path(self) -> str:
106+
return "/"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
from aws_lambda_powertools.event_handler import (
2+
ALBResolver,
3+
APIGatewayHttpResolver,
4+
APIGatewayRestResolver,
5+
LambdaFunctionUrlResolver,
6+
VPCLatticeResolver,
7+
VPCLatticeV2Resolver,
8+
)
9+
from tests.functional.utils import load_event
10+
11+
12+
def test_base_path_api_gateway_rest():
13+
app = APIGatewayRestResolver(enable_validation=True)
14+
15+
@app.get("/")
16+
def handle():
17+
return app._get_base_path()
18+
19+
event = load_event("apiGatewayProxyEvent.json")
20+
event["path"] = "/"
21+
22+
result = app(event, {})
23+
assert result["statusCode"] == 200
24+
assert result["body"] == '"/"'
25+
26+
27+
def test_base_path_api_gateway_http():
28+
app = APIGatewayHttpResolver(enable_validation=True)
29+
30+
@app.get("/")
31+
def handle():
32+
return app._get_base_path()
33+
34+
event = load_event("apiGatewayProxyV2Event.json")
35+
event["rawPath"] = "/"
36+
event["requestContext"]["http"]["path"] = "/"
37+
event["requestContext"]["http"]["method"] = "GET"
38+
39+
result = app(event, {})
40+
assert result["statusCode"] == 200
41+
assert result["body"] == '"/"'
42+
43+
44+
def test_base_path_alb():
45+
app = ALBResolver(enable_validation=True)
46+
47+
@app.get("/")
48+
def handle():
49+
return app._get_base_path()
50+
51+
event = load_event("albEvent.json")
52+
event["path"] = "/"
53+
54+
result = app(event, {})
55+
assert result["statusCode"] == 200
56+
assert result["body"] == '"/"'
57+
58+
59+
def test_base_path_lambda_function_url():
60+
app = LambdaFunctionUrlResolver(enable_validation=True)
61+
62+
@app.get("/")
63+
def handle():
64+
return app._get_base_path()
65+
66+
event = load_event("lambdaFunctionUrlIAMEvent.json")
67+
event["rawPath"] = "/"
68+
event["requestContext"]["http"]["path"] = "/"
69+
event["requestContext"]["http"]["method"] = "GET"
70+
71+
result = app(event, {})
72+
assert result["statusCode"] == 200
73+
assert result["body"] == '"/"'
74+
75+
76+
def test_vpc_lattice():
77+
app = VPCLatticeResolver(enable_validation=True)
78+
79+
@app.get("/")
80+
def handle():
81+
return app._get_base_path()
82+
83+
event = load_event("vpcLatticeEvent.json")
84+
event["raw_path"] = "/"
85+
86+
result = app(event, {})
87+
assert result["statusCode"] == 200
88+
assert result["body"] == '"/"'
89+
90+
91+
def test_vpc_latticev2():
92+
app = VPCLatticeV2Resolver(enable_validation=True)
93+
94+
@app.get("/")
95+
def handle():
96+
return app._get_base_path()
97+
98+
event = load_event("vpcLatticeV2Event.json")
99+
event["path"] = "/"
100+
101+
result = app(event, {})
102+
assert result["statusCode"] == 200
103+
assert result["body"] == '"/"'

0 commit comments

Comments
 (0)