from unittest.mock import MagicMock from pytest_mock import MockerFixture from artist.schema import LabelProfile from artist.logic import permissions from artist.models import account vendor_id = 123 def test_get_and_verify_vendor_id_from_profile_headers_no_profile_type( mocker: MockerFixture ) -> None: """Returns None when profile_type is None.""" assert permissions.get_and_verify_vendor_id_from_profile_headers( MagicMock( spec=LabelProfile, profile_type=None, profile_id=456 ) ) is None def test_get_and_verify_vendor_id_from_profile_headers_no_vendor_or_subaccount( mocker: MockerFixture, vendor_id: int ) -> None: """Returns vendor_id from ows_permissions when vendor lookup succeeds.""" mocker.patch.object( permissions.ows_permissions, 'get_single_vendor_id_for_label_profile', return_value=vendor_id ) assert permissions.get_and_verify_vendor_id_from_profile_headers( MagicMock( spec=LabelProfile, profile_type='LabelProfile', profile_id=456 ) ) == vendor_id def test_get_and_verify_vendor_id_from_profile_headers_no_vendor_but_subaccount( mocker: MockerFixture, vendor_id: int, subaccount_id: int ) -> None: """Returns vendor_id from ows_permissions when subaccount lookup succeeds.""" mocker.patch.object( permissions.ows_permissions, 'get_single_vendor_id_for_label_profile', return_value=None ) mocker.patch.object( permissions.ows_permissions, 'get_subaccount_ids_for_label_profile', return_value=[subaccount_id] ) account_subaccount_lookup = mocker.patch.object( account, 'get_vendor_id_for_subaccount_id', return_value=MagicMock(message=vendor_id) ) assert permissions.get_and_verify_vendor_id_from_profile_headers( MagicMock( spec=LabelProfile, profile_type='LabelProfile', profile_id=456 ) ) == vendor_id account_subaccount_lookup.assert_called_once_with(subaccount_id) def test_get_and_verify_vendor_id_from_profile_headers_no_vendor_but_subaccount_lookup_fails( mocker: MockerFixture, subaccount_id: int ) -> None: """Raises ValueError when subaccount lookup fails.""" mocker.patch.object( permissions.ows_permissions, 'get_single_vendor_id_for_label_profile', return_value=None ) mocker.patch.object( permissions.ows_permissions, 'get_subaccount_ids_for_label_profile', return_value=[subaccount_id] ) mocker.patch.object( account, 'get_vendor_id_for_subaccount_id', return_value=MagicMock(message=None) ) try: permissions.get_and_verify_vendor_id_from_profile_headers( MagicMock( spec=LabelProfile, profile_type='LabelProfile', profile_id=456 ) ) except ValueError as e: assert str(e) == f"Could not find vendor for subaccount {subaccount_id}"