Mercurial > public > sg101
view gpp/antispam/tests/rate_limit_tests.py @ 552:9e42e6618168
For bitbucket issue #2, tweak the admin settings for the Post model to
reduce slow queries. Define our own queryset() method so we can control the
select_related(), and not have it cascade from post to topics to forums to
categories. Removed 'topic' from list_display because MySQL still sucked with
2 inner joins. Now it seems to be tolerable with only one join to User.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Wed, 25 Jan 2012 20:07:03 -0600 |
parents | 6f5fff924877 |
children |
line wrap: on
line source
""" Tests for the rate limiting function in the antispam application. """ from django.test import TestCase from django.core.urlresolvers import reverse from antispam.rate_limit import _make_key from core.services import get_redis_connection class RateLimitTestCase(TestCase): KEY = _make_key('127.0.0.1') def setUp(self): self.conn = get_redis_connection() self.conn.delete(self.KEY) def tearDown(self): self.conn.delete(self.KEY) def testRegistrationLockout(self): for i in range(1, 11): response = self.client.post( reverse('accounts-register'), {}, follow=True) if i < 10: self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'accounts/register.html') elif i >= 10: self.assertEqual(response.status_code, 403) self.assertTemplateUsed(response, 'antispam/blocked.html') def testLoginLockout(self): for i in range(1, 11): response = self.client.post( reverse('accounts-login'), {}, follow=True) if i < 10: self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'accounts/login.html') elif i >= 10: self.assertEqual(response.status_code, 403) self.assertTemplateUsed(response, 'antispam/blocked.html') def testHoneypotLockout(self): response = self.client.post( reverse('accounts-register'), { 'username': u'test_user', 'email': u'test_user@example.com', 'password1': u'password', 'password2': u'password', 'agree_age': u'on', 'agree_tos': u'on', 'agree_privacy': u'on', 'question1': u'101', 'question2': u'DsjkdE$', }, follow=True) val = self.conn.get(self.KEY) self.assertEqual(val, '1000001') response = self.client.post( reverse('accounts-login'), {}, follow=True) self.assertEqual(response.status_code, 403) self.assertTemplateUsed(response, 'antispam/blocked.html')