|
4 | 4 | KinesisFirehoseDataTransformationResponse,
|
5 | 5 | KinesisFirehoseEvent,
|
6 | 6 | )
|
| 7 | +from aws_lambda_powertools.utilities.serialization import base64_encode, base64_from_str |
7 | 8 | from tests.functional.utils import load_event
|
8 | 9 |
|
9 | 10 |
|
@@ -42,30 +43,38 @@ def test_kinesis_firehose_response():
|
42 | 43 |
|
43 | 44 |
|
44 | 45 | def test_kinesis_firehose_create_response():
|
| 46 | + # GIVEN a Kinesis Firehose Event with two records |
45 | 47 | raw_event = load_event("kinesisFirehoseKinesisEvent.json")
|
46 | 48 | parsed_event = KinesisFirehoseEvent(data=raw_event)
|
47 | 49 |
|
| 50 | + # WHEN we create a Data Transformation Response changing the data |
| 51 | + # WHEN we add partitions keys |
| 52 | + |
| 53 | + arbitrary_data = "arbitrary data" |
| 54 | + |
48 | 55 | response = KinesisFirehoseDataTransformationResponse()
|
49 | 56 | for record in parsed_event.records:
|
50 |
| - # if data was delivered as json; caches loaded value |
51 |
| - data = record.data_as_text |
52 | 57 | metadata_partition = KinesisFirehoseDataTransformationRecordMetadata(partition_keys={"year": 2023})
|
53 | 58 | processed_record = record.build_data_transformation_response(
|
54 | 59 | result="Ok",
|
55 | 60 | metadata=metadata_partition,
|
| 61 | + data=base64_from_str(arbitrary_data), |
56 | 62 | )
|
57 |
| - processed_record.data_from_text(data=data) |
58 | 63 | response.add_record(record=processed_record)
|
59 |
| - response_dict = response.asdict() |
60 |
| - |
61 |
| - res_records = list(response_dict["records"]) |
62 |
| - assert len(res_records) == 2 |
63 |
| - record_01, record_02 = res_records[:] |
64 |
| - record01_raw = raw_event["records"][0] |
65 |
| - assert record_01["result"] == "Ok" |
66 |
| - assert record_01["recordId"] == record01_raw["recordId"] |
67 |
| - assert record_01["data"] == record01_raw["data"] |
68 |
| - assert record_01["metadata"]["partitionKeys"]["year"] == 2023 |
69 |
| - |
70 |
| - assert response.records[0].data_as_bytes == b"Hello World" |
71 |
| - assert response.records[0].data_as_text == "Hello World" |
| 64 | + |
| 65 | + # THEN we should have the same record data |
| 66 | + record_01, record_02 = response.records[0], response.records[1] |
| 67 | + raw_record_01, raw_record_02 = raw_event["records"][0], raw_event["records"][1] |
| 68 | + |
| 69 | + assert len(response.records) == 2 |
| 70 | + |
| 71 | + assert record_01.result == "Ok" |
| 72 | + assert record_02.result == "Ok" |
| 73 | + |
| 74 | + assert record_01.record_id == raw_record_01["recordId"] |
| 75 | + assert record_02.record_id == raw_record_02["recordId"] |
| 76 | + |
| 77 | + assert record_01.data == base64_encode(arbitrary_data) |
| 78 | + assert record_02.data == base64_encode(arbitrary_data) |
| 79 | + |
| 80 | + assert record_01.metadata.partition_keys["year"] == 2023 |
0 commit comments