9
9
from aws_lambda_powertools .utilities .batch import PartialSQSProcessor , batch_processor , sqs_batch_processor
10
10
from aws_lambda_powertools .utilities .batch .base import BatchProcessor , EventType
11
11
from aws_lambda_powertools .utilities .batch .exceptions import SQSBatchProcessingError
12
- from tests .functional .utils import decode_kinesis_data , str_to_b64
12
+ from aws_lambda_powertools .utilities .data_classes .dynamo_db_stream_event import DynamoDBRecord
13
+ from aws_lambda_powertools .utilities .data_classes .kinesis_stream_event import KinesisStreamRecord
14
+ from aws_lambda_powertools .utilities .data_classes .sqs_event import SQSRecord
15
+ from tests .functional .utils import b64_to_str , str_to_b64
13
16
14
17
15
18
@pytest .fixture (scope = "module" )
@@ -90,8 +93,8 @@ def handler(record):
90
93
91
94
@pytest .fixture (scope = "module" )
92
95
def kinesis_record_handler () -> Callable :
93
- def handler (record ):
94
- body = decode_kinesis_data (record )
96
+ def handler (record : KinesisStreamRecord ):
97
+ body = b64_to_str (record . kinesis . data )
95
98
if "fail" in body :
96
99
raise Exception ("Failed to process record." )
97
100
return body
@@ -101,8 +104,8 @@ def handler(record):
101
104
102
105
@pytest .fixture (scope = "module" )
103
106
def dynamodb_record_handler () -> Callable :
104
- def handler (record ):
105
- body = record [ " dynamodb" ][ "NewImage" ][ " message"][ "S" ]
107
+ def handler (record : DynamoDBRecord ):
108
+ body = record . dynamodb . new_image . get ( " message"). get_value
106
109
if "fail" in body :
107
110
raise Exception ("Failed to process record." )
108
111
return body
@@ -366,9 +369,9 @@ def test_partial_sqs_processor_context_only_failure(sqs_event_factory, record_ha
366
369
367
370
def test_batch_processor_middleware_success_only (sqs_event_factory , record_handler ):
368
371
# GIVEN
369
- first_record = sqs_event_factory ("success" )
370
- second_record = sqs_event_factory ("success" )
371
- event = {"Records" : [first_record , second_record ]}
372
+ first_record = SQSRecord ( sqs_event_factory ("success" ) )
373
+ second_record = SQSRecord ( sqs_event_factory ("success" ) )
374
+ event = {"Records" : [first_record . raw_event , second_record . raw_event ]}
372
375
373
376
processor = BatchProcessor (event_type = EventType .SQS )
374
377
@@ -385,9 +388,9 @@ def lambda_handler(event, context):
385
388
386
389
def test_batch_processor_middleware_with_failure (sqs_event_factory , record_handler ):
387
390
# GIVEN
388
- first_record = sqs_event_factory ("fail" )
389
- second_record = sqs_event_factory ("success" )
390
- event = {"Records" : [first_record , second_record ]}
391
+ first_record = SQSRecord ( sqs_event_factory ("fail" ) )
392
+ second_record = SQSRecord ( sqs_event_factory ("success" ) )
393
+ event = {"Records" : [first_record . raw_event , second_record . raw_event ]}
391
394
392
395
processor = BatchProcessor (event_type = EventType .SQS )
393
396
@@ -404,9 +407,9 @@ def lambda_handler(event, context):
404
407
405
408
def test_batch_processor_context_success_only (sqs_event_factory , record_handler ):
406
409
# GIVEN
407
- first_record = sqs_event_factory ("success" )
408
- second_record = sqs_event_factory ("success" )
409
- records = [first_record , second_record ]
410
+ first_record = SQSRecord ( sqs_event_factory ("success" ) )
411
+ second_record = SQSRecord ( sqs_event_factory ("success" ) )
412
+ records = [first_record . raw_event , second_record . raw_event ]
410
413
processor = BatchProcessor (event_type = EventType .SQS )
411
414
412
415
# WHEN
@@ -415,35 +418,36 @@ def test_batch_processor_context_success_only(sqs_event_factory, record_handler)
415
418
416
419
# THEN
417
420
assert processed_messages == [
418
- ("success" , first_record [ " body" ] , first_record ),
419
- ("success" , second_record [ " body" ] , second_record ),
421
+ ("success" , first_record . body , first_record . raw_event ),
422
+ ("success" , second_record . body , second_record . raw_event ),
420
423
]
421
424
422
425
assert batch .response () == {"batchItemFailures" : []}
423
426
424
427
425
428
def test_batch_processor_context_with_failure (sqs_event_factory , record_handler ):
426
429
# GIVEN
427
- first_record = sqs_event_factory ("failure" )
428
- second_record = sqs_event_factory ("success" )
429
- records = [first_record , second_record ]
430
+ first_record = SQSRecord ( sqs_event_factory ("failure" ) )
431
+ second_record = SQSRecord ( sqs_event_factory ("success" ) )
432
+ records = [first_record . raw_event , second_record . raw_event ]
430
433
processor = BatchProcessor (event_type = EventType .SQS )
431
434
432
435
# WHEN
433
436
with processor (records , record_handler ) as batch :
434
437
processed_messages = batch .process ()
435
438
436
439
# THEN
437
- assert processed_messages [1 ] == ("success" , second_record [ " body" ] , second_record )
440
+ assert processed_messages [1 ] == ("success" , second_record . body , second_record . raw_event )
438
441
assert len (batch .fail_messages ) == 1
439
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record [ "messageId" ] }]}
442
+ assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record . message_id }]}
440
443
441
444
442
445
def test_batch_processor_kinesis_context_success_only (kinesis_event_factory , kinesis_record_handler ):
443
446
# GIVEN
444
- first_record = kinesis_event_factory ("success" )
445
- second_record = kinesis_event_factory ("success" )
446
- records = [first_record , second_record ]
447
+ first_record = KinesisStreamRecord (kinesis_event_factory ("success" ))
448
+ second_record = KinesisStreamRecord (kinesis_event_factory ("success" ))
449
+
450
+ records = [first_record .raw_event , second_record .raw_event ]
447
451
processor = BatchProcessor (event_type = EventType .KinesisDataStreams )
448
452
449
453
# WHEN
@@ -452,35 +456,36 @@ def test_batch_processor_kinesis_context_success_only(kinesis_event_factory, kin
452
456
453
457
# THEN
454
458
assert processed_messages == [
455
- ("success" , decode_kinesis_data (first_record ), first_record ),
456
- ("success" , decode_kinesis_data (second_record ), second_record ),
459
+ ("success" , b64_to_str (first_record . kinesis . data ), first_record . raw_event ),
460
+ ("success" , b64_to_str (second_record . kinesis . data ), second_record . raw_event ),
457
461
]
458
462
459
463
assert batch .response () == {"batchItemFailures" : []}
460
464
461
465
462
466
def test_batch_processor_kinesis_context_with_failure (kinesis_event_factory , kinesis_record_handler ):
463
467
# GIVEN
464
- first_record = kinesis_event_factory ("failure" )
465
- second_record = kinesis_event_factory ("success" )
466
- records = [first_record , second_record ]
468
+ first_record = KinesisStreamRecord (kinesis_event_factory ("failure" ))
469
+ second_record = KinesisStreamRecord (kinesis_event_factory ("success" ))
470
+
471
+ records = [first_record .raw_event , second_record .raw_event ]
467
472
processor = BatchProcessor (event_type = EventType .KinesisDataStreams )
468
473
469
474
# WHEN
470
475
with processor (records , kinesis_record_handler ) as batch :
471
476
processed_messages = batch .process ()
472
477
473
478
# THEN
474
- assert processed_messages [1 ] == ("success" , decode_kinesis_data (second_record ), second_record )
479
+ assert processed_messages [1 ] == ("success" , b64_to_str (second_record . kinesis . data ), second_record . raw_event )
475
480
assert len (batch .fail_messages ) == 1
476
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record [ " kinesis" ][ "sequenceNumber" ] }]}
481
+ assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record . kinesis . sequence_number }]}
477
482
478
483
479
484
def test_batch_processor_kinesis_middleware_with_failure (kinesis_event_factory , kinesis_record_handler ):
480
485
# GIVEN
481
- first_record = kinesis_event_factory ("failure" )
482
- second_record = kinesis_event_factory ("success" )
483
- event = {"Records" : [first_record , second_record ]}
486
+ first_record = KinesisStreamRecord ( kinesis_event_factory ("failure" ) )
487
+ second_record = KinesisStreamRecord ( kinesis_event_factory ("success" ) )
488
+ event = {"Records" : [first_record . raw_event , second_record . raw_event ]}
484
489
485
490
processor = BatchProcessor (event_type = EventType .KinesisDataStreams )
486
491
0 commit comments