mirror of
https://github.com/pretix/pretix.git
synced 2026-09-12 16:04:42 +00:00
Merge branch 'master' into self-service-storno
This commit is contained in:
@@ -837,3 +837,62 @@ def test_webhook_pending_payment(env, client, monkeypatch):
|
||||
order.refresh_from_db()
|
||||
with scopes_disabled():
|
||||
assert order.payments.first().state == OrderPayment.PAYMENT_STATE_PENDING
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_webhook_capture_declined(env, client, monkeypatch):
|
||||
order = env[1]
|
||||
order.status = Order.STATUS_PENDING
|
||||
order.save()
|
||||
with scopes_disabled():
|
||||
order.payments.update(state=OrderPayment.PAYMENT_STATE_CREATED)
|
||||
|
||||
pp_order = Result(get_test_order_review_pending())
|
||||
mock_orders_get_request = MagicMock(return_value=pp_order)
|
||||
monkeypatch.setattr("paypalcheckoutsdk.orders.OrdersGetRequest", mock_orders_get_request)
|
||||
monkeypatch.setattr("pretix.plugins.paypal2.payment.PaypalMethod.init_api", init_api)
|
||||
with scopes_disabled():
|
||||
ReferencedPayPalObject.objects.create(order=order, payment=order.payments.first(),
|
||||
reference="806440346Y391300T")
|
||||
|
||||
assert order.payments.first().state == OrderPayment.PAYMENT_STATE_CREATED
|
||||
|
||||
client.post('/_paypal/webhook/', json.dumps(
|
||||
{
|
||||
"create_time": "2026-08-17T12:23:30.687Z",
|
||||
"event_type": "PAYMENT.CAPTURE.DECLINED",
|
||||
"event_version": "1.0",
|
||||
"id": "WH-XXXXXXXXXXXX-XXXXXXXXX",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://api.paypal.com/v1/notifications/webhooks-events/WH-XXXXXXXXXXXX-XXXXXXXXX",
|
||||
"method": "GET",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "https://api.paypal.com/v1/notifications/webhooks-events/WH-XXXXXXXXXXXX-XXXXXXXXX/resend",
|
||||
"method": "POST",
|
||||
"rel": "resend"
|
||||
}
|
||||
],
|
||||
"resource": {
|
||||
"amount": {},
|
||||
"custom_id": "Order ABC-12345",
|
||||
"disbursement_mode": "INSTANT",
|
||||
"final_capture": True,
|
||||
"id": "806440346Y391300T",
|
||||
"payee": {},
|
||||
"seller_protection": {},
|
||||
"seller_receivable_breakdown": {},
|
||||
"status": "DECLINED",
|
||||
"supplementary_data": {}
|
||||
},
|
||||
"resource_type": "capture",
|
||||
"resource_version": "2.0",
|
||||
"summary": "A payment capture for € 30.0 EUR was declined."
|
||||
}), content_type='application_json')
|
||||
|
||||
order = env[1]
|
||||
order.refresh_from_db()
|
||||
with scopes_disabled():
|
||||
assert order.payments.first().state == OrderPayment.PAYMENT_STATE_FAILED
|
||||
|
||||
@@ -35,6 +35,8 @@ def event():
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=now(), live=True,
|
||||
plugins='pretix.plugins.sendmail,tests.testdummy',
|
||||
location='Foo City',
|
||||
date_admission=now().replace(hour=11, minute=30),
|
||||
)
|
||||
return event
|
||||
|
||||
@@ -81,7 +83,12 @@ def event_series(event):
|
||||
|
||||
@pytest.fixture
|
||||
def subevent1(event_series):
|
||||
se1 = event_series.subevents.create(name='Meow', date_from=now() + datetime.timedelta(days=1))
|
||||
se1 = event_series.subevents.create(
|
||||
name='Meow',
|
||||
date_from=now() + datetime.timedelta(days=1),
|
||||
location='Meow Town',
|
||||
date_admission=now().replace(hour=10, minute=0),
|
||||
)
|
||||
return se1
|
||||
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ def test_sendmail_rule_send_order_vs_pos(send_to, amount_mails, recipients, orde
|
||||
|
||||
order.event.sendmail_rules.create(date_is_absolute=True, send_date=dt_now - datetime.timedelta(hours=1),
|
||||
send_to=send_to,
|
||||
subject='meow', template='meow meow meow')
|
||||
subject='{event}: {event_location} @ {event_admission_time}', template='meow meow meow')
|
||||
order.all_positions.create(item=item, price=0, attendee_email='meow@dummy.test')
|
||||
|
||||
sendmail_run_rules(None)
|
||||
@@ -196,6 +196,8 @@ def test_sendmail_rule_send_order_vs_pos(send_to, amount_mails, recipients, orde
|
||||
_recipients = [mail.to[0] for mail in djmail.outbox]
|
||||
assert set(recipients) == set(_recipients)
|
||||
|
||||
assert djmail.outbox[0].subject == 'Dummy: Foo City @ 11:30'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@scopes_disabled()
|
||||
@@ -243,7 +245,7 @@ def test_sendmail_rule_send_correct_subevent(order, event_series, subevent1, sub
|
||||
|
||||
event_series.sendmail_rules.create(date_is_absolute=False, offset_is_after=False, send_offset_days=2,
|
||||
send_offset_time=datetime.time(9, 30), send_to=Rule.ATTENDEES,
|
||||
subject='meow', template='meow meow meow')
|
||||
subject='{event}: {event_location} @ {event_admission_time}', template='meow meow meow')
|
||||
p1 = order.all_positions.create(item=item, price=13, attendee_email='se1@dummy.test', subevent=subevent1)
|
||||
order.all_positions.create(item=item, price=23, attendee_email='se2@dummy.test', subevent=subevent2)
|
||||
|
||||
@@ -253,6 +255,8 @@ def test_sendmail_rule_send_correct_subevent(order, event_series, subevent1, sub
|
||||
|
||||
assert djmail.outbox[0].to[0] == p1.attendee_email
|
||||
|
||||
assert djmail.outbox[0].subject == 'Meow: Meow Town @ 10:00'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@scopes_disabled()
|
||||
|
||||
Reference in New Issue
Block a user