diff --git a/src/pretix/plugins/paypal/__init__.py b/src/pretix/plugins/paypal/__init__.py index f8add5af4d..f5c656cbd1 100644 --- a/src/pretix/plugins/paypal/__init__.py +++ b/src/pretix/plugins/paypal/__init__.py @@ -7,7 +7,7 @@ from pretix import __version__ as version class PaypalApp(AppConfig): name = 'pretix.plugins.paypal' - verbose_name = _("Stripe") + verbose_name = _("PayPal") class PretixPluginMeta: name = _("PayPal") diff --git a/src/tests/plugins/paypal/test_checkout.py b/src/tests/plugins/paypal/test_checkout.py new file mode 100644 index 0000000000..9c651572ac --- /dev/null +++ b/src/tests/plugins/paypal/test_checkout.py @@ -0,0 +1,51 @@ +import datetime + +import pytest +from django.conf import settings +from django.utils.timezone import now + +from pretix.base.models import ( + CartPosition, Event, Item, ItemCategory, Organizer, Quota, +) + + +@pytest.fixture +def env(client): + orga = Organizer.objects.create(name='CCC', slug='ccc') + event = Event.objects.create( + organizer=orga, name='30C3', slug='30c3', + date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), + plugins='pretix.plugins.paypal', + live=True + ) + category = ItemCategory.objects.create(event=event, name="Everything", position=0) + quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5) + ticket = Item.objects.create(event=event, name='Early-bird ticket', + category=category, default_price=23, admission=True) + quota_tickets.items.add(ticket) + event.settings.set('attendee_names_asked', False) + event.settings.set('payment_paypal__enabled', True) + event.settings.set('payment_paypal__fee_abs', 3) + event.settings.set('payment_paypal_endpoint', 'sandbox') + event.settings.set('payment_paypal_client_id', '12345') + event.settings.set('payment_paypal_secret', '12345') + client.session.email = 'admin@localhost' + return client, ticket + + +@pytest.mark.django_db +def test_payment(env): + client, ticket = env + session_key = client.cookies.get(settings.SESSION_COOKIE_NAME).value + CartPosition.objects.create( + event=ticket.event, cart_id=session_key, item=ticket, + price=23, expires=now() + datetime.timedelta(minutes=10) + ) + client.get('/%s/%s/checkout/payment/' % (ticket.event.organizer.slug, ticket.event.slug), follow=True) + client.post('/%s/%s/checkout/questions/' % (ticket.event.organizer.slug, ticket.event.slug), { + 'email': 'admin@localhost' + }, follow=True) + response = client.post('/%s/%s/checkout/payment/' % (ticket.event.organizer.slug, ticket.event.slug), { + 'payment': 'paypal' + }, follow=True) + assert response.status_code == 200 diff --git a/src/tests/plugins/paypal/test_settings.py b/src/tests/plugins/paypal/test_settings.py new file mode 100644 index 0000000000..0ae1fe5dad --- /dev/null +++ b/src/tests/plugins/paypal/test_settings.py @@ -0,0 +1,29 @@ +import datetime + +import pytest + +from pretix.base.models import Event, EventPermission, Organizer, User + + +@pytest.fixture +def env(client): + orga = Organizer.objects.create(name='CCC', slug='ccc') + event = Event.objects.create( + organizer=orga, name='30C3', slug='30c3', + date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), + plugins='pretix.plugins.paypal', + live=True + ) + event.settings.set('attendee_names_asked', False) + event.settings.set('payment_paypal__enabled', True) + user = User.objects.create_user('dummy@dummy.dummy', 'dummy') + EventPermission.objects.create(user=user, event=event, can_change_settings=True) + client.force_login(user) + return client, event + + +@pytest.mark.django_db +def test_settings(env): + client, event = env + response = client.get('/control/event/%s/%s/settings/payment' % (event.organizer.slug, event.slug), follow=True) + assert response.status_code == 200 diff --git a/src/tests/plugins/stripe/test_checkout.py b/src/tests/plugins/stripe/test_checkout.py new file mode 100644 index 0000000000..262b48c2d3 --- /dev/null +++ b/src/tests/plugins/stripe/test_checkout.py @@ -0,0 +1,66 @@ +import datetime + +import pytest +from django.conf import settings +from django.utils.timezone import now + +from pretix.base.models import ( + CartPosition, Event, Item, ItemCategory, Organizer, Quota, +) + + +class MockedCharge(): + def __init__(self): + self.status = '' + self.paid = False + + def refresh(self): + pass + + +@pytest.fixture +def env(client): + orga = Organizer.objects.create(name='CCC', slug='ccc') + event = Event.objects.create( + organizer=orga, name='30C3', slug='30c3', + date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), + plugins='pretix.plugins.stripe', + live=True + ) + category = ItemCategory.objects.create(event=event, name="Everything", position=0) + quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5) + ticket = Item.objects.create(event=event, name='Early-bird ticket', + category=category, default_price=23, admission=True) + quota_tickets.items.add(ticket) + event.settings.set('attendee_names_asked', False) + event.settings.set('payment_stripe__enabled', True) + client.session.email = 'admin@localhost' + return client, ticket + + +@pytest.mark.django_db +def test_payment(env, monkeypatch): + def charge_create(**kwargs): + assert kwargs['amount'] == 1337 + assert kwargs['currency'] == 'eur' + assert kwargs['source'] == 'tok_189fTT2eZvKYlo2CvJKzEzeu' + c = MockedCharge() + c.status = 'succeeded' + c.paid = True + return c + monkeypatch.setattr("stripe.Charge.create", charge_create) + + client, ticket = env + session_key = client.cookies.get(settings.SESSION_COOKIE_NAME).value + CartPosition.objects.create( + event=ticket.event, cart_id=session_key, item=ticket, + price=23, expires=now() + datetime.timedelta(minutes=10) + ) + client.get('/%s/%s/checkout/payment/' % (ticket.event.organizer.slug, ticket.event.slug), follow=True) + client.post('/%s/%s/checkout/questions/' % (ticket.event.organizer.slug, ticket.event.slug), { + 'email': 'admin@localhost' + }, follow=True) + response = client.post('/%s/%s/checkout/payment/' % (ticket.event.organizer.slug, ticket.event.slug), { + 'payment': 'stripe' + }, follow=True) + assert response.status_code == 200 diff --git a/src/tests/plugins/stripe/test_settings.py b/src/tests/plugins/stripe/test_settings.py new file mode 100644 index 0000000000..59baec911d --- /dev/null +++ b/src/tests/plugins/stripe/test_settings.py @@ -0,0 +1,29 @@ +import datetime + +import pytest + +from pretix.base.models import Event, EventPermission, Organizer, User + + +@pytest.fixture +def env(client): + orga = Organizer.objects.create(name='CCC', slug='ccc') + event = Event.objects.create( + organizer=orga, name='30C3', slug='30c3', + date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), + plugins='pretix.plugins.strip', + live=True + ) + event.settings.set('attendee_names_asked', False) + event.settings.set('payment_stripe__enabled', True) + user = User.objects.create_user('dummy@dummy.dummy', 'dummy') + EventPermission.objects.create(user=user, event=event, can_change_settings=True) + client.force_login(user) + return client, event + + +@pytest.mark.django_db +def test_settings(env): + client, event = env + response = client.get('/control/event/%s/%s/settings/payment' % (event.organizer.slug, event.slug), follow=True) + assert response.status_code == 200