mirror of
https://github.com/ae-utbm/sith.git
synced 2025-02-22 15:37:14 +00:00
44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
|
from django.contrib.auth.models import Permission
|
||
|
from django.test import TestCase
|
||
|
from django.urls import reverse
|
||
|
from model_bakery import baker
|
||
|
from pytest_django.asserts import assertRedirects
|
||
|
|
||
|
from club.models import Club, Membership
|
||
|
from core.baker_recipes import subscriber_user
|
||
|
from core.models import User
|
||
|
|
||
|
|
||
|
class TestSubscriptionPermission(TestCase):
|
||
|
@classmethod
|
||
|
def setUpTestData(cls):
|
||
|
cls.user: User = subscriber_user.make()
|
||
|
cls.admin = baker.make(User, is_superuser=True)
|
||
|
cls.club = baker.make(Club)
|
||
|
baker.make(Membership, user=cls.user, club=cls.club, role=7)
|
||
|
|
||
|
def test_give_permission(self):
|
||
|
self.client.force_login(self.admin)
|
||
|
response = self.client.post(
|
||
|
reverse("subscription:perms"), {"groups": [self.club.board_group_id]}
|
||
|
)
|
||
|
assertRedirects(response, reverse("subscription:perms"))
|
||
|
assert self.user.has_perm("subscription.add_subscription")
|
||
|
|
||
|
def test_remove_permission(self):
|
||
|
self.client.force_login(self.admin)
|
||
|
response = self.client.post(reverse("subscription:perms"), {"groups": []})
|
||
|
assertRedirects(response, reverse("subscription:perms"))
|
||
|
assert not self.user.has_perm("subscription.add_subscription")
|
||
|
|
||
|
def test_subscription_page_access(self):
|
||
|
self.client.force_login(self.user)
|
||
|
response = self.client.get(reverse("subscription:subscription"))
|
||
|
assert response.status_code == 403
|
||
|
|
||
|
self.club.board_group.permissions.add(
|
||
|
Permission.objects.get(codename="add_subscription")
|
||
|
)
|
||
|
response = self.client.get(reverse("subscription:subscription"))
|
||
|
assert response.status_code == 200
|