diff --git a/kfet/tests/test_views.py b/kfet/tests/test_views.py index 5c55f150..47604cfe 100644 --- a/kfet/tests/test_views.py +++ b/kfet/tests/test_views.py @@ -8,6 +8,8 @@ from django.test import Client, TestCase from django.urls import reverse from django.utils import timezone +from .. import KFET_DELETED_TRIGRAMME +from ..auth import KFET_GENERIC_TRIGRAMME from ..config import kfet_config from ..models import ( Account, @@ -340,6 +342,61 @@ class AccountUpdateViewTests(ViewTestCaseMixin, TestCase): self.assertForbiddenKfet(r) +class AccountDeleteViewTests(ViewTestCaseMixin, TestCase): + url_name = "kfet.account.delete" + url_kwargs = {"trigramme": "001"} + url_expected = "/k-fet/accounts/001/delete" + + auth_user = "team1" + auth_forbidden = [None, "user", "team"] + http_methods = ["GET", "POST"] + with_liq = True + + def get_users_extra(self): + return { + "user1": create_user("user1", "001"), + "team1": create_team("team1", "101", perms=["kfet.delete_account"]), + "trez": create_user("trez", "#13"), + } + + def test_get_redirects(self): + r = self.client.get(self.url) + self.assertRedirects(r, reverse("kfet.account.read", kwargs=self.url_kwargs)) + + def test_post_ok(self): + r = self.client.post(self.url, {}) + self.assertRedirects(r, reverse("kfet.account")) + + with self.assertRaises(Account.DoesNotExist): + self.accounts["user1"].refresh_from_db() + + def test_protected_accounts(self): + for trigramme in ["LIQ", "#13", KFET_GENERIC_TRIGRAMME, KFET_DELETED_TRIGRAMME]: + if Account.objects.get(trigramme=trigramme).readable: + expected_code = 200 + else: + expected_code = 403 + r = self.client.post( + reverse(self.url_name, kwargs={"trigramme": trigramme}), {} + ) + self.assertRedirects( + r, + reverse("kfet.account.read", kwargs={"trigramme": trigramme}), + target_status_code=expected_code, + ) + # Devrait être redondant avec le précédent, mais on sait jamais + self.assertTrue(Account.objects.filter(trigramme=trigramme).exists()) + + def test_nonempty_accounts(self): + self.accounts["user1"].balance = 1 + self.accounts["user1"].save() + + r = self.client.post(self.url, {}) + self.assertRedirects(r, reverse("kfet.account.read", kwargs=self.url_kwargs)) + # Shouldn't throw an error + self.accounts["user1"].refresh_from_db() + + class AccountGroupListViewTests(ViewTestCaseMixin, TestCase): url_name = "kfet.account.group" url_expected = "/k-fet/accounts/groups"