def test_generate_payment_request(): pp = PayProc(KEY_FILENAME, cert_file=CERTIFICATE_FILENAME) pp.get_merchant = lambda x: MERCHANT pp.get_destinations = lambda device, payment_request: [ Destination(amount=Decimal(5), destination_address="xrb123", crypto_currency="NANO") ] pp.get_supported_cryptos = lambda device, payment_request: [ "BTC", "XMR", "NANO" ] payment_request = MerchantOrderRequestMessage( amount=Decimal(10), fiat_currency="EURO", session_id="123", crypto_currency="NANO", ) envelope = pp.generate_payment_request("device1", payment_request) expected_message = PaymentRequestMessage( merchant=MERCHANT, amount=Decimal(10), fiat_currency="EURO", destinations=[ Destination(amount=Decimal(5), destination_address="xrb123", crypto_currency="NANO") ], supported_cryptos={"BTC", "XMR", "NANO"}, ) assert expected_message == envelope.unpack()
def test_get_payment_request(mock_mqtt, payproc): test_receive_merchant_order_request(mock_mqtt, payproc) mock_mqtt.push("payment_requests/1423/btc", "") destination = Destination(amount=Decimal("5"), destination_address="btc_daddress", crypto_currency="btc") expected = PaymentRequestMessage( merchant=MERCHANT, fiat_currency="eur", amount=Decimal("1000"), destinations=[destination], supported_cryptos={"nano", "btc", "xmr"}, ) class PMEqual(Matcher): payment_request: PaymentRequestMessage def __init__(self, payment_request: PaymentRequestMessage): self.payment_request = payment_request def match(self, value): decoded = json.loads(value) message = PaymentRequestMessage.from_json(decoded["message"]) assert self.payment_request == message return True mock_mqtt.publish.assert_called_with("payment_requests/1423", PMEqual(expected))
def test_config2msg(): from decimal import Decimal import file_config from manta.messages import Destination from manta.testing import config2msg from manta.testing.config import DummyPayProcConfig dest = Destination( amount=Decimal("0.01"), destination_address= "xrb_3d1ab61eswzsgx5arwqc3gw8xjcsxd7a5egtr69jixa5it9yu9fzct9nyjyx", crypto_currency="NANO") cfg_dest = DummyPayProcConfig.DestinationConfig( amount=Decimal("0.01"), destination_address= "xrb_3d1ab61eswzsgx5arwqc3gw8xjcsxd7a5egtr69jixa5it9yu9fzct9nyjyx", crypto_currency="NANO") assert file_config.validate(cfg_dest) is None converted = config2msg(cfg_dest, Destination) assert converted == dest
Destination, PaymentRequestMessage, verify_chain, PaymentMessage, AckMessage, Status, Merchant, ) from manta.wallet import Wallet # noinspection PyUnresolvedReferences from tests.utils import JsonContains DESTINATIONS = [ Destination( amount=Decimal(5), destination_address="btc_daddress", crypto_currency="btc" ), Destination( amount=Decimal(10), destination_address="nano_daddress", crypto_currency="nano" ), ] MERCHANT = Merchant(name="Merchant 1", address="5th Avenue") PRIVATE_KEY = "certificates/root/keys/test.key" CERTIFICATE = "certificates/root/certs/test.crt" CA_CERTIFICATE = "certificates/root/certs/DeveloperCA.crt" @pytest.fixture def payment_request():
from decimal import Decimal import logging from aiohttp import web from manta.messages import MerchantOrderRequestMessage, Destination, Merchant from manta.payproc import PayProc logger = logging.getLogger(__name__) KEYFILE = "certificates/root/keys/test.key" DESTINATIONS = [ Destination( amount=Decimal("0.01"), destination_address= "xrb_3d1ab61eswzsgx5arwqc3gw8xjcsxd7a5egtr69jixa5it9yu9fzct9nyjyx", crypto_currency="NANO"), ] MERCHANT = Merchant(name="Merchant 1", address="5th Avenue") def get_destinations(application_id, merchant_order: MerchantOrderRequestMessage): if merchant_order.crypto_currency: destination = next( x for x in DESTINATIONS if x.crypto_currency == merchant_order.crypto_currency) return [destination] else: