# pylint: disable=unused-argument,protected-access,too-many-arguments import json import os import pytest import smart_open from db_schema.schemas import slz from dae_apollo_api_scraper.exceptions import ApolloApiResponseIsNotValidException from . import FIXTURES_PATH @pytest.mark.skip('outdated') @pytest.mark.integration def test__validate_response_json(db, s3_client, payload_test, validator, content_status, clean_db): schema = os.path.join(FIXTURES_PATH, 'validation', '2021-07-01.json') with smart_open.open(schema) as file_: validator._s3_client.put_object( Body=file_.read(), Bucket=payload_test.config_bucket, Key='schemas/apollo/stream_milestones/v2/2021-07-01.json', ) with smart_open.open( os.path.join(FIXTURES_PATH, 'validation', 'correct_response.json'), 'rb' ) as file_: assert validator.validate_api_response(json.loads(file_.read())) with smart_open.open( os.path.join(FIXTURES_PATH, 'validation', 'invalid_responses.json'), 'rb' ) as file_: for n, resp in enumerate(json.loads(file_.read())): payload_test.job_id = f'job_{n}' with pytest.raises(ApolloApiResponseIsNotValidException): validator.validate_api_response(resp) # pylint: disable=no-member assert db.query(slz.ContentFailureLog).filter( slz.ContentFailureLog.unit_of_work == content_status.unit_of_work, slz.ContentFailureLog.job_id == payload_test.job_id, ).one()