diff --git a/frappe/tests/test_email.py b/frappe/tests/test_email.py index 788fe1e476..dedb3ab5b0 100644 --- a/frappe/tests/test_email.py +++ b/frappe/tests/test_email.py @@ -315,18 +315,24 @@ class TestEmail(IntegrationTestCase): target_user = "testimpersonate@example.com" frappe.db.delete("Email Queue Recipient", {"recipient": target_user}) # sanity if not frappe.db.exists("User", target_user): - frappe.get_doc({"doctype": "User", "email": target_user, "first_name": "Target"}).insert( - ignore_permissions=True - ) - reason = "Testing Security Alert" - impersonate(user=target_user, reason=reason) - self.assertEqual(frappe.session.user, target_user) # test if impersonation worked - self.assertTrue(frappe.db.exists("Activity Log", {"user": target_user, "operation": "Impersonate"})) - email_queued = frappe.db.exists( - "Email Queue Recipient", {"recipient": target_user, "status": "Not Sent"} - ) - self.assertTrue(email_queued, f"Impersonation email was not queued for {target_user}") + frappe.get_doc( + {"doctype": "User", "email": target_user, "first_name": "Target", "enabled": 1} + ).insert(ignore_permissions=True) + with ( + patch("frappe.sendmail") as mocked_sendmail, + patch("frappe.local.login_manager", create=True) as mocked_lm, + ): + reason = "Testing Security Alert" + impersonate(user=target_user, reason=reason) + + self.assertTrue(mocked_sendmail.called) + _, kwargs = mocked_sendmail.call_args + self.assertIn(target_user, kwargs.get("recipients")) + self.assertIn(reason, kwargs.get("content")) + mocked_lm.impersonate.assert_called_with(target_user) + + # Cleanup frappe.db.delete("User", {"email": target_user})