Mercurial > public > sg101
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'))