Skip to content

Commit

Permalink
add test for txbuilder ad fix small bug
Browse files Browse the repository at this point in the history
  • Loading branch information
eric-volz committed Aug 20, 2023
1 parent ac53670 commit ae38b4f
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 7 deletions.
6 changes: 3 additions & 3 deletions defichain/transactions/builder/txbuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,9 @@ def test_tx(self, tx: "Transaction | str", maxFeeRate: float = None) -> bool:
raise TxBuilderError("The transaction cannot be tested because no data source is given")

def _verify(self):
if not (self.get_address() != self.get_account().get_p2pkh() or
self.get_address() != self.get_account().get_p2sh() or
self.get_address() != self.get_account().get_p2wpkh()):
if not (self.get_address() == self.get_account().get_p2pkh() or
self.get_address() == self.get_account().get_p2sh() or
self.get_address() == self.get_account().get_p2wpkh()):
raise TxBuilderError("The given address does not match the given account!")

def get_inputs_tx(self) -> Transaction:
Expand Down
22 changes: 18 additions & 4 deletions tests/transactions/builder/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from defichain import Wallet, Ocean, TxBuilder
from defichain.networks import DefichainMainnet
from defichain.transactions.rawtransactions import Transaction
from defichain.transactions.utils import BuildAddressAmounts


Expand All @@ -19,9 +20,10 @@ class Addresses:
P2WPKH: str = Keys.wallet.p2wpkh_address()


builder_p2pkh = TxBuilder(Keys.account.get_p2pkh(), Keys.account, Ocean())
builder_p2sh = TxBuilder(Keys.account.get_p2sh(), Keys.account, Ocean())
builder_p2wpkh = TxBuilder(Keys.account.get_p2wpkh(), Keys.account, Ocean())
ocean = Ocean()
builder_p2pkh = TxBuilder(Keys.account.get_p2pkh(), Keys.account, ocean)
builder_p2sh = TxBuilder(Keys.account.get_p2sh(), Keys.account, ocean)
builder_p2wpkh = TxBuilder(Keys.account.get_p2wpkh(), Keys.account, ocean)


class TestAccounts:
Expand Down Expand Up @@ -49,7 +51,16 @@ class TestPool:


class TestTxBuilder:
pass
tx_serialized = "040000000001011f5bf7e7c3bb19f0859837bf0a2c2fa45122657dd6b8249c49cbad808aa5a9720100000000ffffffff" \
"020000000000000000446a424466547842160014e9678d52be85d48ee605909dd937136b0798ec880117a914b1e44951" \
"2e420ba5e2e66c08b427ac5f04c2c19d87010f000000cb90a8010000000000d8cac10500000000160014e9678d52be85" \
"d48ee605909dd937136b0798ec880002473044022014102e4032ad8dc30dbd74203dd678bec62efc857df19cd9295c66" \
"a1f0e52bd202207e5afe81ccc521c7d7a259d93445b4f2892298f3b092e2e199de277d683e8b19012103e536a76363d1" \
"e4b44f9548c9e53f9d7c2fd8d354e0009c71f7f1944db13733b200000000"
tx = Transaction.deserialize(DefichainMainnet, tx_serialized)

inputs_tx_serialized = "040000000149b8ea9b2b0224e44126b86bd1e2889a7dac0ec06fcfb0dc4dd13782e1c84fce0100000000fffff" \
"fff0000000000"


class TestUTXO:
Expand Down Expand Up @@ -106,3 +117,6 @@ class TestUTXO:

class TestVault:
pass


print(builder_p2wpkh.get_inputs_tx())
54 changes: 54 additions & 0 deletions tests/transactions/builder/test_txbuilder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import pytest
from . import Keys, TestTxBuilder, builder_p2wpkh, Addresses

from defichain import TxBuilder, Ocean
from defichain.exceptions.transactions import TxBuilderError
from defichain.exceptions.http import BadRequest


@pytest.mark.transactions
def test_create(): # 01
assert TxBuilder(address=Keys.account.get_p2wpkh(), account=Keys.account, dataSource=Ocean(), feePerByte=1.0)
with pytest.raises(TxBuilderError, match="The given address does not match the given account!"):
assert TxBuilder(address=Keys.account.get_p2wpkh(), account=Keys.wallet.get_account(10),
dataSource=Ocean(), feePerByte=1.0)


@pytest.mark.transactions
def test_send_tx(): # 02
with pytest.raises(BadRequest):
assert builder_p2wpkh.send_tx(TestTxBuilder.tx_serialized)
with pytest.raises(BadRequest):
assert builder_p2wpkh.send_tx(TestTxBuilder.tx)


@pytest.mark.transactions
def test_test_tx(): # 03
assert builder_p2wpkh.test_tx(TestTxBuilder.tx_serialized)
assert builder_p2wpkh.test_tx(TestTxBuilder.tx)


@pytest.mark.transactions
def test_get_inputs_tx(): # 04
assert builder_p2wpkh.get_inputs_tx().serialize() == TestTxBuilder.inputs_tx_serialized


@pytest.mark.transactions
def test_get_address(): # 05
assert builder_p2wpkh.get_address() == Addresses.P2WPKH


@pytest.mark.transactions
def test_get_account(): # 06
assert builder_p2wpkh.get_account() == Keys.account


@pytest.mark.transactions
def test_get_dataSource(): # 07
assert builder_p2wpkh.get_dataSource()


@pytest.mark.transactions
def test_get_feePerByte(): # 08
assert builder_p2wpkh.get_feePerByte() == 1

0 comments on commit ae38b4f

Please sign in to comment.