From 5c1e2e9cda172de7c22d4866d2bb2fb8c380daf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Fri, 10 Jul 2020 22:33:24 +0200 Subject: [PATCH] Basic tests for BDS registration views --- bds/mixins.py | 2 +- bds/tests/__init__.py | 0 bds/tests/test_views.py | 58 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 bds/tests/__init__.py create mode 100644 bds/tests/test_views.py diff --git a/bds/mixins.py b/bds/mixins.py index 14fac693..16399704 100644 --- a/bds/mixins.py +++ b/bds/mixins.py @@ -2,4 +2,4 @@ from django.contrib.auth.mixins import PermissionRequiredMixin class StaffRequiredMixin(PermissionRequiredMixin): - permission_required = "bds:is_team" + permission_required = "bds.is_team" diff --git a/bds/tests/__init__.py b/bds/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/bds/tests/test_views.py b/bds/tests/test_views.py new file mode 100644 index 00000000..0ad42018 --- /dev/null +++ b/bds/tests/test_views.py @@ -0,0 +1,58 @@ +from unittest import mock + +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Permission +from django.test import Client, TestCase +from django.urls import reverse + +User = get_user_model() + + +def give_bds_buro_permissions(user: User) -> None: + perm = Permission.objects.get(content_type__app_label="bds", codename="is_team") + user.user_permissions.add(perm) + + +class TestRegistrationView(TestCase): + @mock.patch("gestioncof.signals.messages") + def test_get_autocomplete(self, mock_messages): + user = User.objects.create_user(username="toto") + url = reverse("bds:autocomplete") + "?q=foo" + client = Client() + + # Anonymous GET + resp = client.get(url) + redirect_url = "/login?next={}".format(url) + self.assertRedirects(resp, redirect_url) + + # Logged-in but unprivileged GET + client.force_login(user) + resp = client.get(url) + self.assertEquals(resp.status_code, 403) + + # BurĂ´ user GET + give_bds_buro_permissions(user) + resp = client.get(url) + self.assertEquals(resp.status_code, 200) + + @mock.patch("gestioncof.signals.messages") + def test_get(self, mock_messages): + user = User.objects.create_user(username="toto") + url = reverse("bds:user.update", args=(user.id,)) + print(url) + client = Client() + + # Anonymous GET + resp = client.get(url) + redirect_url = "/login?next={}".format(url) + self.assertRedirects(resp, redirect_url) + + # Logged-in but unprivileged GET + client.force_login(user) + resp = client.get(url) + self.assertEquals(resp.status_code, 403) + + # BurĂ´ user GET + give_bds_buro_permissions(user) + resp = client.get(url) + self.assertEquals(resp.status_code, 200)