feat: improve coverage
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
import base64
|
||||
import json
|
||||
from decimal import Decimal
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase
|
||||
|
||||
from config.tests.mixins import Response
|
||||
from shop.exceptions import RedsysPaymentException
|
||||
from shop.models import CustomerAddress, Order, ShopSettings, Tax
|
||||
from shop.redsys import RedsysClient
|
||||
from shop.tests.mixins import CreateProductsMixin
|
||||
@@ -16,6 +20,21 @@ from shop.utils import create_order, create_order_line_for_product, validate_exp
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
def redsys_response_ok(*args, **kwargs):
|
||||
response = {
|
||||
"Ds_SignatureVersion": "HMAC_SHA256_V1",
|
||||
"Ds_MerchantParameters": "eyJEc19BbW91bnQiOiIxNDUiLCJEc19DdXJyZW5jeSI6Ijk3OCIsIkRzX09yZGVyIjoiMTQ0NjA2ODU4MSIsIkRzX01lcmNoYW50Q29kZSI6Ijk5OTAwODg4MSIsIkRzX1Rlcm1pbmFsIjoiMSIsIkRzX1Jlc3BvbnNlIjoiMDAwMCIsIkRzX0F1dGhvcmlzYXRpb25Db2RlIjoiNTAxNjAyIiwiRHNfVHJhbnNhY3Rpb25UeXBlIjoiMCIsIkRzX1NlY3VyZVBheW1lbnQiOiIwIiwiRHNfTGFuZ3VhZ2UiOiIxIiwiRHNfQ2FyZE51bWJlciI6IjQ1NDg4MSoqKioqKioqMDQiLCJEc19NZXJjaGFudERhdGEiOiIiLCJEc19DYXJkX0NvdW50cnkiOiI3MjQiLCJEc19DYXJkX0JyYW5kIjoiMSJ9",
|
||||
"Ds_Signature": "QVxoXwwp919v7XYjyBjhr1VXozESRosHPb3PDW-rcME=",
|
||||
}
|
||||
|
||||
return Response(response, status_code=200)
|
||||
|
||||
|
||||
def redsys_response_error(*args, **kwargs):
|
||||
response = {"errorCode": "SIS00001"}
|
||||
return Response(response, status_code=200)
|
||||
|
||||
|
||||
class TestRedsysTPV(APITestCase, CreateProductsMixin):
|
||||
def setUp(self):
|
||||
self.tax = Tax.objects.create(
|
||||
@@ -53,6 +72,7 @@ class TestRedsysTPV(APITestCase, CreateProductsMixin):
|
||||
self.order = self.create_order()
|
||||
self.order.calculate_total_from_lines()
|
||||
self.settings = ShopSettings.load()
|
||||
self.settings.merchant_code = "999008881"
|
||||
self.settings.shared_secret = "sq7HjrUOBfKmC576ILgskD5srU870gJ7" # Debug secret
|
||||
self.settings.save()
|
||||
|
||||
@@ -184,3 +204,29 @@ class TestRedsysTPV(APITestCase, CreateProductsMixin):
|
||||
assert not validate_expiry_date(f"{previous_year}{current_month}")
|
||||
|
||||
assert validate_expiry_date(f"{current_year}{current_month}")
|
||||
|
||||
@patch("requests.post", redsys_response_ok)
|
||||
def test_redsys_rest_client(self):
|
||||
client = RedsysClient()
|
||||
|
||||
params = client.pay_order_rest(
|
||||
self.order,
|
||||
pan="4548810000000003",
|
||||
expiry_date="122049",
|
||||
cvv2="285",
|
||||
)
|
||||
|
||||
assert params.get("Ds_Order") == "1446068581"
|
||||
assert params.get("Ds_MerchantCode") == self.settings.merchant_code
|
||||
|
||||
@patch("requests.post", redsys_response_error)
|
||||
def test_redsys_rest_client_error(self):
|
||||
client = RedsysClient()
|
||||
|
||||
with pytest.raises(RedsysPaymentException):
|
||||
client.pay_order_rest(
|
||||
self.order,
|
||||
pan="4548810000000003",
|
||||
expiry_date="122049",
|
||||
cvv2="285",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user