"""Test helpers.""" import base64 from decimal import Decimal import json def msk_event(topic, value): """Create records in MSK-Lambda connector format.""" result = { 'bootstrapServers': 'kafka-servers', 'eventSource': 'aws:kafka', 'eventSourceArn': 'arn:aws:kafka:us-east-1:437795906767:cluster/cdc/uuid', # noqa:E501 'records': { f'{topic}-0': [ { 'headers': [], 'key': 'key-123', 'offset': 1, 'partition': 0, 'timestamp': 1634921120616, 'timestampType': 'CREATE_TIME', 'topic': topic, } ] } } if value: result['records'][f'{topic}-0'][0]['value'] = base64.b64encode(json.dumps(value).encode('utf-8')).decode('utf-8') # noqa:E501 return result def masters_active_event(operation, before, after): """Package masters registry event.""" data = { 'Keys': {'isrc': 'isrc1234'}, 'eventName': operation, 'eventID': '12345', 'ApproximateCreationDateTime': 1560614400.0 } def _format_tuids(item): if isinstance(item, list): return [{'tuid': Decimal(x)} for x in item] elif isinstance(item, int): return {'tuid': Decimal(item)} else: raise Exception(f'Unexpected type {type(item)}!') if before: data['OldImage'] = { 'territories': { k: _format_tuids(v) for k, v in before.items() } } else: data['OldImage'] = None if after: data['NewImage'] = { 'territories': { k: _format_tuids(v) for k, v in after.items() } } else: data['NewImage'] = None return data def mysql_cdc_event(operation, before, after): """Mysql cdc event.""" data = { 'payload': {'before': before, 'after': after, 'source': {'pos': 12345}, 'op': operation, 'ts_ms': 1710769492105}, } return data