lingo: fix amount calculation when no regie is specified (#16824)

This commit is contained in:
Frédéric Péters 2017-06-11 13:01:22 +02:00
parent f3cba5017a
commit 6e616c19fb
2 changed files with 39 additions and 1 deletions

View File

@ -309,7 +309,9 @@ class PayView(View):
cancellation_date__isnull=True)
remote_items = ''
else:
items = BasketItem.objects.filter(user=self.request.user)
items = BasketItem.objects.filter(user=self.request.user,
payment_date__isnull=True,
cancellation_date__isnull=True)
regie_id = items[0].regie_id
for item in items:
if item.regie_id != regie_id:

View File

@ -363,6 +363,42 @@ def test_payment_callback(regie, user):
get_resp = client.get(reverse('lingo-return', kwargs={'regie_pk': regie.pk}), data)
assert get_resp.status_code == 302
def test_payment_callback_no_regie(regie, user):
item = BasketItem.objects.create(user=user, regie=regie,
subject='test_item', amount='10.5',
source_url='http://example.org/testitem/')
login()
resp = client.post(reverse('lingo-pay'))
assert resp.status_code == 302
location = resp.get('location')
parsed = urlparse.urlparse(location)
qs = urlparse.parse_qs(parsed.query)
transaction_id = qs['transaction_id'][0]
data = {'transaction_id': transaction_id, 'signed': True,
'amount': qs['amount'][0], 'ok': True}
assert data['amount'] == '10.50'
# call callback with GET
callback_url = reverse('lingo-callback', kwargs={'regie_pk': regie.id})
with mock.patch('combo.utils.RequestsSession.request') as request:
get_resp = client.get(callback_url, data)
url = request.call_args[0][1]
assert url.startswith('http://example.org/testitem/jump/trigger/paid')
assert get_resp.status_code == 200
assert Transaction.objects.get(order_id=transaction_id).status == 3
item = BasketItem.objects.create(user=user, regie=regie,
subject='test_item', amount='11.5',
source_url='http://example.org/testitem/')
resp = client.post(reverse('lingo-pay'))
assert resp.status_code == 302
location = resp.get('location')
parsed = urlparse.urlparse(location)
qs = urlparse.parse_qs(parsed.query)
transaction_id = qs['transaction_id'][0]
data = {'transaction_id': transaction_id, 'signed': True,
'amount': qs['amount'][0], 'ok': True}
assert data['amount'] == '11.50'
def test_nonexisting_transaction(regie, user):
login()