forked from aws-powertools/powertools-lambda-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_parser.py
More file actions
72 lines (51 loc) · 2.42 KB
/
Copy pathtest_parser.py
File metadata and controls
72 lines (51 loc) · 2.42 KB
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
import json
from typing import Dict, Union
import pytest
from aws_lambda_powertools.utilities.parser import (
ValidationError,
event_parser,
exceptions,
)
from aws_lambda_powertools.utilities.typing import LambdaContext
@pytest.mark.parametrize("invalid_value", [None, bool(), [], (), object])
def test_parser_unsupported_event(dummy_schema, invalid_value):
@event_parser(model=dummy_schema)
def handle_no_envelope(event: Dict, _: LambdaContext):
return event
with pytest.raises(ValidationError):
handle_no_envelope(event=invalid_value, context=LambdaContext())
@pytest.mark.parametrize(
"invalid_envelope,expected", [(True, ""), (["dummy"], ""), (object, exceptions.InvalidEnvelopeError)]
)
def test_parser_invalid_envelope_type(dummy_event, dummy_schema, invalid_envelope, expected):
@event_parser(model=dummy_schema, envelope=invalid_envelope)
def handle_no_envelope(event: Dict, _: LambdaContext):
return event
if hasattr(expected, "__cause__"):
with pytest.raises(expected):
handle_no_envelope(event=dummy_event["payload"], context=LambdaContext())
else:
handle_no_envelope(event=dummy_event["payload"], context=LambdaContext())
def test_parser_schema_with_envelope(dummy_event, dummy_schema, dummy_envelope):
@event_parser(model=dummy_schema, envelope=dummy_envelope)
def handle_no_envelope(event: Dict, _: LambdaContext):
return event
handle_no_envelope(dummy_event, LambdaContext())
def test_parser_schema_no_envelope(dummy_event, dummy_schema):
@event_parser(model=dummy_schema)
def handle_no_envelope(event: Dict, _: LambdaContext):
return event
handle_no_envelope(dummy_event["payload"], LambdaContext())
@pytest.mark.parametrize("invalid_schema", [None, str, bool(), [], (), object])
def test_parser_with_invalid_schema_type(dummy_event, invalid_schema):
@event_parser(model=invalid_schema)
def handle_no_envelope(event: Dict, _: LambdaContext):
return event
with pytest.raises(exceptions.InvalidModelTypeError):
handle_no_envelope(event=dummy_event, context=LambdaContext())
def test_parser_event_as_json_string(dummy_event, dummy_schema):
dummy_event = json.dumps(dummy_event["payload"])
@event_parser(model=dummy_schema)
def handle_no_envelope(event: Union[Dict, str], _: LambdaContext):
return event
handle_no_envelope(dummy_event, LambdaContext())