From 2cf6a4a6abfe22853a5669b72d71f5c4e35e1e34 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 29 Oct 2020 18:47:27 +0100 Subject: [PATCH] Add previously uncommitted tests --- src/tests/base/test_secrets.py | 81 ++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/tests/base/test_secrets.py diff --git a/src/tests/base/test_secrets.py b/src/tests/base/test_secrets.py new file mode 100644 index 0000000000..16505effd2 --- /dev/null +++ b/src/tests/base/test_secrets.py @@ -0,0 +1,81 @@ +import pytest +from django.utils.timezone import now +from django_scopes import scope + +from pretix.base.models import Event, Organizer +from pretix.base.secrets import ( + RandomTicketSecretGenerator, Sig1TicketSecretGenerator, +) + +schemes = ( + (RandomTicketSecretGenerator, False), + (Sig1TicketSecretGenerator, True), +) + + +@pytest.fixture(scope='function') +def event(): + o = Organizer.objects.create(name='Dummy', slug='dummy') + event = Event.objects.create( + organizer=o, name='Dummy', slug='dummy', + date_from=now(), + plugins='pretix.plugins.banktransfer' + ) + with scope(organizer=o): + yield event + + +@pytest.mark.django_db +@pytest.mark.parametrize("scheme", schemes) +def test_force_invalidate(event, scheme): + item = event.items.create(name="Foo", default_price=0) + generator, input_dependent = scheme + g = generator(event) + + first = g.generate_secret(item, None, None, current_secret=None, force_invalidate=False) + assert first + second = g.generate_secret(item, None, None, current_secret=first, force_invalidate=True) + assert first != second + + +@pytest.mark.django_db +@pytest.mark.parametrize("scheme", schemes) +def test_keep_same(event, scheme): + item = event.items.create(name="Foo", default_price=0) + generator, input_dependent = scheme + g = generator(event) + + first = g.generate_secret(item, None, None, current_secret=None, force_invalidate=False) + assert first + second = g.generate_secret(item, None, None, current_secret=first, force_invalidate=False) + assert first == second + + +@pytest.mark.django_db +@pytest.mark.parametrize("scheme", schemes) +def test_change_if_required(event, scheme): + item = event.items.create(name="Foo", default_price=0) + item2 = event.items.create(name="Bar", default_price=0) + generator, input_dependent = scheme + g = generator(event) + + first = g.generate_secret(item, None, None, current_secret=None, force_invalidate=False) + assert first + second = g.generate_secret(item2, None, None, current_secret=first, force_invalidate=False) + if input_dependent: + assert first != second + else: + assert first == second + + +@pytest.mark.django_db +@pytest.mark.parametrize("scheme", schemes) +def test_change_if_invalid(event, scheme): + item = event.items.create(name="Foo", default_price=0) + generator, input_dependent = scheme + g = generator(event) + + first = "blafasel" + second = g.generate_secret(item, None, None, current_secret=first, force_invalidate=False) + if input_dependent: + assert first != second