Select Git revision
test_remailer.py
Forked from
uffd / uffd
Source project has a limited visibility.
create_redeem_token.py 2.55 KiB
import uuid
from datetime import datetime
from http import HTTPStatus
from rest_framework.authtoken.models import Token
from zoneinfo import ZoneInfo
from django.test import TestCase, override_settings
from django.urls import reverse
from core.models import Assembly, Badge, BadgeToken, Conference, PlatformUser
TEST_CONF_ID = uuid.uuid4()
@override_settings(SELECTED_CONFERENCE_ID=TEST_CONF_ID)
class CreateRedeemTokenTests(TestCase):
def setUp(self):
tz = ZoneInfo('CET')
self.conf = Conference(
id=TEST_CONF_ID,
slug='conf',
name='TestConf',
is_public=True,
start=datetime(2020, 12, 27, 1, 23, 45, tzinfo=tz),
end=datetime(2020, 12, 30, 23, 45, 00, tzinfo=tz),
)
self.conf.save()
self.assembly = Assembly(name='TestAssembly', slug='asmbly', conference=self.conf, state=Assembly.State.PLACED)
self.assembly.save()
self.badge = Badge(
conference=self.conf,
issuing_assembly=self.assembly,
name='Test Badge',
)
self.badge_token = self.badge.reset_token()
self.user = PlatformUser(username='bernd', is_active=True)
self.user.save()
self.token = Token(user=self.user)
self.token.save()
def test_create_redeem_token_invalid_issuing_token(self):
url = reverse('api:badge-token-create-with-token', kwargs={'assembly': self.assembly, 'issuing_token': 'invalid'})
resp = self.client.post(url, {'issuing_token': 'test'})
self.assertEqual(resp.status_code, 404)
def test_create_redeem_token_limited(self):
url = reverse('api:badge-token-create-with-token', kwargs={'assembly': self.assembly, 'issuing_token': self.badge_token})
resp = self.client.post(url, {'issuing_token': self.badge_token, 'redeemable_count': 20})
self.assertEqual(resp.status_code, HTTPStatus.CREATED)
badge_token = BadgeToken.objects.get(badge=self.badge)
self.assertEqual(str(badge_token.token), resp.json()['token'])
self.assertEqual(badge_token.redeemable_count, 20)
def test_create_redeem_token(self):
url = reverse('api:badge-token-create-with-token', kwargs={'assembly': self.assembly, 'issuing_token': self.badge_token})
resp = self.client.post(url, {})
self.assertEqual(resp.status_code, HTTPStatus.CREATED)
badge_token = BadgeToken.objects.get(badge=self.badge)
self.assertEqual(str(badge_token.token), resp.json()['token'])
self.assertEqual(badge_token.redeemable_count, 0)