Untitled

mail@pastecode.io avatar
unknown
plain_text
3 years ago
4.3 kB
3
Indexable
Never
from django.db import transaction
from django.test import TestCase
import pytest
from .handlers import AmazonPayResponseHandler
from payment.models import PaymentAttempt, PaymentTransaction
# Create your tests here.

GATEWAY_RESPONSE = {
    "transaction_code": "14000",
    "transaction_status": "14",
    "response_code": "12000",
    "signature": "072522e4f73cd367977f82ef006b1c635fb5aed69bfcb4fe0e33e8bc2e8dfd3d",
    "merchant_identifier": "3e23104d",
    "access_code": "iKegmYTRhKpBtrW4DBmL",
    "transaction_message": "Success",
    "language": "en",
    "fort_id": "169996200002021039",
    "refunded_amount": "0",
    "response_message": "Success",
    "merchant_reference": "betabulk45ED3",
    "query_command": "CHECK_STATUS",
    "captured_amount": "1000",
    "authorized_amount": "1000",
    "status": "12"
}

@pytest.fixture
def gateway_response():
    return GATEWAY_RESPONSE


# payment_transaction = {
# "amount": "100",
# "booking_reference": "beta1201",
# "currency_code": "KWD",
# "customer_email": "dipak.dade@mailinator.com",
# "customer_phone": "+96597979797",
# "gateway_code": "knet",
# "generate_qr_code": False,
# "is_amount_editable": True,
# "language": "en",
# "order_no": "beta1201",
# "remarks": "beta1201",
# "sms_notification": False,
# "test": "beta1201",
# "unit_config": None
# }
import datetime
payment_trans = {
    "id": 9089,
    "state":"attempted",
    "type":"payment_request",
    "gateway_code":"",
    "pg_codes":[
        "amazon-pay"
    ],
    "service_code":"",
    "is_sandbox":False,
    "is_deleted":False,
    "amount":"10.00",
    "due_amount":None,
    "is_amount_editable":False,
    "language":"en",
    "currency_code":"AED",
    "order_no":"dipak_65456",
    "session_id":"",
    "bulk":None,
    "transaction_log_id":None,
    "sms_payment_details":False,
    "email_payment_details":True,
    "sms_notification":False,
    "email_notification":True,
    "push_notification":False,
    "customer_email":"dipak.dade@kuwaitnet.com",
    "customer_phone":"+96597979797",
    "vendor_name":"",
    "due_date":datetime.date(2021,
    8,
    2),
    "notification_set":None,
    "email_recipients":"",
    "product_type":"",
    "attachment_short_url":"",
    "receipt_short_url":"",
    "capture_delivery_location":False,
    "capture_delivery_address":False,
    "seen_at":None,
    "initiator":None,
    "short_url":"https://pay.kn/2mzxd",
    "unit_config":None,
    "synced":False,
}
payment_attempt =  {
    "state":"error",
    "transaction":9089,
    "reference_number":"betabulkTTFXQ",
    "gateway_response":{
        "response_code":"12036",
        "response_message":"Order not found",
        "signature":"1331c485b553247e69319aa49262e54940e535771cd1ad878eb26f80ce0f270a",
        "merchant_reference":"betabulkTTFXQ",
        "merchant_identifier":"3e23104d",
        "query_command":"CHECK_STATUS",
        "access_code":"iKegmYTRhKpBtrW4DBmL",
        "language":"en",
        "status":"12"
    },
    "settings":None,
    "fee":"0.00",
    "amount":"10.00",
    "total":"10.00",
    "data":{
        "callback_job_id":"88744eea-056a-440d-a2f6-1e961530c3e3",
        "callback_payload":{
            "response_code":"12036",
            "response_message":"Order not found",
            "signature":"1331c485b553247e69319aa49262e54940e535771cd1ad878eb26f80ce0f270a",
            "merchant_reference":"betabulkTTFXQ",
            "merchant_identifier":"3e23104d",
            "query_command":"CHECK_STATUS",
            "access_code":"iKegmYTRhKpBtrW4DBmL",
            "language":"en",
            "status":"12"
        }
    }
}

@pytest.fixture
def create_payment_transaction():
    return PaymentTransaction.objects.create(**payment_trans)

@pytest.fixture
def create_payment_attempt(create_payment_transaction):
    return PaymentAttempt.objects.create(**payment_attempt)

# @pytest.fixture
# def payment_attempt(new_payment_transaction):
#     return PaymentAttempt.objects.create(transaction=new_payment_transaction)

@pytest.fixture
def handler():
    return AmazonPayResponseHandler()

@pytest.mark.django_db
def test_handle_gateway_response(gateway_response, create_payment_attempt, handler):
    handler.handle_gateway_response(create_payment_attempt, gateway_response, from_callback=False)
    assert True == payment_attempt.is_paid()