2 |
2 |
import eopayment
|
3 |
3 |
import pytest
|
4 |
4 |
from datetime import datetime, timedelta
|
5 |
|
import urllib
|
6 |
5 |
from decimal import Decimal
|
7 |
6 |
import json
|
8 |
7 |
import mock
|
... | ... | |
14 |
13 |
from django.contrib.auth.models import User
|
15 |
14 |
from django.http.request import QueryDict
|
16 |
15 |
from django.urls import reverse
|
17 |
|
from django.core.wsgi import get_wsgi_application
|
18 |
16 |
from django.conf import settings
|
19 |
17 |
from django.test import override_settings
|
20 |
18 |
from django.utils import timezone
|
21 |
|
from django.utils.http import urlencode
|
22 |
19 |
from django.utils.six.moves.urllib import parse as urlparse
|
23 |
20 |
from django.utils.timezone import utc
|
24 |
|
from django.contrib.messages.storage.session import SessionStorage
|
25 |
|
from webtest import TestApp
|
26 |
21 |
|
27 |
22 |
from combo.data.models import Page
|
28 |
23 |
from combo.apps.lingo.models import (
|
29 |
|
Regie, BasketItem, Transaction, TransactionOperation, RemoteItem, EXPIRED, LingoBasketCell,
|
|
24 |
Regie, BasketItem, Transaction, TransactionOperation, EXPIRED, LingoBasketCell,
|
30 |
25 |
PaymentBackend)
|
31 |
|
from combo.utils import aes_hex_decrypt, sign_url
|
|
26 |
from combo.utils import sign_url
|
32 |
27 |
from combo.apps.lingo.views import signing_loads, signing_dumps
|
33 |
28 |
|
34 |
29 |
import httmock
|
... | ... | |
1045 |
1040 |
assert Transaction.objects.get(id=t1.id).status == EXPIRED
|
1046 |
1041 |
assert Transaction.objects.get(id=t2.id).status == 0
|
1047 |
1042 |
|
|
1043 |
|
|
1044 |
@mock.patch('combo.utils.requests_wrapper.RequestsSession.request')
|
|
1045 |
def test_transaction_retry(mock_request, remote_regie):
|
|
1046 |
transaction = Transaction.objects.create(
|
|
1047 |
status=eopayment.PAID, regie=remote_regie,
|
|
1048 |
end_date=timezone.now(),
|
|
1049 |
to_be_paid_remote_items='42,35')
|
|
1050 |
transaction.start_date = timezone.now() - timedelta(days=3)
|
|
1051 |
transaction.save()
|
|
1052 |
|
|
1053 |
appconfig = apps.get_app_config('lingo')
|
|
1054 |
|
|
1055 |
mock_json = mock.Mock()
|
|
1056 |
mock_json.status_code = 200
|
|
1057 |
mock_json.json.return_value = {'err': 0, 'data': {
|
|
1058 |
'created': '2020-11-23', 'pay_limit_date': '2021-11-23',
|
|
1059 |
'total_amount': '123.45', 'amount': '123.45'}}
|
|
1060 |
mock_request.return_value = mock_json
|
|
1061 |
|
|
1062 |
appconfig.update_transactions()
|
|
1063 |
transaction.refresh_from_db()
|
|
1064 |
assert transaction.to_be_paid_remote_items is None
|
|
1065 |
|
|
1066 |
# too old
|
|
1067 |
transaction.to_be_paid_remote_items = '42,35'
|
|
1068 |
transaction.start_date = timezone.now() - timedelta(days=4)
|
|
1069 |
transaction.save()
|
|
1070 |
|
|
1071 |
appconfig.update_transactions()
|
|
1072 |
transaction.refresh_from_db()
|
|
1073 |
assert transaction.to_be_paid_remote_items == '42,35'
|
|
1074 |
|
|
1075 |
|
1048 |
1076 |
def test_transaction_validate(app, key, regie, user):
|
1049 |
1077 |
t1 = Transaction(regie=regie, bank_data={'bank': 'data'}, amount=12,
|
1050 |
1078 |
status=eopayment.PAID)
|
1051 |
|
-
|