import pytest from pyinfra.payload_processing.payload import ( QueueMessagePayload, QueueMessagePayloadParser, ) from pyinfra.utils.file_extension_parsing import make_file_extension_parser @pytest.fixture def expected_parsed_payload(x_tenant_id): return QueueMessagePayload( dossier_id="test", file_id="test", x_tenant_id=x_tenant_id, target_file_extension="json.gz", response_file_extension="json.gz", target_file_type="json", target_compression_type="gz", response_file_type="json", response_compression_type="gz", target_file_name="test/test.json.gz", response_file_name="test/test.json.gz", processing_kwargs={}, ) @pytest.fixture def file_extension_parser(allowed_file_types, allowed_compression_types): return make_file_extension_parser(allowed_file_types, allowed_compression_types) @pytest.fixture def payload_parser(file_extension_parser): return QueueMessagePayloadParser(file_extension_parser) @pytest.mark.parametrize("allowed_file_types,allowed_compression_types", [(["json", "pdf"], ["gz"])]) class TestPayload: @pytest.mark.parametrize("x_tenant_id", [None, "klaus"]) def test_payload_is_parsed_correctly(self, payload_parser, payload, expected_parsed_payload): payload = payload_parser(payload) assert payload == expected_parsed_payload @pytest.mark.parametrize( "extension,expected", [ ("json.gz", ("json", "gz")), ("json", ("json", None)), ("prefix.json.gz", ("json", "gz")), ], ) def test_parse_file_extension(self, file_extension_parser, extension, expected): assert file_extension_parser(extension) == expected