"""Tests for ows-assets Model.""" from unittest.mock import MagicMock from unittest.mock import Mock from owsrequest import request as requests import pytest import sentry_sdk from ows_product_physical import api from ows_product_physical.models import ows_assets @pytest.mark.parametrize( ('status_code', 'message', 'expected_response_code', 'expected_message', 'sentry_exception_captured'), [ ( 200, 'https://image.url/image.jpg', 200, 'https://image.url/image.jpg', False ), (404, False, 404, False, False), (500, False, 500, False, True) ]) def test_get_artwork_asset( status_code, message, expected_response_code, expected_message, sentry_exception_captured, monkeypatch, valid_get_header, context): """Test checking artwork exists.""" with context, api.app.test_request_context(headers=valid_get_header): mock_response = Mock() mock_response.status_code = status_code if (message): mock_response.text = message if status_code >= 500: monkeypatch.delattr(requests, 'get') else: monkeypatch.setattr(requests, 'get', MagicMock( return_value=mock_response)) monkeypatch.setattr( sentry_sdk, 'capture_exception', value=MagicMock()) artwork_response = ows_assets.get_artwork_asset(2335224) assert artwork_response.status == expected_response_code if status_code < 500: assert requests.get.called assert requests.get.call_args[0][1] == \ '/image/product/large_cover/2335224/location' if (message): assert artwork_response.message == expected_message if (sentry_exception_captured): assert sentry_sdk.capture_exception.called