from unittest import mock import pytest from faker import Faker from fansifter_common.adapters.stripo import StripoV2Client from email_campaigns.emails.exceptions import ( AutosaveUnauthorizedError, ) from email_campaigns.emails.handlers import ( AutosaveEmailV2Handler, AutosaveEmailV2Request, ) from tests.unit.helpers import override_settings class TestAutosaveEmailV2Handler: def test_unauthorized_when_wrong_password( self, faker: Faker, ) -> None: username = faker.pystr() password = faker.pystr() repository_mock = mock.MagicMock() preview_cache_mock = mock.MagicMock() stripo_client_mock = mock.MagicMock(spec=StripoV2Client) handler = AutosaveEmailV2Handler( email_repository=repository_mock, preview_cache=preview_cache_mock, stripo_client=stripo_client_mock, ) with ( override_settings( stripo_autosave_username=username, stripo_autosave_password=password, ), pytest.raises(AutosaveUnauthorizedError), ): handler.handle( AutosaveEmailV2Request( email_id=faker.uuid4(), user_id=faker.uuid4(), username=username, password=faker.pystr(), # wrong password ) ) # Stripo API should not be called stripo_client_mock.get_html_css.assert_not_called()