changeset 934:9d6c2ed2f348

Add unit test for antispam signal handlers.
author Brian Neal <bgneal@gmail.com>
date Thu, 16 Apr 2015 20:49:19 -0500
parents 0aa9aeaa98a6
children 7a795ccd6479
files antispam/receivers.py antispam/tests/test_receivers.py
diffstat 2 files changed, 36 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/antispam/receivers.py	Thu Apr 16 19:35:08 2015 -0500
+++ b/antispam/receivers.py	Thu Apr 16 20:49:19 2015 -0500
@@ -24,6 +24,7 @@
     if user:
         logger.info('User logout signal: %s', user.username)
 
+
 def login_failed_callback(sender, credentials, **kwargs):
     """Signal callback for a login failure event."""
     logger.error('User login failed signal from %s: %s', sender,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/antispam/tests/test_receivers.py	Thu Apr 16 20:49:19 2015 -0500
@@ -0,0 +1,35 @@
+"""Tests for the antispam signal handlers."""
+import logging
+
+from django.contrib.auth.models import User
+from django.test import Client
+from django.test import TestCase
+
+from testfixtures import log_capture
+
+
+class AntispamSignalRcvrTestCase(TestCase):
+
+    def setUp(self):
+        self.user = User.objects.create_user('steve', 'steve@example.com', 'pwd')
+        self.client = Client()
+
+        # Temporarily enable logging
+        self.old_disable = logging.getLogger().manager.disable
+        logging.disable(logging.NOTSET)
+
+    def tearDown(self):
+        logging.disable(self.old_disable)
+
+    @log_capture('auth')
+    def test_login_logout_callback(self, lc):
+        self.assertTrue(self.client.login(username='steve', password='pwd'))
+        self.client.logout()
+        lc.check(('auth', 'INFO', 'User login signal: steve'),
+                 ('auth', 'INFO', 'User logout signal: steve'))
+
+    @log_capture('auth')
+    def test_login_failed_callback(self, lc):
+        self.assertFalse(self.client.login(username='steve', password='xxx'))
+        lc.check(('auth', 'ERROR',
+                  'User login failed signal from django.contrib.auth: steve'))