--- a/Allura/allura/tests/unit/test_spam.py
+++ b/Allura/allura/tests/unit/test_spam.py
@@ -1,5 +1,8 @@
+# -*- coding: utf-8 -*-
+
import mock
import unittest
+import urllib
try:
from allura.lib.spam.akismetservice import Akismet
@@ -11,18 +14,22 @@
class TestAkismet(unittest.TestCase):
def setUp(self):
self.akismet = Akismet()
- self.akismet.comment_check = mock.Mock()
+ def side_effect(*args, **kw):
+ # side effect to test that data being sent to
+ # akismet can be successfully urlencoded
+ urllib.urlencode(kw.get('data', {}))
+ self.akismet.comment_check = mock.Mock(side_effect=side_effect)
self.fake_artifact = mock.Mock(**{'url.return_value': 'artifact url'})
- self.fake_user = mock.Mock(display_name='Some User',
+ self.fake_user = mock.Mock(display_name=u'Søme User',
email_addresses=['user@domain'])
self.fake_headers = dict(
REMOTE_ADDR='fallback ip',
X_FORWARDED_FOR='some ip',
USER_AGENT='some browser',
REFERER='some url')
- self.content = 'spam text'
+ self.content = u'spĂĽm text'
self.expected_data = dict(
- comment_content=self.content,
+ comment_content=self.content.encode('utf8'),
comment_type='comment',
user_ip='some ip',
user_agent='some browser',
@@ -65,7 +72,7 @@
c.user = None
self.akismet.check(self.content, user=self.fake_user)
expected_data = self.expected_data
- expected_data.update(comment_author='Some User',
+ expected_data.update(comment_author=u'Søme User'.encode('utf8'),
comment_author_email='user@domain')
self.akismet.comment_check.assert_called_once_with(self.content,
data=expected_data, build_data=False)
@@ -77,7 +84,7 @@
c.user = self.fake_user
self.akismet.check(self.content)
expected_data = self.expected_data
- expected_data.update(comment_author='Some User',
+ expected_data.update(comment_author=u'Søme User'.encode('utf8'),
comment_author_email='user@domain')
self.akismet.comment_check.assert_called_once_with(self.content,
data=expected_data, build_data=False)