"""Lambda test module.""" import json import boto3 from moto import mock_kinesis import pytest import config # noqa import index # noqa @pytest.fixture def track_event_fixture(): """Alooma event fixture.""" return { 'type': 'insert', 'table': 'track', 'data': { 'id': 'someid', 'track_name': 'Give It Away', 'version': 'acoustic' } } @mock_kinesis def test_handler(track_event_fixture): """Test index.handler push an event to Kinesis.""" client = boto3.client('kinesis') client.create_stream( StreamName=config.KINESIS_STREAM_NAME, ShardCount=1) status = index.handler(track_event_fixture, None) records = receive_records(client) record = records['Records'][0]['Data'] record_json = json.loads(record) assert record_json == track_event_fixture assert status == 200 def receive_records(client): """Receives records from mocked Kinesis stream. Args: client(boto3.Client): mocked boto3 client Returns: list: records from Kinesis stream """ streams = client.list_streams() stream_name = streams['StreamNames'][0] stream_info = client.describe_stream(StreamName=stream_name) shard_id = stream_info['StreamDescription']['Shards'][0]['ShardId'] iterator = client.get_shard_iterator( StreamName=stream_name, ShardId=shard_id, ShardIteratorType='TRIM_HORIZON') records = client.get_records(ShardIterator=iterator['ShardIterator']) return records