55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
"""Tests for Moyasar capture and refund gateway methods."""
|
|
|
|
from unittest.mock import Mock, patch
|
|
|
|
import pytest
|
|
|
|
from apps.payments.services.gateway import MoyasarGateway, PaymentGatewayError
|
|
|
|
|
|
@patch("apps.payments.services.gateway.requests.post")
|
|
def test_moyasar_capture_calls_api(mock_post):
|
|
mock_post.return_value = Mock(status_code=200, content=b"{}", json=lambda: {"id": "pay_1", "status": "captured"})
|
|
|
|
with patch.dict("os.environ", {
|
|
"MOYASAR_SECRET_KEY": "sk_test",
|
|
"MOYASAR_PUBLISHABLE_KEY": "pk_test",
|
|
}):
|
|
gateway = MoyasarGateway()
|
|
gateway.capture_payment("pay_1")
|
|
|
|
mock_post.assert_called_once()
|
|
call_args = mock_post.call_args
|
|
assert "pay_1/capture" in call_args[0][0]
|
|
assert call_args[1]["auth"] == ("sk_test", "")
|
|
|
|
|
|
@patch("apps.payments.services.gateway.requests.post")
|
|
def test_moyasar_refund_calls_api(mock_post):
|
|
mock_post.return_value = Mock(status_code=200, content=b"{}", json=lambda: {"id": "pay_1", "status": "refunded"})
|
|
|
|
with patch.dict("os.environ", {
|
|
"MOYASAR_SECRET_KEY": "sk_test",
|
|
"MOYASAR_PUBLISHABLE_KEY": "pk_test",
|
|
}):
|
|
gateway = MoyasarGateway()
|
|
gateway.refund_payment("pay_1")
|
|
|
|
mock_post.assert_called_once()
|
|
call_args = mock_post.call_args
|
|
assert "pay_1/refund" in call_args[0][0]
|
|
|
|
|
|
@patch("apps.payments.services.gateway.requests.post")
|
|
def test_moyasar_capture_raises_on_error(mock_post):
|
|
mock_post.return_value = Mock(status_code=400, content=b'{"message":"Invalid"}', json=lambda: {"message": "Invalid"})
|
|
|
|
with patch.dict("os.environ", {
|
|
"MOYASAR_SECRET_KEY": "sk_test",
|
|
"MOYASAR_PUBLISHABLE_KEY": "pk_test",
|
|
}):
|
|
gateway = MoyasarGateway()
|
|
with pytest.raises(PaymentGatewayError) as exc_info:
|
|
gateway.capture_payment("pay_1")
|
|
assert exc_info.value.status_code == 400
|