Skip to content

Commit 84810a6

Browse files
Update test_nowpayments_v2_2_0.py
1 parent 5d58bcc commit 84810a6

1 file changed

Lines changed: 36 additions & 11 deletions

File tree

tests/test_nowpayments_v2_2_0.py

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,32 +39,50 @@ def _fake_post(url, headers=None, json=None, timeout=None):
3939
assert body['ok'] is True
4040
assert body['checkout_url'] == 'https://nowpayments.test/i/inv_123456'
4141
assert body['product']['sku'] == 'pilot_399'
42+
assert body['customer_email'] == 'buyer@example.com'
4243
assert captured['url'] == 'https://api.nowpayments.io/v1/invoice'
4344
assert captured['headers']['x-api-key'] == 'np_test_key'
4445
assert captured['json']['price_amount'] == 399.0
4546
assert captured['json']['price_currency'] == 'usd'
4647
assert captured['json']['ipn_callback_url'].endswith('/api/payments/nowpayments/ipn')
48+
assert f"order_id={body['order_id']}" in captured['json']['success_url']
49+
assert f"order_id={body['order_id']}" in captured['json']['cancel_url']
4750

4851
order_response = client.get(f"/api/payments/nowpayments/order/{body['order_id']}")
4952
order_body = order_response.get_json()
5053
assert order_response.status_code == 200
5154
assert order_body['order']['payment_status'] == 'waiting'
5255
assert order_body['order']['paid'] is False
56+
assert order_body['order']['customer_receipt_status'] == 'pending'
5357

5458

55-
def test_nowpayments_ipn_updates_order_status(client, app_module, monkeypatch):
59+
60+
def test_nowpayments_ipn_updates_order_status_and_sends_postpay_emails(client, app_module, monkeypatch):
61+
app_module.RESEND_API_KEY = 're_test'
62+
app_module.RESEND_FROM = 'PayeeProof <alerts@notify.payeeproof.com>'
63+
app_module.RESEND_TO = 'hello@payeeproof.com'
64+
app_module.NOWPAYMENTS_POSTPAY_REPLY_TO = 'hello@payeeproof.com'
65+
app_module.NOWPAYMENTS_SUPPORT_EMAIL = 'hello@payeeproof.com'
66+
67+
sent = []
68+
5669
def _fake_post(url, headers=None, json=None, timeout=None):
57-
return _FakeResponse(
58-
status_code=200,
59-
payload={
60-
'id': 'inv_abc',
61-
'invoice_url': 'https://nowpayments.test/i/inv_abc',
62-
'payment_status': 'waiting',
63-
},
64-
)
70+
if url.endswith('/invoice'):
71+
return _FakeResponse(
72+
status_code=200,
73+
payload={
74+
'id': 'inv_abc',
75+
'invoice_url': 'https://nowpayments.test/i/inv_abc',
76+
'payment_status': 'waiting',
77+
},
78+
)
79+
if url.endswith('/emails'):
80+
sent.append({'url': url, 'headers': headers or {}, 'json': json or {}})
81+
return _FakeResponse(status_code=200, payload={'id': f"em_{len(sent)}"})
82+
raise AssertionError(f'Unexpected URL: {url}')
6583

6684
monkeypatch.setattr(app_module.requests, 'post', _fake_post)
67-
create_response = client.post('/api/payments/nowpayments/invoice', json={'sku': 'pilot_399'})
85+
create_response = client.post('/api/payments/nowpayments/invoice', json={'sku': 'pilot_399', 'customer_email': 'buyer@example.com'})
6886
order_id = create_response.get_json()['order_id']
6987

7088
ipn_payload = {
@@ -84,13 +102,20 @@ def _fake_post(url, headers=None, json=None, timeout=None):
84102
assert ipn_response.status_code == 200
85103
assert ipn_body['paid'] is True
86104
assert ipn_body['payment_status'] == 'finished'
105+
assert ipn_body['payment_notice_status'] == 'sent'
106+
assert ipn_body['customer_receipt_status'] == 'sent'
107+
assert len(sent) == 2
108+
assert sent[0]['headers']['Idempotency-Key'] == f'nowpayments-admin-{order_id}'
109+
assert sent[1]['headers']['Idempotency-Key'] == f'nowpayments-customer-{order_id}'
87110

88111
order_response = client.get(f'/api/payments/nowpayments/order/{order_id}')
89112
order_body = order_response.get_json()
90113
assert order_response.status_code == 200
91114
assert order_body['order']['paid'] is True
92115
assert order_body['order']['payment_status'] == 'finished'
93-
assert order_body['order']['fulfillment_status'] == 'ready_for_manual_fulfillment'
116+
assert order_body['order']['fulfillment_status'] == 'payment_confirmed'
117+
assert order_body['order']['payment_notice_status'] == 'sent'
118+
assert order_body['order']['customer_receipt_status'] == 'sent'
94119

95120

96121

0 commit comments

Comments
 (0)