Source code for intranet.test.ion_test
from django.contrib.auth import get_user_model
from django.test import TestCase
from django.urls import reverse
from ..apps.groups.models import Group
from ..apps.users.models import User
[docs]class IonTestCase(TestCase):
[docs] @classmethod
def setUpClass(cls):
super().setUpClass()
[docs] @classmethod
def tearDownClass(cls):
super().tearDownClass()
[docs] def login(self, username: str = "awilliam") -> User:
"""
Log the test client in as the given user.
Args:
username: the username to log in as
Return:
the ``User`` object corresponding to ``username``
"""
# We need to add the user to the db before trying to login as them.
user = get_user_model().objects.get_or_create(username=username)[0]
with self.settings(MASTER_PASSWORD="pbkdf2_sha256$24000$qp64pooaIEAc$j5wiTlyYzcMu08dVaMRus8Kyfvn5ZfaJ/Rn+Z/fH2Bw="):
self.client.login(username=username, password="dankmemes")
return user
[docs] def reauth(self) -> None:
"""
Reauthenticate the already logged in user.
"""
with self.settings(MASTER_PASSWORD="pbkdf2_sha256$24000$qp64pooaIEAc$j5wiTlyYzcMu08dVaMRus8Kyfvn5ZfaJ/Rn+Z/fH2Bw="):
response = self.client.post(reverse("reauth"), data={"password": "dankmemes"})
self.assertEqual(302, response.status_code)
[docs] def make_admin(self, username: str = "awilliam") -> User:
"""
Log in the test client as the given user, and make that
user an admin (i.e. give it the admin_all group).
Args:
username: the username to log in as and make an admin
Return:
the ``User`` object corresponding to ``username``
"""
user = self.login(username=username)
# Make user an eighth admin
group = Group.objects.get_or_create(name="admin_all")[0]
user.groups.add(group)
return user