72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
|
"""
|
||
|
Author: Michel Peltriaux
|
||
|
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||
|
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||
|
Created on: 17.08.23
|
||
|
|
||
|
"""
|
||
|
from datetime import timedelta
|
||
|
|
||
|
from django.utils.timezone import now
|
||
|
|
||
|
from api.models import APIUserToken
|
||
|
from konova.tests.test_views import BaseTestCase
|
||
|
|
||
|
|
||
|
class APIUserTokenTestCase(BaseTestCase):
|
||
|
def setUp(self) -> None:
|
||
|
super().setUp()
|
||
|
|
||
|
self.token = APIUserToken.objects.create()
|
||
|
self.superuser.api_token = self.token
|
||
|
self.superuser.save()
|
||
|
|
||
|
def test_str(self):
|
||
|
self.assertEqual(str(self.token), self.token.token)
|
||
|
|
||
|
def test_get_user_from_token(self):
|
||
|
a_day = timedelta(days=1)
|
||
|
today = now().date()
|
||
|
|
||
|
self.assertFalse(self.token.is_active)
|
||
|
self.assertIsNone(self.token.valid_until)
|
||
|
|
||
|
try:
|
||
|
#Token not existing --> fail
|
||
|
token_user = APIUserToken.get_user_from_token(self.token.token[::-1])
|
||
|
self.fail("There should not have been any token")
|
||
|
except PermissionError:
|
||
|
pass
|
||
|
|
||
|
try:
|
||
|
# Token not active --> fail
|
||
|
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||
|
self.fail("Token is unverified but token user has been fetchable.")
|
||
|
except PermissionError:
|
||
|
pass
|
||
|
self.token.is_active = True
|
||
|
self.token.valid_until = today - a_day
|
||
|
self.token.save()
|
||
|
|
||
|
try:
|
||
|
# Token valid until yesterday --> fail
|
||
|
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||
|
self.fail("Token reached end of lifetime but token user has been fetchable.")
|
||
|
except PermissionError:
|
||
|
pass
|
||
|
|
||
|
# Token valid until tomorrow --> success
|
||
|
self.token.valid_until = today + a_day
|
||
|
self.token.save()
|
||
|
|
||
|
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||
|
self.assertEqual(token_user, self.superuser)
|
||
|
del token_user
|
||
|
|
||
|
# Token valid forever --> success
|
||
|
self.token.valid_until = None
|
||
|
self.token.save()
|
||
|
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||
|
self.assertEqual(token_user, self.superuser)
|
||
|
|