1 |
1 |
# -*- coding: utf-8 -*-
|
2 |
2 |
|
|
3 |
from datetime import datetime, timedelta
|
3 |
4 |
import pytest
|
4 |
5 |
from six.moves.urllib import parse as urlparse
|
5 |
6 |
|
... | ... | |
14 |
15 |
'vads_trans_date': u'20090501193530',
|
15 |
16 |
}
|
16 |
17 |
|
|
18 |
|
|
19 |
def get_field(form, field_name):
|
|
20 |
for field in form.fields:
|
|
21 |
if field['name'] == field_name:
|
|
22 |
return field
|
|
23 |
|
|
24 |
|
17 |
25 |
def test_systempayv2():
|
18 |
26 |
p = Payment(PARAMS)
|
19 |
27 |
data = {'amount': 15.24, 'orderid': '654321',
|
... | ... | |
49 |
57 |
# bad response
|
50 |
58 |
with pytest.raises(ResponseError, match='missing signature, vads_ctx_mode or vads_auth_result'):
|
51 |
59 |
p.response('foo=bar')
|
|
60 |
|
|
61 |
|
|
62 |
def test_systempayv2_deferred_payment():
|
|
63 |
default_params = {
|
|
64 |
'secret_test': u'1122334455667788',
|
|
65 |
'vads_site_id': u'12345678',
|
|
66 |
'vads_ctx_mode': u'TEST',
|
|
67 |
}
|
|
68 |
default_data = {
|
|
69 |
'amount': 15.24, 'orderid': '654321', 'first_name': u'John',
|
|
70 |
'last_name': u'Doe'
|
|
71 |
}
|
|
72 |
p = Payment(default_params.copy())
|
|
73 |
data = default_data.copy()
|
|
74 |
data['capture_date'] = (datetime.now().date() + timedelta(days=3)).isoformat()
|
|
75 |
transaction_id, f, form = p.request(**data)
|
|
76 |
assert get_field(form, 'vads_capture_delay')['value'] == '3'
|
|
77 |
|
|
78 |
# default vads_capture_delay used if no capture date
|
|
79 |
params = default_params.copy()
|
|
80 |
params['vads_capture_delay'] = 1
|
|
81 |
p = Payment(params)
|
|
82 |
transaction_id, f, form = p.request(**default_data.copy())
|
|
83 |
assert get_field(form, 'vads_capture_delay')['value'] == '1'
|
|
84 |
|
|
85 |
# capture date override vads_capture_delay
|
|
86 |
params = default_params.copy()
|
|
87 |
params['vads_capture_delay'] = 1
|
|
88 |
p = Payment(params)
|
|
89 |
data = default_data.copy()
|
|
90 |
data['capture_date'] = (datetime.now().date() + timedelta(days=3)).isoformat()
|
|
91 |
transaction_id, f, form = p.request(**data)
|
|
92 |
assert get_field(form, 'vads_capture_delay')['value'] == '3'
|
|
93 |
|
|
94 |
# capture date can't be inferior to the transaction date
|
|
95 |
params = default_params.copy()
|
|
96 |
params['vads_trans_date'] = (datetime.utcnow() + timedelta(days=3)).strftime("%Y%m%d%H%M%S")
|
|
97 |
p = Payment(params)
|
|
98 |
data = default_data.copy()
|
|
99 |
data['capture_date'] = (datetime.now().date()).isoformat()
|
|
100 |
|
|
101 |
with pytest.raises(
|
|
102 |
ValueError, match='capture_date needs to be superior to the transaction date'):
|
|
103 |
transaction_id, f, form = p.request(**data)
|
52 |
|
-
|