from unittest.mock import MagicMock, patch from django.test import TestCase from workflows.models import WorkflowConfig from workflows.emailing import send_system_email class EmailingFallbackTests(TestCase): @patch('workflows.emailing.EmailMessage') @patch('workflows.emailing.get_connection') def test_uses_workflowconfig_smtp_when_no_active_system_config(self, mock_get_connection, mock_email_message): WorkflowConfig.objects.update_or_create( name='Default', defaults={ 'smtp_server': 'mx.tub.co', 'smtp_port': 465, 'email_account': 'onboarding@tub.co', 'email_password': 'secret', 'smtp_use_ssl': True, 'smtp_use_tls': False, }, ) fake_connection = object() mock_get_connection.return_value = fake_connection msg_instance = MagicMock() mock_email_message.return_value = msg_instance send_system_email( subject='x', body='y', to=['target@example.com'], ) self.assertEqual(mock_get_connection.call_count, 1) kwargs = mock_get_connection.call_args.kwargs self.assertEqual(kwargs['host'], 'mx.tub.co') self.assertEqual(kwargs['port'], 465) self.assertEqual(kwargs['username'], 'onboarding@tub.co') self.assertEqual(kwargs['password'], 'secret') self.assertEqual(kwargs['use_ssl'], True) self.assertEqual(kwargs['use_tls'], False)