from unittest.mock import MagicMock from owsrequest import request from requests import models from masters_registry.constant import api_const from masters_registry.constant import error from masters_registry.constant import field_const from masters_registry.models import ows_territories def test_get_territories_success( monkeypatch, territory_ISO_3166_1_2016_content): """Assert that getting territories returns expected status code and territories. """ def mock_get(service, endpoint, correlation_id): response = models.Response() response.status_code = 200 response._content = territory_ISO_3166_1_2016_content return response monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.get_territories( standard=field_const.ISO_3166_1_2016) assert 200 == territories.status assert 3 == len(territories.message[api_const.ITEMS]) items = territories.message[api_const.ITEMS] territory_codes = {item[field_const.TERRITORY_CODE_A2] for item in items} assert {'YE', 'ZM', 'ZW'} == territory_codes def test_get_territories_fail(monkeypatch): """Assert that failed request to territories service returns expected error code. """ def mock_get(service, endpoint, correlation_id): return MagicMock( status_code=500, content=b'{}') monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.get_territories( standard=field_const.ISO_3166_1_2016) assert 500 == territories.status assert error.OWS_TERRITORIES_ERROR == territories.errors[field_const.CODE] def test_convert_territories_success( monkeypatch, territory_ISO_3166_1_2016_content): """Assert that getting territories convert returns expected status code and territories. """ def mock_get(service, endpoint, correlation_id): response = models.Response() response.status_code = 200 response._content = territory_ISO_3166_1_2016_content return response monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.convert_territories( territories=[], input_standard=field_const.ORCH_1_2016, output_standard=field_const.ISO_3166_1_2016 ) assert territories.status == 200 items = territories.message[api_const.ITEMS] territory_codes = {item[field_const.TERRITORY_CODE_A2] for item in items} assert {'YE', 'ZM', 'ZW'} == territory_codes def test_convert_territories_fail(monkeypatch): """Assert that failed request to territories convert service returns expected error code. """ def mock_get(service, endpoint, correlation_id): return MagicMock( status_code=500, content=b'{}') monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.convert_territories( territories=[], input_standard=field_const.ORCH_1_2016, output_standard=field_const.ISO_3166_1_2016) assert territories.status == 500 assert error.OWS_TERRITORIES_ERROR == territories.errors[field_const.CODE] def test_get_complement_territories_success( monkeypatch, territory_ISO_3166_1_2016_content): """Assert that getting territories complement returns expected status code and territories. """ def mock_get(service, endpoint, correlation_id): response = models.Response() response.status_code = 200 response._content = territory_ISO_3166_1_2016_content return response monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.get_complement_territories( territories=[], standard=field_const.ISO_3166_1_2016) assert 200 == territories.status assert 3 == len(territories.message[api_const.ITEMS]) items = territories.message[api_const.ITEMS] territory_codes = {item[field_const.TERRITORY_CODE_A2] for item in items} assert {'YE', 'ZM', 'ZW'} == territory_codes def test_get_complement_territories_fail(monkeypatch): """Assert that failed request to territories complement service returns expected error code. """ def mock_get(service, endpoint, correlation_id): return MagicMock( status_code=500, content=b'{}') monkeypatch.setattr(request, 'get', mock_get) territories = ows_territories.get_complement_territories( territories=[], standard=field_const.ISO_3166_1_2016) assert 500 == territories.status assert error.OWS_TERRITORIES_ERROR == territories.errors[field_const.CODE]