"""Shared test mocks.""" import json from kafka_utils.consumer.deserializer.avro import AvroDeserializer import pytest import responses def load_file_json(filepath): """Load json from file.""" with open(filepath) as event_file: read_data = event_file.read() return json.loads(read_data) @pytest.fixture(scope='session') def mock_msk_message(): """Mock MSK message with both Debezium and Avro messages.""" return load_file_json('tests/sample_msk_event.json') @pytest.fixture(scope='session') def mock_broken_event(): """Mock broken replication event.""" return load_file_json('tests/sample_msk_event_empty.json') @pytest.fixture(scope='session') def mock_create_event(): """Mock create event.""" return load_file_json('tests/sample_msk_create_event.json') @pytest.fixture def mock_avro_serializer(): """Mock avro serializer.""" with responses.RequestsMock() as rsps: rsps.add( responses.GET, 'https://local.com/schemas/ids/30', json={'schema': '{\"type\":\"record\",\"name\":\"KsqlDataSourceSchema\",\"namespace\":\"io.confluent.ksql.avro_schemas\",\"fields\":[{\"name\":\"operation\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"KsqlDataSourceSchema_operation\",\"fields\":[{\"name\":\"type\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"context\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"timestamp\",\"type\":[\"null\",{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}],\"default\":null}]}],\"default\":null},{\"name\":\"payload\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"KsqlDataSourceSchema_payload\",\"fields\":[{\"name\":\"product_id\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"upc\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"product_name\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"project_id\",\"type\":[\"null\",\"int\"],\"default\":null}]}],\"default\":null}]}'}, # noqa: E501 status=200, ) avro_serializer = AvroDeserializer('https://local.com') yield avro_serializer