Просмотр исходного кода

Added tests to signature edition.

Rafał Pitoń 11 лет назад
Родитель
Сommit
ff71361234

+ 26 - 0
misago/users/tests/test_signatures.py

@@ -0,0 +1,26 @@
+from django.contrib.auth import get_user_model
+from django.test import TestCase
+
+from misago.users import signatures
+
+
+class SignaturesTests(TestCase):
+    def test_signature_change(self):
+        """signature module allows for signature change"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@bob.com', 'pass123')
+
+        signatures.set_user_signature(test_user, '')
+
+        self.assertEqual(test_user.signature, '')
+        self.assertEqual(test_user.signature_parsed, '')
+        self.assertEqual(test_user.signature_checksum, '')
+
+        signatures.set_user_signature(test_user, 'Hello, world!')
+
+        self.assertEqual(test_user.signature, 'Hello, world!')
+        self.assertEqual(test_user.signature_parsed, '<p>Hello, world!</p>')
+        self.assertTrue(signatures.is_user_signature_valid(test_user))
+
+        test_user.signature_parsed = '<p>Injected evil HTML!</p>'
+        self.assertFalse(signatures.is_user_signature_valid(test_user))

+ 55 - 0
misago/users/tests/test_useradmin_views.py

@@ -1,7 +1,11 @@
 from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
+
+from misago.acl.models import Role
 from misago.admin.testutils import AdminTestCase
 
+from misago.users.models import Rank
+
 
 class UserAdminViewsTests(AdminTestCase):
     def test_link_registered(self):
@@ -52,3 +56,54 @@ class UserAdminViewsTests(AdminTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertIn(user_a.username, response.content)
         self.assertFalse(user_b.username in response.content)
+
+    def test_new_view(self):
+        """new user view creates account"""
+        response = self.client.get(
+            reverse('misago:admin:users:accounts:new'))
+        self.assertEqual(response.status_code, 200)
+
+        default_rank = Rank.objects.get_default()
+        authenticated_role = Role.objects.get(special_role='authenticated')
+
+        response = self.client.post(reverse('misago:admin:users:accounts:new'),
+            data={
+                'username': 'Bawww',
+                'rank': unicode(default_rank.pk),
+                'roles': unicode(authenticated_role.pk),
+                'email': 'reg@stered.com',
+                'new_password': 'pass123',
+                'staff_level': '0'
+            })
+        self.assertEqual(response.status_code, 302)
+
+        User = get_user_model()
+        User.objects.get_by_username('Bawww')
+
+    def test_edit_view(self):
+        """edit user view changes account"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123')
+        test_link = reverse('misago:admin:users:accounts:edit',
+                            kwargs={'user_id': test_user.pk})
+
+        response = self.client.get(test_link)
+        self.assertEqual(response.status_code, 200)
+
+        response = self.client.post(test_link,
+            data={
+                'username': 'Bawww',
+                'rank': unicode(test_user.rank_id),
+                'roles': unicode(test_user.roles.all()[0].pk),
+                'email': 'reg@stered.com',
+                'new_password': 'pass123',
+                'staff_level': '0',
+                'signature': 'Hello world!',
+                'is_signature_banned': '1',
+                'signature_ban_staff_message': 'Staff message',
+                'signature_ban_user_message': 'User message',
+            })
+        self.assertEqual(response.status_code, 302)
+
+        User.objects.get_by_username('Bawww')
+        User.objects.get_by_email('reg@stered.com')

+ 53 - 4
misago/users/tests/test_usercp_views.py

@@ -4,6 +4,8 @@ from django.core.urlresolvers import reverse
 
 from misago.admin.testutils import AdminTestCase
 
+from misago.core import threadstore
+
 
 class ChangeForumOptionsTests(AdminTestCase):
     def setUp(self):
@@ -19,10 +21,10 @@ class ChangeForumOptionsTests(AdminTestCase):
     def test_change_forum_options_post(self):
         """POST to usercp change options view returns 302"""
         response = self.client.post(self.view_link, data={
-            'timezone': 'Asia/Qatar',
-            'is_hiding_presence': '1',
-            'subscribe_to_started_threads': '0',
-            'subscribe_to_replied_threads': '1',
+                'timezone': 'Asia/Qatar',
+                'is_hiding_presence': '1',
+                'subscribe_to_started_threads': '0',
+                'subscribe_to_replied_threads': '1',
             })
 
         self.assertEqual(response.status_code, 302)
@@ -34,6 +36,51 @@ class ChangeForumOptionsTests(AdminTestCase):
         self.assertEqual(test_user.subscribe_to_replied_threads, 1)
 
 
+class EditSignatureTests(AdminTestCase):
+    def setUp(self):
+        super(EditSignatureTests, self).setUp()
+        self.view_link = reverse('misago:usercp_edit_signature')
+
+    def test_signature_no_permission(self):
+        """edit signature view with no ACL returns 404"""
+        response = self.client.get(self.view_link)
+        self.assertEqual(response.status_code, 404)
+
+    def test_signature_banned(self):
+        """GET to usercp change options view returns 200"""
+        role = self.test_admin.roles.all()[0]
+        permissions = role.permissions
+        account_permissions = permissions['misago.users.permissions.account']
+        account_permissions['can_have_signature'] = 1
+        role.permissions = permissions
+
+        self.test_admin.is_signature_banned = True
+        self.test_admin.signature_ban_user_message = 'Your siggy is banned.'
+        self.test_admin.save()
+
+        response = self.client.get(self.view_link)
+        self.assertEqual(response.status_code, 200)
+        self.assertIn('Your siggy is banned', response.content)
+
+    def test_signature_banned(self):
+        """GET to usercp change options view returns 200"""
+        role = self.test_admin.roles.all()[0]
+        permissions = role.permissions
+        account_permissions = permissions['misago.users.permissions.account']
+        account_permissions['can_have_signature'] = 1
+        role.permissions = permissions
+
+        self.test_admin.is_signature_banned = False
+        self.test_admin.save()
+
+        response = self.client.post(self.view_link,
+            data={'signature': 'Hello siggy!'})
+        self.assertEqual(response.status_code, 302)
+
+        response = self.client.get(self.view_link)
+        self.assertIn('<p>Hello siggy!</p>', response.content)
+
+
 class ChangeUsernameTests(AdminTestCase):
     def setUp(self):
         super(ChangeUsernameTests, self).setUp()
@@ -64,6 +111,8 @@ class ChangeEmailPasswordTests(AdminTestCase):
         super(ChangeEmailPasswordTests, self).setUp()
         self.view_link = reverse('misago:usercp_change_email_password')
 
+        threadstore.clear()
+
     def _link_from_mail(self, mail_body):
         for line in mail.outbox[0].body.splitlines():
             if line.strip().startswith('http://testserver/'):