12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from django.core.urlresolvers import reverse
- from django.utils import timezone
- from misago.acl.testutils import override_acl
- from misago.forums.models import Forum
- from misago.users.testutils import UserTestCase, AuthenticatedUserTestCase
- from misago.threads import testutils
- from misago.threads.models import ThreadParticipant
- class AuthenticatedTests(AuthenticatedUserTestCase):
- def test_empty_threads_list(self):
- """empty threads list is rendered"""
- response = self.client.get(reverse('misago:private_threads'))
- self.assertEqual(response.status_code, 200)
- self.assertIn("You are not participating in any private threads.",
- response.content)
- def test_cant_use_threads_list(self):
- """user has no permission to use private threads"""
- override_acl(self.user, {'can_use_private_threads': False})
- response = self.client.get(reverse('misago:private_threads'))
- self.assertEqual(response.status_code, 403)
- self.assertIn("use private threads system.",
- response.content)
- def test_participating_threads_list(self):
- """private threads list displays threads user participates in"""
- override_acl(self.user, {'can_moderate_private_threads': False})
- forum = Forum.objects.private_threads()
- invisible_threads = [testutils.post_thread(forum) for t in xrange(10)]
- visible_threads = [testutils.post_thread(forum) for t in xrange(10)]
- for thread in visible_threads:
- ThreadParticipant.objects.set_owner(thread, self.user)
- # only threads user participates in are displayed
- response = self.client.get(reverse('misago:private_threads'))
- self.assertEqual(response.status_code, 200)
- for thread in invisible_threads:
- self.assertNotIn(thread.get_absolute_url(), response.content)
- for thread in visible_threads:
- self.assertIn(thread.get_absolute_url(), response.content)
- def test_reported_threads_list(self):
- """private threads list displays threads with reports"""
- override_acl(self.user, {'can_moderate_private_threads': True})
- forum = Forum.objects.private_threads()
- invisible_threads = [testutils.post_thread(forum) for t in xrange(10)]
- visible_threads = [testutils.post_thread(forum) for t in xrange(10)]
- for thread in visible_threads:
- thread.has_reported_posts = True
- thread.save()
- # only threads user participates in are displayed
- response = self.client.get(reverse('misago:private_threads'))
- self.assertEqual(response.status_code, 200)
- for thread in invisible_threads:
- self.assertNotIn(thread.get_absolute_url(), response.content)
- for thread in visible_threads:
- self.assertIn(thread.get_absolute_url(), response.content)
- class AnonymousTests(UserTestCase):
- def test_anon_access_to_view(self):
- """anonymous user has no access to private threads list"""
- response = self.client.get(reverse('misago:private_threads'))
- self.assertEqual(response.status_code, 403)
- self.assertIn("use private threads system.", response.content)
|