test_post_views.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. from django.core.urlresolvers import reverse
  2. from misago.acl.testutils import override_acl
  3. from misago.forums.models import Forum
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. from misago.threads.models import Thread, Post
  6. from misago.threads.testutils import post_thread, reply_thread
  7. class PostViewTestCase(AuthenticatedUserTestCase):
  8. def setUp(self):
  9. super(PostViewTestCase, self).setUp()
  10. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  11. self.forum.labels = []
  12. self.thread = post_thread(self.forum)
  13. def override_acl(self, new_acl, forum=None):
  14. new_acl.update({
  15. 'can_see': True,
  16. 'can_browse': True,
  17. 'can_see_all_threads': True,
  18. 'can_see_own_threads': False
  19. })
  20. forum = forum or self.forum
  21. forums_acl = self.user.acl
  22. forums_acl['visible_forums'].append(forum.pk)
  23. forums_acl['forums'][forum.pk] = new_acl
  24. override_acl(self.user, forums_acl)
  25. class UnhidePostViewTests(PostViewTestCase):
  26. def test_unhide_first_post(self):
  27. """attempt to reveal first post in thread fails"""
  28. post_link = reverse('misago:unhide_post', kwargs={
  29. 'post_id': self.thread.first_post_id
  30. })
  31. self.override_acl({'can_hide_posts': 2})
  32. response = self.client.post(post_link)
  33. self.assertEqual(response.status_code, 403)
  34. def test_unhide_post_no_permission(self):
  35. """view fails due to lack of permissions"""
  36. post = reply_thread(self.thread, is_hidden=True)
  37. post_link = reverse('misago:unhide_post', kwargs={'post_id': post.id})
  38. self.override_acl({'can_hide_posts': 0, 'can_hide_own_posts': 0})
  39. response = self.client.post(post_link)
  40. self.assertEqual(response.status_code, 403)
  41. def test_unhide_post(self):
  42. """view reveals post"""
  43. post = reply_thread(self.thread, is_hidden=True)
  44. post_link = reverse('misago:unhide_post', kwargs={'post_id': post.id})
  45. self.override_acl({'can_hide_posts': 2})
  46. response = self.client.post(post_link)
  47. self.assertEqual(response.status_code, 302)
  48. post = Post.objects.get(id=post.id)
  49. self.assertFalse(post.is_hidden)
  50. class HidePostViewTests(PostViewTestCase):
  51. def test_hide_first_post(self):
  52. """attempt to hide first post in thread fails"""
  53. post_link = reverse('misago:hide_post', kwargs={
  54. 'post_id': self.thread.first_post_id
  55. })
  56. self.override_acl({'can_hide_posts': 2})
  57. response = self.client.post(post_link)
  58. self.assertEqual(response.status_code, 403)
  59. def test_hide_post_no_permission(self):
  60. """view fails due to lack of permissions"""
  61. post = reply_thread(self.thread)
  62. post_link = reverse('misago:hide_post', kwargs={'post_id': post.id})
  63. self.override_acl({'can_hide_posts': 0, 'can_hide_own_posts': 0})
  64. response = self.client.post(post_link)
  65. self.assertEqual(response.status_code, 403)
  66. def test_hide_post(self):
  67. """view hides post"""
  68. post = reply_thread(self.thread)
  69. post_link = reverse('misago:hide_post', kwargs={'post_id': post.id})
  70. self.override_acl({'can_hide_posts': 2})
  71. response = self.client.post(post_link)
  72. self.assertEqual(response.status_code, 302)
  73. post = Post.objects.get(id=post.id)
  74. self.assertTrue(post.is_hidden)
  75. class DeletePostViewTests(PostViewTestCase):
  76. def test_delete_first_post(self):
  77. """attempt to delete first post in thread fails"""
  78. post_link = reverse('misago:delete_post', kwargs={
  79. 'post_id': self.thread.first_post_id
  80. })
  81. self.override_acl({'can_hide_posts': 2})
  82. response = self.client.post(post_link)
  83. self.assertEqual(response.status_code, 403)
  84. def test_delete_post_no_permission(self):
  85. """view fails due to lack of permissions"""
  86. post = reply_thread(self.thread)
  87. post_link = reverse('misago:delete_post', kwargs={'post_id': post.id})
  88. self.override_acl({'can_hide_posts': 0, 'can_hide_own_posts': 0})
  89. response = self.client.post(post_link)
  90. self.assertEqual(response.status_code, 403)
  91. def test_delete_post(self):
  92. """view deletes post"""
  93. post = reply_thread(self.thread)
  94. post_link = reverse('misago:delete_post', kwargs={'post_id': post.id})
  95. self.override_acl({'can_hide_posts': 2})
  96. response = self.client.post(post_link)
  97. self.assertEqual(response.status_code, 302)
  98. thread = Thread.objects.get(id=self.thread.id)
  99. self.assertEqual(thread.first_post_id, thread.last_post_id)
  100. self.assertEqual(thread.replies, 0)
  101. with self.assertRaises(Post.DoesNotExist):
  102. Post.objects.get(id=post.id)