From 55e822412a4984a82fb7fed7d519f4bab4802949 Mon Sep 17 00:00:00 2001 From: Bartuccio Antoine Date: Thu, 20 Jun 2019 14:57:58 +0200 Subject: [PATCH] pedagogy: full test suite for pedagogy moderation --- pedagogy/models.py | 4 ++-- pedagogy/tests.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/pedagogy/models.py b/pedagogy/models.py index 4c097c8e..8a6aa7d5 100644 --- a/pedagogy/models.py +++ b/pedagogy/models.py @@ -253,9 +253,9 @@ class UVCommentReport(models.Model): def is_owned_by(self, user): """ - Is owned by a pedagogy admin, a superuser or the author himself + Can be created by a pedagogy admin, a superuser or a subscriber """ - return self.reporter == user or user.is_owner(self.comment.uv) + return user.is_subscribed or user.is_owner(self.comment.uv) comment = models.ForeignKey( UVComment, diff --git a/pedagogy/tests.py b/pedagogy/tests.py index fad2b1d7..7a10fa09 100644 --- a/pedagogy/tests.py +++ b/pedagogy/tests.py @@ -956,3 +956,58 @@ class UVModerationFormTest(TestCase): # Test that report and comment 2 still exists self.assertTrue(UVCommentReport.objects.filter(id=self.report_2.id).exists()) self.assertTrue(UVComment.objects.filter(id=self.comment_2.id).exists()) + + +class UVCommentReportCreateTest(TestCase): + """ + Test report creation view view + Assert access rights and if you can create with it + """ + + def setUp(self): + call_command("populate") + + self.krophil = User.objects.get(username="krophil") + + # Prepare a comment + comment_kwargs = create_uv_comment_template(self.krophil.id) + comment_kwargs["author"] = self.krophil + comment_kwargs["uv"] = UV.objects.get(id=comment_kwargs["uv"]) + self.comment = UVComment(**comment_kwargs) + self.comment.save() + + def create_report_test(self, username, success): + self.client.login(username=username, password="plop") + response = self.client.post( + reverse("pedagogy:comment_report", kwargs={"comment_id": self.comment.id}), + { + "comment": self.comment.id, + "reporter": User.objects.get(username=username).id, + "reason": "C'est moche", + }, + ) + if success: + self.assertEquals(response.status_code, 302) + else: + self.assertEquals(response.status_code, 403) + self.assertEquals(UVCommentReport.objects.all().exists(), success) + + def test_create_report_root_success(self): + self.create_report_test("root", True) + + def test_create_report_pedagogy_admin_success(self): + self.create_report_test("tutu", True) + + def test_create_report_subscriber_success(self): + self.create_report_test("sli", True) + + def test_create_report_unsubscribed_fail(self): + self.create_report_test("guy", False) + + def test_create_report_anonymous_fail(self): + response = self.client.post( + reverse("pedagogy:comment_report", kwargs={"comment_id": self.comment.id}), + {"comment": self.comment.id, "reporter": 0, "reason": "C'est moche"}, + ) + self.assertEquals(response.status_code, 403) + self.assertFalse(UVCommentReport.objects.all().exists())