forked from CGM_Public/pretix_original
Upgrade to Django 2.1 (#710)
* Upgrade to Django 2.0 * more models * i18n foo * Update setup.py * Fix Sentry exception PRETIXEU-JC * Enforce slug uniqueness * Import sorting * Upgrade to Django 2.1 * Travis config * Try to fix PostgreSQL failure * Smaller test matrix * staticfiles→static * Include request in all authenticate() calls
This commit is contained in:
@@ -13,6 +13,7 @@ def test_no_auth(client):
|
||||
def test_session_auth_no_teams(client, user):
|
||||
client.login(email=user.email, password='dummy')
|
||||
resp = client.get('/api/v1/organizers/')
|
||||
print(resp.data)
|
||||
assert resp.status_code == 200
|
||||
assert len(resp.data['results']) == 0
|
||||
|
||||
@@ -20,7 +21,7 @@ def test_session_auth_no_teams(client, user):
|
||||
@pytest.mark.django_db
|
||||
def test_session_auth_with_teams(client, user, team):
|
||||
team.members.add(user)
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy')
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy2')
|
||||
client.login(email=user.email, password='dummy')
|
||||
resp = client.get('/api/v1/organizers/')
|
||||
assert resp.status_code == 200
|
||||
@@ -36,7 +37,7 @@ def test_token_invalid(client):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_token_auth_valid(client, team):
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy')
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy2')
|
||||
t = team.tokens.create(name='Foo')
|
||||
client.credentials(HTTP_AUTHORIZATION='Token ' + t.token)
|
||||
resp = client.get('/api/v1/organizers/')
|
||||
@@ -46,7 +47,7 @@ def test_token_auth_valid(client, team):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_token_auth_inactive(client, team):
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy')
|
||||
Organizer.objects.create(name='Other dummy', slug='dummy2')
|
||||
t = team.tokens.create(name='Foo', active=False)
|
||||
client.credentials(HTTP_AUTHORIZATION='Token ' + t.token)
|
||||
resp = client.get('/api/v1/organizers/')
|
||||
|
||||
@@ -151,8 +151,9 @@ def test_list_list(token_client, organizer, event, clist, item, subevent):
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||
assert [res] == resp.data['results']
|
||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, subevent.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
|
||||
|
||||
@@ -238,6 +238,7 @@ TEST_ITEM_RES = {
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_item_list(token_client, organizer, event, team, item):
|
||||
cat = event.categories.create(name="foo")
|
||||
res = dict(TEST_ITEM_RES)
|
||||
res["id"] = item.pk
|
||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug))
|
||||
@@ -252,7 +253,8 @@ def test_item_list(token_client, organizer, event, team, item):
|
||||
assert resp.status_code == 200
|
||||
assert [] == resp.data['results']
|
||||
|
||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/items/?category=1'.format(organizer.slug, event.slug))
|
||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/items/?category={}'.format(organizer.slug, event.slug,
|
||||
cat.pk))
|
||||
assert resp.status_code == 200
|
||||
assert [] == resp.data['results']
|
||||
|
||||
@@ -1074,8 +1076,9 @@ def test_quota_list(token_client, organizer, event, quota, item, subevent):
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||
assert [res] == resp.data['results']
|
||||
se2 = event.subevents.create(name="Foobar", date_from=datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, subevent.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
|
||||
|
||||
@@ -535,6 +535,7 @@ def test_orderposition_list(token_client, organizer, event, order, item, subeven
|
||||
i2.pk = None
|
||||
i2.save()
|
||||
var = item.variations.create(value="Children")
|
||||
var2 = item.variations.create(value="Children")
|
||||
res = dict(TEST_ORDERPOSITION_RES)
|
||||
op = order.positions.first()
|
||||
op.variation = var
|
||||
@@ -564,14 +565,14 @@ def test_orderposition_list(token_client, organizer, event, order, item, subeven
|
||||
))
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/orderpositions/?item={}'.format(organizer.slug, event.slug, item.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/orderpositions/?item={}'.format(organizer.slug, event.slug, i2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/orderpositions/?variation={}'.format(organizer.slug, event.slug, var.pk))
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/orderpositions/?variation={}'.format(organizer.slug, event.slug, var.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/orderpositions/?variation={}'.format(organizer.slug, event.slug, var2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
resp = token_client.get(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import copy
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
@@ -51,6 +52,13 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
||||
res['item'] = item.pk
|
||||
res['id'] = voucher.pk
|
||||
res['code'] = voucher.code
|
||||
q2 = copy.copy(quota)
|
||||
q2.pk = None
|
||||
q2.save()
|
||||
i2 = copy.copy(item)
|
||||
i2.pk = None
|
||||
i2.save()
|
||||
var2 = i2.variations.create(value="foo")
|
||||
|
||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/vouchers/'.format(organizer.slug, event.slug))
|
||||
assert resp.status_code == 200
|
||||
@@ -124,7 +132,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
||||
)
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?item={}'.format(organizer.slug, event.slug, item.pk + 1)
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?item={}'.format(organizer.slug, event.slug, i2.pk)
|
||||
)
|
||||
assert [] == resp.data['results']
|
||||
|
||||
@@ -137,7 +145,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
||||
)
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?variation={}'.format(organizer.slug, event.slug, var.pk + 1)
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?variation={}'.format(organizer.slug, event.slug, var2.pk)
|
||||
)
|
||||
assert [] == resp.data['results']
|
||||
|
||||
@@ -153,7 +161,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
||||
)
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?quota={}'.format(organizer.slug, event.slug, quota.pk + 1)
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?quota={}'.format(organizer.slug, event.slug, q2.pk)
|
||||
)
|
||||
assert [] == resp.data['results']
|
||||
|
||||
@@ -200,9 +208,10 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||
assert [res] == resp.data['results']
|
||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug,
|
||||
subevent.pk + 1))
|
||||
se2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import copy
|
||||
import datetime
|
||||
from unittest import mock
|
||||
|
||||
@@ -43,9 +44,13 @@ TEST_WLE_RES = {
|
||||
@pytest.mark.django_db
|
||||
def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
||||
var = item.variations.create(value="Children")
|
||||
var2 = item.variations.create(value="Children")
|
||||
res = dict(TEST_WLE_RES)
|
||||
wle.variation = var
|
||||
wle.save()
|
||||
i2 = copy.copy(item)
|
||||
i2.pk = None
|
||||
i2.save()
|
||||
res["id"] = wle.pk
|
||||
res["item"] = item.pk
|
||||
res["variation"] = var.pk
|
||||
@@ -58,14 +63,14 @@ def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?item={}'.format(organizer.slug, event.slug, item.pk))
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?item={}'.format(organizer.slug, event.slug, item.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?item={}'.format(organizer.slug, event.slug, i2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?variation={}'.format(organizer.slug, event.slug, var.pk))
|
||||
assert [res] == resp.data['results']
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?variation={}'.format(organizer.slug, event.slug, var.pk + 1))
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?variation={}'.format(organizer.slug, event.slug, var2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
resp = token_client.get(
|
||||
@@ -106,9 +111,10 @@ def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||
assert [res] == resp.data['results']
|
||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||
resp = token_client.get(
|
||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug,
|
||||
subevent.pk + 1))
|
||||
se2.pk))
|
||||
assert [] == resp.data['results']
|
||||
|
||||
|
||||
|
||||
@@ -1144,7 +1144,7 @@ class EventTest(TestCase):
|
||||
cl1.limit_products.add(i1)
|
||||
|
||||
event2 = Event.objects.create(
|
||||
organizer=self.organizer, name='Download', slug='ab1234',
|
||||
organizer=self.organizer, name='Download', slug='ab54321',
|
||||
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc)
|
||||
)
|
||||
event2.copy_data_from(event1)
|
||||
|
||||
@@ -147,7 +147,7 @@ def test_event_permissions_multiple_teams(event, user):
|
||||
team2 = Team.objects.create(organizer=event.organizer, can_change_vouchers=True)
|
||||
team3 = Team.objects.create(organizer=event.organizer, can_change_event_settings=True)
|
||||
event2 = Event.objects.create(
|
||||
organizer=event.organizer, name='Dummy', slug='dummy',
|
||||
organizer=event.organizer, name='Dummy', slug='dummy2',
|
||||
date_from=now()
|
||||
)
|
||||
team1.members.add(user)
|
||||
|
||||
@@ -417,7 +417,7 @@ class EventsTest(SoupTest):
|
||||
'foundation-organizer': self.orga2.pk,
|
||||
'foundation-locales': ('en', 'de')
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
def test_create_invalid_default_language(self):
|
||||
doc = self.post_doc('/control/events/add', {
|
||||
@@ -442,7 +442,7 @@ class EventsTest(SoupTest):
|
||||
'basics-presale_start': '2016-11-01 10:00:00',
|
||||
'basics-presale_end': '2016-11-30 18:00:00',
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
def test_create_duplicate_slug(self):
|
||||
doc = self.post_doc('/control/events/add', {
|
||||
@@ -471,7 +471,7 @@ class EventsTest(SoupTest):
|
||||
'basics-presale_end_0': '2016-11-30',
|
||||
'basics-presale_end_1': '18:00:00',
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
def test_create_event_success(self):
|
||||
doc = self.get_doc('/control/events/add')
|
||||
@@ -642,7 +642,7 @@ class EventsTest(SoupTest):
|
||||
'basics-presale_end_0': '2016-11-30',
|
||||
'basics-presale_end_1': '18:00:00',
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
def test_create_event_currency_symbol(self):
|
||||
doc = self.post_doc('/control/events/add', {
|
||||
@@ -669,7 +669,7 @@ class EventsTest(SoupTest):
|
||||
'basics-presale_end_0': '2016-11-30',
|
||||
'basics-presale_end_1': '18:00:00',
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
def test_create_event_non_iso_currency(self):
|
||||
doc = self.post_doc('/control/events/add', {
|
||||
@@ -696,7 +696,7 @@ class EventsTest(SoupTest):
|
||||
'basics-presale_end_0': '2016-11-30',
|
||||
'basics-presale_end_1': '18:00:00',
|
||||
})
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".has-error")
|
||||
|
||||
|
||||
class SubEventsTest(SoupTest):
|
||||
|
||||
@@ -42,7 +42,7 @@ class VoucherFormTest(SoupTest):
|
||||
form_data.update(data)
|
||||
doc = self.post_doc('/control/event/%s/%s/vouchers/add' % (self.orga.slug, self.event.slug), form_data)
|
||||
if expected_failure:
|
||||
assert doc.select(".alert-danger")
|
||||
assert doc.select(".alert-danger, .has-error")
|
||||
assert count_before == self.event.vouchers.count()
|
||||
else:
|
||||
assert doc.select(".alert-success")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from django import urls
|
||||
from django.conf import settings
|
||||
from django.core import urlresolvers
|
||||
|
||||
from pretix.helpers.urls import build_absolute_uri
|
||||
|
||||
@@ -11,7 +11,7 @@ def test_site_url_domain():
|
||||
|
||||
def test_site_url_subpath():
|
||||
settings.SITE_URL = 'https://example.com/presale'
|
||||
old_prefix = urlresolvers.get_script_prefix()
|
||||
urlresolvers.set_script_prefix('/presale/')
|
||||
old_prefix = urls.get_script_prefix()
|
||||
urls.set_script_prefix('/presale/')
|
||||
assert build_absolute_uri('control:auth.login') == 'https://example.com/presale/control/login'
|
||||
urlresolvers.set_script_prefix(old_prefix)
|
||||
urls.set_script_prefix(old_prefix)
|
||||
|
||||
47
src/tests/multidomain/test_plugin_handler.py
Normal file
47
src/tests/multidomain/test_plugin_handler.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import pytest
|
||||
from django.conf import settings
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import Event, Organizer
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def event():
|
||||
o = Organizer.objects.create(name='MRMCD', slug='mrmcd')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='MRMCD2015', slug='2015',
|
||||
date_from=now(),
|
||||
)
|
||||
settings.SITE_URL = 'http://example.com'
|
||||
return event
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_require_plugin(event, client):
|
||||
event.plugins = 'pretix.plugins.paypal'
|
||||
event.live = True
|
||||
event.save()
|
||||
r = client.get('/mrmcd/2015/paypal/abort/', follow=False)
|
||||
assert r.status_code == 302
|
||||
event.plugins = ''
|
||||
event.save()
|
||||
r = client.get('/mrmcd/2015/paypal/abort/', follow=False)
|
||||
assert r.status_code == 404
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_require_live(event, client):
|
||||
event.plugins = 'pretix.plugins.paypal'
|
||||
event.live = True
|
||||
event.save()
|
||||
r = client.get('/mrmcd/2015/paypal/abort/', follow=False)
|
||||
assert r.status_code == 302
|
||||
r = client.get('/mrmcd/2015/paypal/webhook/', follow=False)
|
||||
assert r.status_code == 405
|
||||
|
||||
event.live = False
|
||||
event.save()
|
||||
r = client.get('/mrmcd/2015/paypal/abort/', follow=False)
|
||||
assert r.status_code == 403
|
||||
r = client.get('/mrmcd/2015/paypal/webhook/', follow=False)
|
||||
assert r.status_code == 405
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import NoReverseMatch
|
||||
from django.template import Context, Template, TemplateSyntaxError
|
||||
from django.urls import NoReverseMatch
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import Event, Organizer
|
||||
|
||||
@@ -49,9 +49,9 @@ class CheckoutTestCase(TestCase):
|
||||
self.workshopcat = ItemCategory.objects.create(name="Workshops", is_addon=True, event=self.event)
|
||||
self.workshopquota = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
|
||||
self.workshop1 = Item.objects.create(event=self.event, name='Workshop 1',
|
||||
category=self.workshopcat, default_price=12)
|
||||
category=self.workshopcat, default_price=Decimal('12.00'))
|
||||
self.workshop2 = Item.objects.create(event=self.event, name='Workshop 2',
|
||||
category=self.workshopcat, default_price=12)
|
||||
category=self.workshopcat, default_price=Decimal('12.00'))
|
||||
self.workshop2a = ItemVariation.objects.create(item=self.workshop2, value='A')
|
||||
self.workshop2b = ItemVariation.objects.create(item=self.workshop2, value='B')
|
||||
self.workshopquota.items.add(self.workshop1)
|
||||
|
||||
Reference in New Issue
Block a user