1
- from typing import List
1
+ from typing import Any , List
2
+
3
+ import pytest
4
+ from pydantic import ValidationError
2
5
3
6
from aws_lambda_powertools .utilities .advanced_parser .envelopes .envelopes import Envelope
4
7
from aws_lambda_powertools .utilities .advanced_parser .parser import parser
9
12
10
13
11
14
@parser (schema = str , envelope = Envelope .SQS )
12
- def handle_sqs_str_body (event : List [str ], context : LambdaContext ):
15
+ def handle_sqs_str_body (event : List [str ], _ : LambdaContext ):
13
16
assert len (event ) == 2
14
17
assert event [0 ] == "Test message."
15
18
assert event [1 ] == "Test message2."
@@ -21,18 +24,53 @@ def test_handle_sqs_trigger_event_str_body():
21
24
22
25
23
26
@parser (schema = MySqsBusiness , envelope = Envelope .SQS )
24
- def handle_sqs_json_body (event : List [MySqsBusiness ], context : LambdaContext ):
27
+ def handle_sqs_json_body (event : List [MySqsBusiness ], _ : LambdaContext ):
25
28
assert len (event ) == 1
26
29
assert event [0 ].message == "hello world"
27
30
assert event [0 ].username == "lessa"
28
31
29
32
30
- def test_handle_sqs_trigger_evemt_json_body (sqs_event ): # noqa: F811
33
+ def test_handle_sqs_trigger_event_json_body (sqs_event ): # noqa: F811
31
34
handle_sqs_json_body (sqs_event , LambdaContext ())
32
35
33
36
37
+ def test_validate_event_does_not_conform_with_schema ():
38
+ event : Any = {"invalid" : "event" }
39
+
40
+ with pytest .raises (ValidationError ):
41
+ handle_sqs_json_body (event , LambdaContext ())
42
+
43
+
44
+ def test_validate_event_does_not_conform_user_json_string_with_schema ():
45
+ event : Any = {
46
+ "Records" : [
47
+ {
48
+ "messageId" : "059f36b4-87a3-44ab-83d2-661975830a7d" ,
49
+ "receiptHandle" : "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a..." ,
50
+ "body" : "Not valid json" ,
51
+ "attributes" : {
52
+ "ApproximateReceiveCount" : "1" ,
53
+ "SentTimestamp" : "1545082649183" ,
54
+ "SenderId" : "AIDAIENQZJOLO23YVJ4VO" ,
55
+ "ApproximateFirstReceiveTimestamp" : "1545082649185" ,
56
+ },
57
+ "messageAttributes" : {
58
+ "testAttr" : {"stringValue" : "100" , "binaryValue" : "base64Str" , "dataType" : "Number" }
59
+ },
60
+ "md5OfBody" : "e4e68fb7bd0e697a0ae8f1bb342846b3" ,
61
+ "eventSource" : "aws:sqs" ,
62
+ "eventSourceARN" : "arn:aws:sqs:us-east-2:123456789012:my-queue" ,
63
+ "awsRegion" : "us-east-2" ,
64
+ }
65
+ ]
66
+ }
67
+
68
+ with pytest .raises (ValidationError ):
69
+ handle_sqs_json_body (event , LambdaContext ())
70
+
71
+
34
72
@parser (schema = MyAdvancedSqsBusiness )
35
- def handle_sqs_no_envelope (event : MyAdvancedSqsBusiness , context : LambdaContext ):
73
+ def handle_sqs_no_envelope (event : MyAdvancedSqsBusiness , _ : LambdaContext ):
36
74
records = event .Records
37
75
record = records [0 ]
38
76
attributes = record .attributes
0 commit comments