"""Test ows-assets connector.""" import re from unittest.mock import Mock from owsrequest import test_utils from owsrequest.utils import mock_request import pytest import src.exceptions from src.connectors.ows_assets import OWSAssetsConnector def test_get_mezzanine_tif_s3_location_success(): """Test get_mezzanine_tif_s3_location success.""" # MockOwsResponse doesn't define raise_for_status, so we need to mock it. test_utils.MockOwsResponse.raise_for_status = Mock() mock_request.get( service='ows-assets', path='/v2/assets/123/asset_type/tif', response={ 'assets': [ { 'bucket': 'bucket', 'filename': 'path', }, ] }, status=200, ) ows_assets_connector = OWSAssetsConnector() result = ows_assets_connector.get_mezzanine_tif_s3_location('123') test_utils.MockOwsResponse.raise_for_status.assert_called_once_with() assert result == ('bucket', 'path') def test_get_mezzanine_tif_s3_location_multiple_assets_failure(): """Test get_mezzanine_tif_s3_location fails with multiple assets.""" # MockOwsResponse doesn't define raise_for_status, so we need to mock it. test_utils.MockOwsResponse.raise_for_status = Mock() mock_request.get( service='ows-assets', path='/v2/assets/123/asset_type/tif', response={ 'assets': [ { 'bucket': 'bucket', 'filename': 'filename', }, { 'bucket': 'bucket2', 'filename': 'filename2', }, ] }, status=200, ) ows_assets_connector = OWSAssetsConnector() with pytest.raises( src.exceptions.NotExactlyOneMezzanineTifAsset, match=re.escape( 'Expected exactly one asset, got 2: [' '{"bucket": "bucket", "filename": "filename"}, ' '{"bucket": "bucket2", "filename": "filename2"}]' ), ): ows_assets_connector.get_mezzanine_tif_s3_location('123') test_utils.MockOwsResponse.raise_for_status.assert_called_once_with()