import os from unittest import mock import pytest import smart_open from slz_gdpr_email_downloader.services.validation import EmailValidationService from . import FIXTURES_PATH @pytest.mark.parametrize( 'filename, is_valid_expected, rate_actual', [ ('correct_sample.csv', True, 0), ('broken_sample.csv', False, 0.0001), ] ) def test_validate(config_test, payload_test, s3_client, filename, is_valid_expected, rate_actual): schema = os.path.join(FIXTURES_PATH, 'validation', '2021-04-01.json') with smart_open.open(schema) as file_: s3_client.put_object( Body=file_.read(), Bucket=config_test.config_bucket, Key='schemas/appreciationengine/request_to_forget/v1/2021-04-01.json', ) service = EmailValidationService( logger=mock.Mock(), config=config_test, payload=payload_test, s3_client=s3_client ) with smart_open.open(os.path.join(FIXTURES_PATH, 'validation', filename), 'rb') as file_: is_valid, stats, _ = service.validate(file_.read()) assert is_valid == is_valid_expected assert stats['rate_actual'] == rate_actual