"""Tests for skip_if_asset_upload_already_handled.""" from unittest.mock import Mock from unittest.mock import patch import pytest from src import app from src import lambda_exceptions @patch('owsrequest.request.process') def test_skip_if_asset_upload_already_handled_not_found(process): """Test skip_if_asset_upload_already_handled not found.""" process.return_value = Mock(status_code=404) app.skip_if_asset_upload_already_handled('some_filename') process.assert_called_once_with( application='lambda-assets-acknowledge', environment='dev', headers={'Orchard-User-Id': 'oa:179'}, method='GET', path='/v2/asset/status/some_filename', service_name='ows-assets', ) @pytest.mark.parametrize( 'status', [ ('upload_complete'), ('acknowledge_error') ] ) @patch('owsrequest.request.process') def test_skip_if_asset_upload_already_handled_not_handled_yet(process, status): """Test skip_if_asset_upload_already_handled not handled yet.""" process.return_value = Mock(status_code=200, json=Mock(return_value={'status': status})) app.skip_if_asset_upload_already_handled('some_filename') process.assert_called_once_with( application='lambda-assets-acknowledge', environment='dev', headers={'Orchard-User-Id': 'oa:179'}, method='GET', path='/v2/asset/status/some_filename', service_name='ows-assets', ) @patch('owsrequest.request.process') def test_skip_if_asset_upload_already_handled_already_handled(process): """Test skip_if_asset_upload_already_handled already handled.""" process.return_value = Mock(status_code=200, json=Mock(return_value={'status': 'some_non_upload_complete_status'})) with pytest.raises(lambda_exceptions.AssetUploadAlreadyHandled): app.skip_if_asset_upload_already_handled('some_filename') process.assert_called_once_with( application='lambda-assets-acknowledge', environment='dev', headers={'Orchard-User-Id': 'oa:179'}, method='GET', path='/v2/asset/status/some_filename', service_name='ows-assets', ) @patch('owsrequest.request.process') def test_skip_if_asset_upload_already_handled_error(process): """Test skip_if_asset_upload_already_handled error.""" process.return_value = Mock(status_code=400, text='Some error') with pytest.raises(Exception, match='Some error'): app.skip_if_asset_upload_already_handled('some_filename') process.assert_called_once_with( application='lambda-assets-acknowledge', environment='dev', headers={'Orchard-User-Id': 'oa:179'}, method='GET', path='/v2/asset/status/some_filename', service_name='ows-assets', )