|
5 | 5 | from importlib.metadata import version
|
6 | 6 |
|
7 | 7 | import boto3
|
| 8 | +from pydantic import EmailStr |
8 | 9 |
|
9 | 10 | 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 |
10 | 14 |
|
11 | 15 | logger = Logger(service="version-track")
|
12 |
| -tracer = Tracer() |
| 16 | +tracer = Tracer() # this checks for aws-xray-sdk presence |
13 | 17 | metrics = Metrics(namespace="powertools-layer-canary", service="PowertoolsLayerCanary")
|
14 | 18 |
|
15 | 19 | layer_arn = os.getenv("POWERTOOLS_LAYER_ARN")
|
|
18 | 22 | event_bus_arn = os.getenv("VERSION_TRACKING_EVENT_BUS_ARN")
|
19 | 23 |
|
20 | 24 |
|
| 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 | + |
21 | 45 | def handler(event):
|
22 | 46 | logger.info("Running checks")
|
23 | 47 | check_envs()
|
|
0 commit comments