from unittest import mock import pytest from email_campaigns.adapters.features import ( AUDIENCE_ENABLE_STRIPO_PLUGIN_V2, ) from email_campaigns.campaigns.handlers import ( GetCampaignStripoAuthTokenHandler, ) from email_campaigns.campaigns.models import EmailCampaign from email_campaigns.emails.handlers import GetEmailStripoAuthTokenRequest from tests.unit.types import CreateModel, EnableFeatures class TestGetCampaignStripoAuthTokenHandler: @pytest.mark.db def test_returns_token_from_regular_client_when_ff_off( self, handler: GetCampaignStripoAuthTokenHandler, create_model: CreateModel, campaign_stripo_client_mock: mock.MagicMock, campaign_stripo_client_v2_mock: mock.MagicMock, identity_id: str, ) -> None: campaign = create_model(EmailCampaign) campaign_stripo_client_mock.generate_auth_token.return_value = "prod-token" result = handler.handle( GetEmailStripoAuthTokenRequest( identity_id=identity_id, email_id=campaign.id, ) ) assert result.token == "prod-token" campaign_stripo_client_mock.generate_auth_token.assert_called_once() campaign_stripo_client_v2_mock.generate_auth_token.assert_not_called() @pytest.mark.db def test_returns_token_from_v2_client_when_ff_on( self, handler: GetCampaignStripoAuthTokenHandler, create_model: CreateModel, campaign_stripo_client_mock: mock.MagicMock, campaign_stripo_client_v2_mock: mock.MagicMock, enable_features: EnableFeatures, identity_id: str, ) -> None: campaign = create_model(EmailCampaign) campaign_stripo_client_v2_mock.generate_auth_token.return_value = "v2-token" with enable_features([AUDIENCE_ENABLE_STRIPO_PLUGIN_V2]): result = handler.handle( GetEmailStripoAuthTokenRequest( identity_id=identity_id, email_id=campaign.id, ) ) assert result.token == "v2-token" campaign_stripo_client_v2_mock.generate_auth_token.assert_called_once_with( user_id=identity_id, ) campaign_stripo_client_mock.generate_auth_token.assert_not_called()