Mercurial > public > sg101
view antispam/tests/utils_tests.py @ 629:f4c043cf55ac
Wiki integration. Requests don't always have sessions.
In particular this occurs when a request is made without a trailing slash.
The Common middleware redirects when this happens, and the middleware
process_request() processing stops before a session can get added.
So just set an attribute on the request object for each operation.
This seemed weird to me at first, but there are plenty of examples of this
in the Django code base already.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 13 Nov 2012 13:50:06 -0600 |
parents | 08d905e38a86 |
children |
line wrap: on
line source
""" Tests for the antispam application. """ import datetime from django.test import TestCase from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.cache import cache from antispam import SPAM_PHRASE_KEY from antispam.models import SpamPhrase from antispam.utils import contains_spam, deactivate_spammer from comments.models import Comment from polls.models import Poll from elsewhere.models import WebsiteProfile from shoutbox.models import Shout from bio.models import STA_SPAMMER class AntispamCase(TestCase): def test_no_phrases(self): """ Tests that an empty spam phrase table works. """ cache.delete(SPAM_PHRASE_KEY) self.assertFalse(contains_spam("Here is some random text.")) def test_phrases(self): """ Simple test of some phrases. """ SpamPhrase.objects.create(phrase="grytner") SpamPhrase.objects.create(phrase="allday.ru") SpamPhrase.objects.create(phrase="stefa.pl") self.assert_(contains_spam("grytner")) self.assert_(contains_spam("11grytner")) self.assert_(contains_spam("11grytner>")) self.assert_(contains_spam("1djkl jsd stefa.pl")) self.assert_(contains_spam("1djkl jsd <stefa.pl---sd8")) self.assert_(contains_spam("1dsdjallday.rukl jsd <stefa.pl---sd8")) self.assert_(contains_spam(" 1djallday.rukl")) self.assertFalse(contains_spam("this one is spam free.")) def test_deactivate_spammer(self): """ Test the deactivate_spammer() function. """ user = User.objects.create_user('spammer_guy', '', 'password') user.save() profile = user.get_profile() profile.location = 'Spamville' profile.country = 'US' profile.birthday = datetime.date.today() profile.occupation = 'Spammer' profile.interests = 'Spamming websites' profile.profile_text = 'I spam a lot.' profile.signature = 'I spammed you!' profile.save() now=datetime.datetime.now() # create a poll item to comment on poll = Poll(start_date=now, end_date=now, is_enabled=True, question='?') poll.save() comment = Comment( content_type=ContentType.objects.get_for_model(poll), object_id=poll.pk, user=user, comment='Spam Spam Spam', ip_address='127.0.0.1', is_public=True, is_removed=False) comment.save() website = WebsiteProfile(user=user, name='spam', url='spam') website.save() shout = Shout(user=user, shout_date=now, shout='spam') shout.save() deactivate_spammer(user) profile = user.get_profile() self.assertFalse(profile.location) self.assertFalse(profile.country) self.assertIsNone(profile.birthday) self.assertFalse(profile.occupation) self.assertFalse(profile.interests) self.assertFalse(profile.profile_text) self.assertFalse(profile.profile_html) self.assertFalse(profile.signature) self.assertFalse(profile.signature_html) self.assertEqual(profile.status, STA_SPAMMER) status_date = datetime.date(year=profile.status_date.year, month=profile.status_date.month, day=profile.status_date.day) self.assertEqual(status_date, datetime.date.today()) self.assertEqual(Comment.objects.filter(user=user).count(), 0) self.assertEqual(WebsiteProfile.objects.filter(user=user).count(), 0) self.assertEqual(Shout.objects.filter(user=user).count(), 0)