"""Functional tests for GET /conflicts/actioned endpoint.""" import datetime import json from oto import status as response_code import pytest from conflict_manager.constants import header from tests import mocks @pytest.fixture def yt_actioned_conflict_data(yt_conflict_data): """Fixture data for youtube conflicts.""" conflict = yt_conflict_data[0] del conflict['territories'] conflict['status'] = 'ACTIONED' conflict['action_date'] = datetime.datetime(2017, 6, 16, 2, 43, 10) conflict['assert_action'] = { 'territories': [ { 'conflict_id': 13, 'code': 'FR' } ], 'reason': 'master_copyright_owner', 'additional_information': 'so much to say' } conflict['release_action'] = { 'territories': [ { 'conflict_id': 33, 'code': 'US' } ], 'reason': 'another_party', 'additional_information': 'extra reason' } return [conflict] def test_get_actioned_conflicts_success( client, mocker, headers, yt_actioned_conflict_data, territories_data, test_values, test_vendor_id): """Expect OK, because all needed info present.""" mocks.fact_conflict.get_actioned_youtube_conflicts_for_account( mocker, yt_actioned_conflict_data) mocks.ows_territories.get_territories_map(mocker, territories_data) resp = client.get('/conflicts/actioned', headers=headers) payload = json.loads(resp.data.decode()) assert resp.status_code == response_code.OK assert len(payload['items']) == 1 conflict = payload['items'][0] assert conflict['status'] == 'ACTIONED' assert conflict['action_date'] == '2017-06-16T02:43:10' assert conflict['assert_action'] == { 'territories': [ { 'continent_name': 'Europe', 'conflict_id': 13, 'code': 'FR', 'name': 'France' } ], 'reason': 'master_copyright_owner', 'additional_information': 'so much to say' } assert conflict['release_action'] == { 'territories': [ { 'continent_name': 'North America', 'conflict_id': 33, 'code': 'US', 'name': 'United States of America' } ], 'reason': 'another_party', 'additional_information': 'extra reason' } def test_get_actioned_conflicts_ows_territories_down( client, mocker, yt_actioned_conflict_data): """Test error response is forwarded.""" headers = { header.CORRELATION_ID: 'test_id', header.GRASS_ACCOUNT_ID: '123', header.GRASS_ACCOUNT_TYPE: 'vendor' } mocks.fact_conflict.get_actioned_youtube_conflicts_for_account( mocker, yt_actioned_conflict_data) mocks.ows_territories.get_territories_map_server_down(mocker) resp = client.get('/conflicts/actioned', headers=headers) payload = json.loads(resp.data.decode()) assert resp.status_code == response_code.INTERNAL_ERROR assert payload == {'code': 'ows_territories_error', 'message': 'Error'}