1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# -*- coding: utf-8 -*-
#
# Copyright (C) 2006 Edgewall Software
# All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://trac.edgewall.com/license.html.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://projects.edgewall.com/trac/.
from StringIO import StringIO
import unittest
from trac.test import EnvironmentStub, Mock
from tracspamfilter.filters import regex
from tracspamfilter.filters.regex import RegexFilterStrategy
class DummyWikiPage(object):
def __init__(self):
self.text = ''
def __call__(self, env, name):
self.env = env
self.name = name
self.exists = True
return self
class RegexFilterStrategyTestCase(unittest.TestCase):
def setUp(self):
self.env = EnvironmentStub(enable=[RegexFilterStrategy])
self.page = regex.WikiPage = DummyWikiPage()
self.strategy = RegexFilterStrategy(self.env)
def test_no_patterns(self):
retval = self.strategy.test(Mock(), 'anonymous', 'foobar')
self.assertEqual(None, retval)
def test_one_matching_pattern(self):
self.page.text = """{{{
foobar
}}}"""
self.strategy.wiki_page_changed(self.page)
retval = self.strategy.test(Mock(), 'anonymous', 'foobar')
self.assertEqual((-5, 'Content contained blacklisted patterns'), retval)
def test_multiple_matching_pattern(self):
self.page.text = """{{{
foobar
^foo
bar$
}}}"""
self.strategy.wiki_page_changed(self.page)
retval = self.strategy.test(Mock(), 'anonymous', 'foobar')
self.assertEqual((-15, 'Content contained blacklisted patterns'),
retval)
def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(RegexFilterStrategyTestCase, 'test'))
return suite
if __name__ == '__main__':
unittest.main(defaultTest='suite')
|