Skip to content

Commit 36f2446

Browse files
committed
Add tests.
1 parent d243182 commit 36f2446

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from django.contrib.auth.signals import user_logged_in
2+
from django.core import mail
3+
from django.test import RequestFactory, TestCase, override_settings
4+
5+
from .factories import UserFactory
6+
7+
8+
@override_settings(SEND_MESSAGES=True)
9+
class TestSendLoginNotification(TestCase):
10+
def setUp(self):
11+
self.factory = RequestFactory()
12+
self.user = UserFactory()
13+
14+
def _fire_signal(self, user=None, request=None):
15+
if user is None:
16+
user = self.user
17+
if request is None:
18+
request = self.factory.get("/")
19+
user_logged_in.send(sender=user.__class__, request=request, user=user)
20+
21+
def test_sends_email_on_login(self):
22+
self._fire_signal()
23+
self.assertEqual(len(mail.outbox), 1)
24+
25+
def test_email_sent_to_user(self):
26+
self._fire_signal()
27+
self.assertIn(self.user.email, mail.outbox[0].to)
28+
29+
def test_email_subject_contains_org_name(self):
30+
from django.conf import settings
31+
32+
self._fire_signal()
33+
self.assertIn(settings.ORG_LONG_NAME, mail.outbox[0].subject)
34+
35+
def test_no_email_when_send_messages_disabled(self):
36+
with self.settings(SEND_MESSAGES=False):
37+
self._fire_signal()
38+
self.assertEqual(len(mail.outbox), 0)
39+
40+
def test_no_email_when_user_has_no_email(self):
41+
self.user.email = ""
42+
self.user.save()
43+
self._fire_signal()
44+
self.assertEqual(len(mail.outbox), 0)
45+
46+
def test_no_email_when_request_is_none(self):
47+
# Signal can be fired without a request (e.g. management commands)
48+
self._fire_signal(request=None)
49+
self.assertEqual(len(mail.outbox), 1)
50+
51+
def test_email_body_contains_login_time(self):
52+
self._fire_signal()
53+
self.assertTrue(any("Login time" in part for part in [mail.outbox[0].body]))

0 commit comments

Comments
 (0)