forked from aws-powertools/powertools-lambda-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_apigw.py
102 lines (87 loc) · 5.35 KB
/
test_apigw.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from aws_lambda_powertools.utilities.parser import envelopes, event_parser
from aws_lambda_powertools.utilities.parser.models import APIGatewayProxyEventModel
from aws_lambda_powertools.utilities.typing import LambdaContext
from tests.functional.parser.schemas import MyApiGatewayBusiness
from tests.functional.parser.utils import load_event
@event_parser(model=MyApiGatewayBusiness, envelope=envelopes.ApiGatewayEnvelope)
def handle_apigw_with_envelope(event: MyApiGatewayBusiness, _: LambdaContext):
assert event.message == "Hello"
assert event.username == "Ran"
@event_parser(model=APIGatewayProxyEventModel)
def handle_apigw_event(event: APIGatewayProxyEventModel, _: LambdaContext):
assert event.body == "Hello from Lambda!"
return event
def test_apigw_event_with_envelope():
event = load_event("apiGatewayProxyEvent.json")
event["body"] = '{"message": "Hello", "username": "Ran"}'
handle_apigw_with_envelope(event, LambdaContext())
def test_apigw_event():
event = load_event("apiGatewayProxyEvent.json")
parsed_event: APIGatewayProxyEventModel = handle_apigw_event(event, LambdaContext())
assert parsed_event.version == event["version"]
assert parsed_event.resource == event["resource"]
assert parsed_event.path == event["path"]
assert parsed_event.headers == event["headers"]
assert parsed_event.multiValueHeaders == event["multiValueHeaders"]
assert parsed_event.queryStringParameters == event["queryStringParameters"]
assert parsed_event.multiValueQueryStringParameters == event["multiValueQueryStringParameters"]
request_context = parsed_event.requestContext
assert request_context.accountId == event["requestContext"]["accountId"]
assert request_context.apiId == event["requestContext"]["apiId"]
authorizer = request_context.authorizer
assert authorizer.claims is None
assert authorizer.scopes is None
assert request_context.domainName == event["requestContext"]["domainName"]
assert request_context.domainPrefix == event["requestContext"]["domainPrefix"]
assert request_context.extendedRequestId == event["requestContext"]["extendedRequestId"]
assert request_context.httpMethod == event["requestContext"]["httpMethod"]
identity = request_context.identity
assert identity.accessKey == event["requestContext"]["identity"]["accessKey"]
assert identity.accountId == event["requestContext"]["identity"]["accountId"]
assert identity.caller == event["requestContext"]["identity"]["caller"]
assert (
identity.cognitoAuthenticationProvider == event["requestContext"]["identity"]["cognitoAuthenticationProvider"]
)
assert identity.cognitoAuthenticationType == event["requestContext"]["identity"]["cognitoAuthenticationType"]
assert identity.cognitoIdentityId == event["requestContext"]["identity"]["cognitoIdentityId"]
assert identity.cognitoIdentityPoolId == event["requestContext"]["identity"]["cognitoIdentityPoolId"]
assert identity.principalOrgId == event["requestContext"]["identity"]["principalOrgId"]
assert str(identity.sourceIp) == event["requestContext"]["identity"]["sourceIp"]
assert identity.user == event["requestContext"]["identity"]["user"]
assert identity.userAgent == event["requestContext"]["identity"]["userAgent"]
assert identity.userArn == event["requestContext"]["identity"]["userArn"]
assert identity.clientCert is not None
assert identity.clientCert.clientCertPem == event["requestContext"]["identity"]["clientCert"]["clientCertPem"]
assert identity.clientCert.subjectDN == event["requestContext"]["identity"]["clientCert"]["subjectDN"]
assert identity.clientCert.issuerDN == event["requestContext"]["identity"]["clientCert"]["issuerDN"]
assert identity.clientCert.serialNumber == event["requestContext"]["identity"]["clientCert"]["serialNumber"]
assert (
identity.clientCert.validity.notBefore
== event["requestContext"]["identity"]["clientCert"]["validity"]["notBefore"]
)
assert (
identity.clientCert.validity.notAfter
== event["requestContext"]["identity"]["clientCert"]["validity"]["notAfter"]
)
assert request_context.path == event["requestContext"]["path"]
assert request_context.protocol == event["requestContext"]["protocol"]
assert request_context.requestId == event["requestContext"]["requestId"]
assert request_context.requestTime == event["requestContext"]["requestTime"]
convert_time = int(round(request_context.requestTimeEpoch.timestamp() * 1000))
assert convert_time == 1583349317135
assert request_context.resourceId == event["requestContext"]["resourceId"]
assert request_context.resourcePath == event["requestContext"]["resourcePath"]
assert request_context.stage == event["requestContext"]["stage"]
assert parsed_event.pathParameters == event["pathParameters"]
assert parsed_event.stageVariables == event["stageVariables"]
assert parsed_event.body == event["body"]
assert parsed_event.isBase64Encoded == event["isBase64Encoded"]
assert request_context.connectedAt is None
assert request_context.connectionId is None
assert request_context.eventType is None
assert request_context.messageDirection is None
assert request_context.messageId is None
assert request_context.routeKey is None
assert request_context.operationName is None
assert identity.apiKey is None
assert identity.apiKeyId is None