Skip to content

Commit 5d848d3

Browse files
committed
feat: use canary to test for presence of optional dependencies
1 parent 9114024 commit 5d848d3

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

layer/layer/canary/app.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
from importlib.metadata import version
66

77
import boto3
8+
from pydantic import EmailStr
89

910
from aws_lambda_powertools import Logger, Metrics, Tracer
11+
from aws_lambda_powertools.utilities.parser import BaseModel, envelopes, event_parser
12+
from aws_lambda_powertools.utilities.typing import LambdaContext
13+
from aws_lambda_powertools.utilities.validation import validator
1014

1115
logger = Logger(service="version-track")
12-
tracer = Tracer()
16+
tracer = Tracer() # this checks for aws-xray-sdk presence
1317
metrics = Metrics(namespace="powertools-layer-canary", service="PowertoolsLayerCanary")
1418

1519
layer_arn = os.getenv("POWERTOOLS_LAYER_ARN")
@@ -18,6 +22,26 @@
1822
event_bus_arn = os.getenv("VERSION_TRACKING_EVENT_BUS_ARN")
1923

2024

25+
# Model to check parser imports correctly, tests for pydantic and email-validator
26+
class OrderItem(BaseModel):
27+
order_id: int
28+
quantity: int
29+
description: str
30+
email: EmailStr
31+
32+
33+
# Tests for jmespath presence
34+
@event_parser(model=OrderItem, envelope=envelopes.EventBridgeEnvelope)
35+
def envelope_handler(event: OrderItem, context: LambdaContext):
36+
assert event.order_id != 1
37+
38+
39+
# Tests for fastjsonschema presence
40+
@validator(inbound_schema={}, envelope="detail")
41+
def validator_handler(event, context: LambdaContext):
42+
pass
43+
44+
2145
def handler(event):
2246
logger.info("Running checks")
2347
check_envs()

0 commit comments

Comments
 (0)