"""Tests for Models utils.""" import json from oto import response as oto_response from oto import status as response_code import requests from backend.constants import error from backend.utils import model_utils def _make_error_response(content, status_code): """Example of error response from another ows service. Args: content: data that should be returned in response.content status_code (int): HTTP status code """ response = requests.Response() response.status_code = status_code response._content = content return response def test_process_error_response(): """Test error response from ows service processed correctly.""" error_response_content = { 'message': 'Failed to process request', 'code': 'Test Error' } error_response = _make_error_response( json.dumps(error_response_content).encode('utf-8'), response_code.BAD_REQUEST) response = model_utils.process_error_response( error_response, code=error.OWS_PRODUCT_ERROR_CODE) assert isinstance(response, oto_response.Response) assert response.status == response_code.BAD_REQUEST assert response.errors['message'] == error_response_content assert response.errors['code'] == error.OWS_PRODUCT_ERROR_CODE def test_process_error_response_handles_invalid_json(): """Test error response with invalid json handled properly.""" error_response = _make_error_response( '{'.encode('utf-8'), response_code.INTERNAL_ERROR) response = model_utils.process_error_response( error_response, code=error.OWS_PRODUCT_ERROR_CODE) assert isinstance(response, oto_response.Response) assert response.status == response_code.INTERNAL_ERROR assert response.errors['message'] == '{' assert response.errors['code'] == error.OWS_PRODUCT_ERROR_CODE