class ModerationPermissions( TestCase ): #Test that users without permissions can't access moderation pages def setUp(self): self.thread = ThreadFactory(reported=True) self.post = UserPostFactory(reported=True) def test_thread_ban(self): resp = self.client.get(self.thread.get_ban_url()) self.assertEqual(resp.status_code, 403) def test_userpost_ban(self): resp = self.client.get(self.post.get_ban_url()) self.assertEqual(resp.status_code, 403) def test_thread_reports(self): resp = self.client.get(reverse('dj-mod:moderation_thread_report_list')) self.assertEqual(resp.status_code, 403) def test_userpost_reports(self): resp = self.client.get( reverse('dj-mod:moderation_userpost_report_list')) self.assertEqual(resp.status_code, 403) def test_thread_report_dismiss(self): resp = self.client.get(self.thread.get_report_dismiss_url()) self.assertEqual(resp.status_code, 403) def test_userpost_report_dismiss(self): resp = self.client.get(self.post.get_report_dismiss_url()) self.assertEqual(resp.status_code, 403)
class BanViewTestCase(TestCase): def setUp(self): self.ip_addr = '127.0.0.1' self.ban_data = { 'banned_until': '2049-07-22', 'reason': 'Breaking the rules.' } self.board = BoardFactory() self.thread = ThreadFactory(board=self.board, ip_address=self.ip_addr) self.post = UserPostFactory(thread=self.thread, ip_address=self.ip_addr) self.old_THREAD_COOLDOWN = settings.THREAD_COOLDOWN settings.THREAD_COOLDOWN = 0 self.old_POST_COOLDOWN = settings.POST_COOLDOWN settings.POST_COOLDOWN = 0 mod = ModeratorFactory.create_mod() self.client.force_login(mod) def tearDown(self): settings.THREAD_COOLDOWN = self.old_THREAD_COOLDOWN settings.POST_COOLDOWN = self.old_POST_COOLDOWN def test_thread_ban_get(self): resp = self.client.get( reverse('dj-mod:moderation_thread_ban', kwargs={'thread_number': self.thread.thread_number})) self.assertEqual(resp.status_code, 200) self.assertTemplateUsed(resp, 'moderation/transgression_form.html') self.assertTrue('form' in resp.context) def test_thread_board_ban_post(self): resp = self.client.post( reverse('dj-mod:moderation_thread_ban', kwargs={'thread_number': self.thread.thread_number}), self.ban_data) self.assertEqual(resp.status_code, 302) new_ban = Transgression.objects.get(reason=self.ban_data['reason']) self.assertEqual(new_ban.reason, self.ban_data['reason']) self.assertEqual(new_ban.ip_address, '127.0.0.1') self.assertEqual(new_ban.banned_from, self.board) def test_thread_global_ban_post(self): reason = TransgressionFactory.reason resp = self.client.post( self.thread.get_ban_url(), { 'reason': reason, 'banned_until': TransgressionFactory.banned_until, 'global_ban': True }) self.assertEqual(resp.status_code, 302) new_ban = Transgression.objects.get(reason=reason) self.assertEqual(new_ban.global_ban, True) self.assertEqual(new_ban.banned_from, None) def test_userpost_ban_get(self): resp = self.client.get( reverse('dj-mod:moderation_userpost_ban', kwargs={'post_number': self.post.post_number})) self.assertEqual(resp.status_code, 200) self.assertTemplateUsed(resp, 'moderation/transgression_form.html') self.assertTrue('form' in resp.context) def test_userpost_board_ban_post(self): resp = self.client.post( reverse('dj-mod:moderation_userpost_ban', kwargs={'post_number': self.post.post_number}), self.ban_data) self.assertEqual(resp.status_code, 302) new_ban = Transgression.objects.get(reason=self.ban_data['reason']) self.assertEqual(new_ban.reason, self.ban_data['reason']) self.assertEqual(new_ban.ip_address, '127.0.0.1') self.assertEqual(new_ban.banned_from, self.board) def test_userpost_global_ban_post(self): reason = TransgressionFactory.reason resp = self.client.post( self.post.get_ban_url(), { 'reason': reason, 'banned_until': TransgressionFactory.banned_until, 'global_ban': True }) self.assertEqual(resp.status_code, 302) new_ban = Transgression.objects.get(reason=reason) self.assertEqual(new_ban.global_ban, True) self.assertEqual(new_ban.banned_from, None) def test_ban_page_redirect_global_ban( self ): #Test that banned user redirect to the banned page correctly when user has global ban ban = TransgressionFactory(global_ban=True, ip_address=self.ip_addr) resp = self.client.post(self.board.get_thread_create_url(), { 'post': 'Im trying to break the rules!', 'name': 'Anon' }) self.assertRedirects( resp, expected_url=reverse('dj-mod:moderation_ban_page')) resp2 = self.client.post(self.thread.get_post_create_url(), { 'post': 'Im trying to break the rules!', 'name': 'Anon' }) self.assertRedirects( resp2, expected_url=reverse('dj-mod:moderation_ban_page')) def test_ban_page_redirect_board_specific( self ): #Test that banned user redirects to the banned page correctly when user has board specific ban ban = TransgressionFactory(banned_from=self.board, ip_address=self.ip_addr) resp = self.client.post( reverse('imageboard_thread_create', kwargs={'board': self.board.slug}), { 'post': 'Im trying to break the rules!', 'name': 'Anon', 'image': ImageFactory() }) self.assertRedirects( resp, expected_url=reverse('dj-mod:moderation_ban_page')) resp2 = self.client.post( reverse('imageboard_userpost_create', kwargs={ 'board': self.board.slug, 'thread_number': self.thread.thread_number }), { 'post': 'Im trying to break the rules!', 'name': 'Anon' }) self.assertRedirects( resp2, expected_url=reverse('dj-mod:moderation_ban_page')) def test_no_ban_redirect( self ): #Test that there is no redirect when user has a ban in another board board2 = BoardFactory() ban = TransgressionFactory(banned_from=board2, ip_address=self.ip_addr) resp = self.client.post( reverse('imageboard_thread_create', kwargs={'board': self.board.slug}), { 'post': 'Im not trying to break the rules!', 'name': 'Anon', 'image': ImageFactory(), 'captcha_0': 'dummy', 'captcha_1': 'PASSED' }) self.assertRedirects(resp, expected_url=reverse('imageboard_thread_page', kwargs={ 'board': self.board.slug, 'thread_number': 1 })) resp2 = self.client.post( reverse('imageboard_userpost_create', kwargs={ 'board': self.board.slug, 'thread_number': self.thread.thread_number }), { 'post': 'Im not trying to break the rules!', 'name': 'Anon', 'captcha_0': 'dummy', 'captcha_1': 'PASSED' }) self.assertRedirects(resp2, expected_url=self.thread.get_absolute_url()) def test_ban_page(self): #Test that ban page displays correctly bans = TransgressionFactory.create_batch(5, ip_address=self.ip_addr) resp = self.client.get(reverse('dj-mod:moderation_ban_page')) self.assertEqual(resp.status_code, 200) self.assertTemplateUsed(resp, 'moderation/transgression_detail.html') self.assertTrue('transgression_list' in resp.context) for ban in bans: self.assertContains(resp, ban.reason)