"""Unit tests for the ows_assets util module.""" from unittest.mock import MagicMock from unittest.mock import patch from owsrequest import request import pytest import requests from activity_detector.utils import ows_assets @pytest.yield_fixture def mock_config(): """Mock config.""" with patch( 'activity_detector.utils.ows_assets.base_config' ) as mconfig: mconfig.DEFAULT_WINDOW_DAYS = 91 mconfig.ENVIRONMENT_QA = 'qa_mock' mconfig.ENVIRONMENT_TEST = 'test_mock' mconfig.ENVIRONMENT = 'dev_mock' yield mconfig def test_get_release_image_url(monkeypatch, mock_config): """Test get_release_image_url.""" ows_assets_response = MagicMock( return_value=requests.models.Response()) ows_assets_response.status_code = 200 ows_assets_response.content = b'path_to_image' monkeypatch.setattr( request, 'process', MagicMock(return_value=ows_assets_response)) product_id = 1000 result = ows_assets.get_release_image_url(product_id) request.process.assert_called_with( application='swf-activity-detector', environment=mock_config.ENVIRONMENT, method='get', service_name='ows-assets', path='/image/product/large_cover/1000/location') assert result == 'path_to_image' def test_get_release_image_url_error(monkeypatch, mock_config): """Test get_release_image_url when an error response is returned.""" ows_assets_response = MagicMock( return_value=requests.models.Response()) ows_assets_response.status_code = 500 ows_assets_response.content = b'ERROR' monkeypatch.setattr( request, 'process', MagicMock(return_value=ows_assets_response)) product_id = 1000 with pytest.raises(Exception): ows_assets.get_release_image_url(product_id) request.process.assert_called_with( application='swf-activity-detector', environment=mock_config.ENVIRONMENT, method='get', service_name='ows-assets', path='/image/product/large_cover/1000/location') assert request.process.call_count == 6 def test_get_release_image_url_not_found(monkeypatch, mock_config): """Test get_release_image_url when image could not be found.""" ows_assets_response = MagicMock( return_value=requests.models.Response()) ows_assets_response.status_code = 404 ows_assets_response.content = 'Not found' monkeypatch.setattr( request, 'process', MagicMock(return_value=ows_assets_response)) product_id = 1000 result = ows_assets.get_release_image_url(product_id) request.process.assert_called_with( application='swf-activity-detector', environment=mock_config.ENVIRONMENT, method='get', service_name='ows-assets', path='/image/product/large_cover/1000/location') assert request.process.call_count == 1 assert result is None