Mercurial > public > sg101
diff antispam/tests/test_utils.py @ 744:8789299c75b1
Django 1.6: test discovery as per unittest.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 29 Dec 2013 14:45:26 -0600 |
parents | antispam/tests/utils_tests.py@08d905e38a86 |
children | 9e803323a0d0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/antispam/tests/test_utils.py Sun Dec 29 14:45:26 2013 -0600 @@ -0,0 +1,115 @@ +""" +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)