8
8
from tests .functional .utils import load_event
9
9
10
10
11
+ def test_kinesis_firehose_response_metadata ():
12
+ # When we create metadata with partition keys and attach to a firehose response record
13
+ metadata_partition = KinesisFirehoseDataTransformationRecordMetadata (partition_keys = {"year" : "2023" })
14
+
15
+ processed_record = KinesisFirehoseDataTransformationRecord (
16
+ record_id = "test_id" ,
17
+ metadata = metadata_partition ,
18
+ data = "" ,
19
+ )
20
+ # Then we should have partition keys available in metadata field with same value
21
+ assert processed_record .metadata .partition_keys ["year" ] == "2023"
22
+ assert metadata_partition .asdict () == {"partitionKeys" : {"year" : "2023" }}
23
+
24
+
11
25
def test_kinesis_firehose_response ():
12
26
# GIVEN a Kinesis Firehose Event with two records
13
27
raw_event = load_event ("kinesisFirehoseKinesisEvent.json" )
@@ -16,10 +30,8 @@ def test_kinesis_firehose_response():
16
30
# WHEN we create a Data Transformation Response without changing the data
17
31
response = KinesisFirehoseDataTransformationResponse ()
18
32
for record in parsed_event .records :
19
- metadata_partition = KinesisFirehoseDataTransformationRecordMetadata (partition_keys = {"year" : 2023 })
20
33
processed_record = KinesisFirehoseDataTransformationRecord (
21
34
record_id = record .record_id ,
22
- metadata = metadata_partition ,
23
35
data = record .data ,
24
36
)
25
37
response .add_record (record = processed_record )
@@ -39,7 +51,28 @@ def test_kinesis_firehose_response():
39
51
assert record_01 .data == raw_record_01 ["data" ]
40
52
assert record_02 .data == raw_record_02 ["data" ]
41
53
42
- assert record_01 .metadata .partition_keys ["year" ] == 2023
54
+
55
+ def test_kinesis_firehose_response_asdict ():
56
+ # Given the following example response provided by Firehose
57
+ sample_response = {
58
+ "records" : [
59
+ {"recordId" : "sample_record" , "data" : "" , "result" : "Ok" , "metadata" : {"partitionKeys" : {"year" : "2023" }}},
60
+ ],
61
+ }
62
+
63
+ # Then asdict function should be able to return the same value
64
+ response = KinesisFirehoseDataTransformationResponse ()
65
+ metadata_partition = KinesisFirehoseDataTransformationRecordMetadata (
66
+ partition_keys = sample_response ["records" ][0 ]["metadata" ]["partitionKeys" ],
67
+ )
68
+ processed_record = KinesisFirehoseDataTransformationRecord (
69
+ record_id = sample_response ["records" ][0 ]["recordId" ],
70
+ data = sample_response ["records" ][0 ]["data" ],
71
+ result = sample_response ["records" ][0 ]["result" ],
72
+ metadata = metadata_partition ,
73
+ )
74
+ response .add_record (record = processed_record )
75
+ assert response .asdict () == sample_response
43
76
44
77
45
78
def test_kinesis_firehose_create_response ():
@@ -54,7 +87,7 @@ def test_kinesis_firehose_create_response():
54
87
55
88
response = KinesisFirehoseDataTransformationResponse ()
56
89
for record in parsed_event .records :
57
- metadata_partition = KinesisFirehoseDataTransformationRecordMetadata (partition_keys = {"year" : 2023 })
90
+ metadata_partition = KinesisFirehoseDataTransformationRecordMetadata (partition_keys = {"year" : " 2023" })
58
91
processed_record = record .build_data_transformation_response (
59
92
result = "Ok" ,
60
93
metadata = metadata_partition ,
@@ -77,4 +110,4 @@ def test_kinesis_firehose_create_response():
77
110
assert record_01 .data == base64_encode (arbitrary_data )
78
111
assert record_02 .data == base64_encode (arbitrary_data )
79
112
80
- assert record_01 .metadata .partition_keys ["year" ] == 2023
113
+ assert record_01 .metadata .partition_keys ["year" ] == " 2023"
0 commit comments