"""Test generate_upload_token module.""" from unittest.mock import MagicMock import pytest from podcast.logic import generate_upload_token from podcast.models import token from podcast.utils import exc @pytest.fixture def sts_error(): """Fixture to get an STS exception.""" return MagicMock(side_effect=exc.OwsError( status=403, message='AccessDeniedException - Error assuming role' )) @pytest.fixture def sts_credentials(get_upload_permission_fixture): """Fixture to get a successful response.""" return get_upload_permission_fixture['credentials'] def test_get_upload_permission_error(monkeypatch, sts_error, mock_current_admin_user): """Test get_upload_permission fails without token.""" monkeypatch.setattr(token, 'get_s3_token', sts_error) with pytest.raises(exc.OwsError) as err: generate_upload_token.get_upload_permission() assert err.value.status == 403 def test_get_upload_permission(monkeypatch, sts_credentials, mock_current_admin_user): """Test get_upload_permission succeeds.""" monkeypatch.setattr(token, 'get_s3_token', MagicMock(return_value=sts_credentials)) result = generate_upload_token.get_upload_permission() assert result assert result['filename'] assert '-' not in result['filename'] assert result['credentials'] == sts_credentials assert result['bucket'] == 'test-orcd-podcast-output-bucket'