kadenios/elections/tests/test_views.py

62 lines
2.3 KiB
Python

from typing import TYPE_CHECKING
from django.contrib.auth.models import Permission
from django.test import TestCase
from django.urls import reverse
from .test_utils import create_election
if TYPE_CHECKING:
from elections.typing import User
else:
from django.contrib.auth import get_user_model
User = get_user_model()
class AdminViewsTest(TestCase):
def setUp(self):
perm = Permission.objects.get(codename="is_admin")
self.admin_1 = User.objects.create(
username="pwd__admin1", email="admin1@ens.fr", full_name="Alfred Dmin"
)
self.admin_2 = User.objects.create(
username="pwd__admin2", email="admin2@ens.fr", full_name="Albert Dmin"
)
self.base_user = User.objects.create(
username="cas__user", email="user@clipper.ens.fr", full_name="Ulric Ser"
)
self.admin_1.user_permissions.add(perm)
self.admin_2.user_permissions.add(perm)
self.election_1 = create_election(1, creator=self.admin_1)
self.election_2 = create_election(2, creator=self.admin_1, future=True)
self.election_3 = create_election(3, creator=self.admin_2)
self.election_4 = create_election(4)
def test_create_view(self):
url = reverse("election.create")
# Création possible pour un admin
self.client.force_login(self.admin_1)
self.assertEqual(self.client.get(url).status_code, 200)
# Création impossible pour un user lambda
self.client.force_login(self.base_user)
self.assertEqual(self.client.get(url).status_code, 403)
def test_admin_view(self):
url_1 = reverse("election.admin", args=[self.election_1.pk])
url_3 = reverse("election.admin", args=[self.election_3.pk])
url_4 = reverse("election.admin", args=[self.election_4.pk])
# Accès uniquement à sa propre élection
self.client.force_login(self.admin_1)
self.assertEqual(self.client.get(url_1).status_code, 200)
self.assertEqual(self.client.get(url_3).status_code, 404)
self.assertEqual(self.client.get(url_4).status_code, 404)
# Accès refusé pour un user lambda
self.client.force_login(self.base_user)
self.assertEqual(self.client.get(url_1).status_code, 403)