Ejemplo n.º 1
0
def test_invalid_payment_amount(db):
    with pytest.raises(
            payment_service.PaymentOptionNotFoundException, match="paymentoptionnotfound"
    ) as e:
        payment_service.process_incoming_transaction(
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address=OnchainWallet().address_str,
            receiver_sub_address=PAYMENT_SUBADDR,
            amount=PAYMENT_AMOUNT - 1,  # underpaying
            currency=PAYMENT_CURRENCY,
            version=0,
        )

    with pytest.raises(
            payment_service.PaymentOptionNotFoundException, match="paymentoptionnotfound"
    ) as e:
        payment_service.process_incoming_transaction(
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address=OnchainWallet().address_str,
            receiver_sub_address=PAYMENT_SUBADDR,
            amount=PAYMENT_AMOUNT + 1,  # overpaying
            currency=PAYMENT_CURRENCY,
            version=0,
        )
Ejemplo n.º 2
0
def test_payment_expired(db):
    with pytest.raises(payment_service.PaymentExpiredException,
                       match="paymentexpired") as e:
        payment_service.process_incoming_transaction(
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address=OnchainWallet().address_str,
            receiver_sub_address=EXPIRED_PAYMENT_SUBADDR,
            amount=100,
            currency=CURRENCY,
            version=0,
        )
Ejemplo n.º 3
0
def test_payment_status_invalid(db):
    with pytest.raises(payment_service.PaymentStatusException,
                       match="invalidpaymentstatus") as e:
        payment_service.process_incoming_transaction(
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address=OnchainWallet().address_str,
            receiver_sub_address=REJECTED_PAYMENT_SUBADDR,
            amount=100,
            currency=CURRENCY,
            version=0,
        )
Ejemplo n.º 4
0
def test_payment_to_wrong_sub_address(db):
    with pytest.raises(payment_service.PaymentForSubaddrNotFoundException,
                       match="wrongsubaddr") as e:
        payment_service.process_incoming_transaction(
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address=OnchainWallet().address_str,
            receiver_sub_address="ffffffffffffffff",  # wrong sub address
            amount=100,
            currency=CURRENCY,
            version=0,
        )
Ejemplo n.º 5
0
def test_payment_to_wrong_address(db):
    with pytest.raises(payment_service.WrongReceiverAddressException,
                       match="wrongaddr") as e:
        payment_service.process_incoming_transaction(
            version=0,
            sender_address=SENDER_MOCK_ADDR,
            sender_sub_address=SENDER_MOCK_SUBADDR,
            receiver_address="cccccccccccccccccccccccccccccccc",  # wrong addr
            receiver_sub_address="ffffffffffffffff",
            amount=100,
            currency=CURRENCY,
        )
Ejemplo n.º 6
0
def test_successful_payment(db):
    payment_version = 808
    payment_service.process_incoming_transaction(
        sender_address=SENDER_MOCK_ADDR,
        sender_sub_address=SENDER_MOCK_SUBADDR,
        receiver_address=OnchainWallet().address_str,
        receiver_sub_address=PAYMENT_SUBADDR,
        amount=PAYMENT_AMOUNT,
        currency=PAYMENT_CURRENCY,
        version=payment_version,
    )

    payment = db.query(Payment).filter(Payment.id == PAYMENT_ID).one()
    assert payment.status == PaymentStatus.cleared
    assert payment.get_chain_transaction(payment_version) is not None