"""Fixtures for lambda testing.""" import json import boto3 import config import pytest from aws_kinesis_agg.aggregator import AggRecord @pytest.fixture def invoke_lambda(): """Invoke the lambda function.""" client = boto3.client('lambda') return client.invoke( FunctionName=config.APPLICATION_NAME, InvocationType='RequestResponse', LogType='None', Payload=b'', ) NEO4J_EVENT = { 'meta': { 'timestamp': 1532597182604, 'username': 'neo4j', 'txId': 3, 'txEventId': 0, 'txEventsCount': 2, 'operation': 'created', 'source': { 'hostname': 'neo4j.mycompany.com' } }, 'payload': { 'id': '1004', 'type': 'node', 'after': { 'labels': [ 'Person', 'Employee' ], 'properties': { 'email': 'annek@noanswer.org', 'last_name': 'Kretchmar', 'first_name': 'Anne Marie', 'roles': ['administrator', 'accounting'] } } }, 'schema': { 'properties': { 'last_name': 'String', 'email': 'String', 'first_name': 'String' }, 'constraints': [ { 'label': 'Person', 'properties': [ 'first_name', 'last_name' ], 'type': 'UNIQUE' } ] } } MAXWELLS_EVENT = { 'database': 'test_neo4j', 'table': 'Employee_Person', 'type': 'insert', 'ts': 1532597182604, 'xid': 3, 'data': { 'email': 'annek@noanswer.org', 'last_name': 'Kretchmar', 'first_name': 'Anne Marie', 'roles': 'administrator,accounting', 'node_id': '1004', 'meta_tx_id': 3, 'meta_tx_event_id': 0, 'meta_tx_events_count': 2, 'meta_username': 'neo4j', 'meta_hostname': 'neo4j.mycompany.com' } } LAMBDA_EVENT = { 'records': { 'partition1': [ { 'value': b'eyJtZXRhIjogeyJ0aW1lc3RhbXAiOiAxNTMyNTk3MTgyNjA0' b'LCAidXNlcm5hbWUiOiAibmVvNGoiLCAidHhJZCI6IDMsICJ0' b'eEV2ZW50SWQiOiAwLCAidHhFdmVudHNDb3VudCI6IDIsICJv' b'cGVyYXRpb24iOiAiY3JlYXRlZCIsICJzb3VyY2UiOiB7Imhv' b'c3RuYW1lIjogIm5lbzRqLm15Y29tcGFueS5jb20ifX0sICJw' b'YXlsb2FkIjogeyJpZCI6ICIxMDA0IiwgInR5cGUiOiAibm9k' b'ZSIsICJhZnRlciI6IHsibGFiZWxzIjogWyJQZXJzb24iLCAi' b'RW1wbG95ZWUiXSwgInByb3BlcnRpZXMiOiB7ImVtYWlsIjog' b'ImFubmVrQG5vYW5zd2VyLm9yZyIsICJsYXN0X25hbWUiOiAi' b'S3JldGNobWFyIiwgImZpcnN0X25hbWUiOiAiQW5uZSBNYXJp' b'ZSIsICJyb2xlcyI6IFsiYWRtaW5pc3RyYXRvciIsICJhY2Nv' b'dW50aW5nIl19fX0sICJzY2hlbWEiOiB7InByb3BlcnRpZXMi' b'OiB7Imxhc3RfbmFtZSI6ICJTdHJpbmciLCAiZW1haWwiOiAi' b'U3RyaW5nIiwgImZpcnN0X25hbWUiOiAiU3RyaW5nIn0sICJj' b'b25zdHJhaW50cyI6IFt7ImxhYmVsIjogIlBlcnNvbiIsICJw' b'cm9wZXJ0aWVzIjogWyJmaXJzdF9uYW1lIiwgImxhc3RfbmFt' b'ZSJdLCAidHlwZSI6ICJVTklRVUUifV19fQ==' } ] } } LAMBDA_EVENT_INCORRECT = { 'records': { 'partition1': [ { 'value': b'eyJtZXRhIjogeyJ0aW1lc3RhbXAiOiAxNTMyNTk3MTgyNjA0LCA' b'idXNlcm5hbWUiOiAibmVvNGoiLCAidHhfaWQiOiAzLCAidHhFdm' b'VudElkIjogMCwgInR4RXZlbnRzQ291bnQiOiAyLCAib3BlcmF0a' b'W9uIjogImNyZWF0ZWQiLCAic291cmNlIjogeyJob3N0bmFtZSI6' b'ICJuZW80ai5teWNvbXBhbnkuY29tIn19LCAicGF5bG9hZCI6IHs' b'iaWQiOiAiMTAwNCIsICJ0eXBlIjogIm5vZGUiLCAiYWZ0ZXIiOi' b'B7ImxhYmVscyI6IFsiUGVyc29uIiwgIkVtcGxveWVlIl0sICJwc' b'm9wZXJ0aWVzIjogeyJlbWFpbCI6ICJhbm5la0Bub2Fuc3dlci5v' b'cmciLCAibGFzdF9uYW1lIjogIktyZXRjaG1hciIsICJmaXJzdF9' b'uYW1lIjogIkFubmUgTWFyaWUiLCAicm9sZXMiOiBbImFkbWluaX' b'N0cmF0b3IiLCAiYWNjb3VudGluZyJdfX19LCAic2NoZW1hIjoge' b'yJwcm9wZXJ0aWVzIjogeyJsYXN0X25hbWUiOiAiU3RyaW5nIiwg' b'ImVtYWlsIjogIlN0cmluZyIsICJmaXJzdF9uYW1lIjogIlN0cml' b'uZyJ9LCAiY29uc3RyYWludHMiOiBbeyJsYWJlbCI6ICJQZXJzb2' b'4iLCAicHJvcGVydGllcyI6IFsiZmlyc3RfbmFtZSIsICJsYXN0X' b'25hbWUiXSwgInR5cGUiOiAiVU5JUVVFIn1dfX0=' } ] } } LAMBDA_EVENT_MALFORMED = { 'records': { 'partition1': [ { 'value': b'eyJtZXRhIjogeyJ0aW1lc3RhbXAiOiAxNTMyNTk3MTgyNjA0LCA' b'idXNlcm5hbWUiOiAibmVvNGoiLCAidHhfaWQiOiAzLCAidHhFdm' b'VudElkIjogMCwgInR4RXZlbnRzQ291bnQiOiAyLCAib3BlcmF0a' b'W9uIjogImNyZWF0ZWQiLCAic291cmNlIjogeyJob3N0bmFtZSI6' } ] } } @pytest.fixture def neo4j_event(): """Neo4J event fixture.""" return NEO4J_EVENT @pytest.fixture def maxwells_event(): """Maxwells event fixture.""" return MAXWELLS_EVENT @pytest.fixture def lambda_event(): """Mock lambda event with MSK records.""" return LAMBDA_EVENT @pytest.fixture def lambda_event_incorrect(): """Mock lambda event with MSK records of incorrect format.""" return LAMBDA_EVENT_INCORRECT @pytest.fixture def lambda_event_malformed(): """Mock lambda event with some broken data.""" return LAMBDA_EVENT_MALFORMED @pytest.fixture def aggregated_record(): """Mock kinesis aggregated record.""" record = AggRecord() record.add_user_record( MAXWELLS_EVENT['table'], json.dumps(MAXWELLS_EVENT).encode()) return record