mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 07:28:10 +00:00
refactor(tests): modernize test_msg_getaddress_segwit_native
This commit is contained in:
parent
81e66cb024
commit
169c472172
@ -20,152 +20,138 @@ from trezorlib import btc, messages as proto
|
||||
from trezorlib.exceptions import TrezorFailure
|
||||
from trezorlib.tools import parse_path
|
||||
|
||||
VECTORS = ( # coin, path, script_type, address
|
||||
(
|
||||
"Testnet",
|
||||
"84'/1'/0'/0/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"tb1qkvwu9g3k2pdxewfqr7syz89r3gj557l3uuf9r9",
|
||||
),
|
||||
(
|
||||
"Testnet",
|
||||
"84'/1'/0'/1/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"tb1qejqxwzfld7zr6mf7ygqy5s5se5xq7vmt96jk9x",
|
||||
),
|
||||
(
|
||||
"Bitcoin",
|
||||
"84'/0'/0'/0/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"bc1qannfxke2tfd4l7vhepehpvt05y83v3qsf6nfkk",
|
||||
),
|
||||
(
|
||||
"Bitcoin",
|
||||
"84'/0'/0'/1/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"bc1qktmhrsmsenepnnfst8x6j27l0uqv7ggrg8x38q",
|
||||
),
|
||||
pytest.param(
|
||||
"Groestlcoin",
|
||||
"84'/17'/0'/0/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"grs1qw4teyraux2s77nhjdwh9ar8rl9dt7zww8r6lne",
|
||||
marks=pytest.mark.altcoin,
|
||||
),
|
||||
pytest.param(
|
||||
"Elements",
|
||||
"84'/1'/0'/0/0",
|
||||
proto.InputScriptType.SPENDWITNESS,
|
||||
"ert1qkvwu9g3k2pdxewfqr7syz89r3gj557l3xp9k2v",
|
||||
marks=pytest.mark.altcoin,
|
||||
),
|
||||
)
|
||||
|
||||
class TestMsgGetaddressSegwitNative:
|
||||
def test_show_segwit(self, client):
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/0'/0/0"),
|
||||
True,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qkvwu9g3k2pdxewfqr7syz89r3gj557l3uuf9r9"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/0'/1/0"),
|
||||
False,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qejqxwzfld7zr6mf7ygqy5s5se5xq7vmt96jk9x"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/0'/0/0"),
|
||||
False,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qkvwu9g3k2pdxewfqr7syz89r3gj557l3uuf9r9"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("44'/1'/0'/0/0"),
|
||||
False,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDADDRESS,
|
||||
)
|
||||
== "mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q"
|
||||
)
|
||||
|
||||
@pytest.mark.altcoin
|
||||
def test_show_segwit_altcoin(self, client):
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Groestlcoin",
|
||||
parse_path("84'/17'/0'/0/0"),
|
||||
False,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "grs1qw4teyraux2s77nhjdwh9ar8rl9dt7zww8r6lne"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Elements",
|
||||
parse_path("84'/1'/0'/0/0"),
|
||||
False,
|
||||
None,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "ert1qkvwu9g3k2pdxewfqr7syz89r3gj557l3xp9k2v"
|
||||
@pytest.mark.parametrize("show_display", (True, False))
|
||||
@pytest.mark.parametrize("coin, path, script_type, address", VECTORS)
|
||||
def test_show_segwit(client, show_display, coin, path, script_type, address):
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
coin,
|
||||
parse_path(path),
|
||||
show_display,
|
||||
None,
|
||||
script_type=script_type,
|
||||
)
|
||||
== address
|
||||
)
|
||||
|
||||
@pytest.mark.multisig
|
||||
def test_show_multisig_3(self, client):
|
||||
nodes = [
|
||||
btc.get_public_node(
|
||||
client, parse_path("84'/1'/%d'" % index), coin_name="Testnet"
|
||||
).node
|
||||
for index in range(1, 4)
|
||||
]
|
||||
multisig1 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 0], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
multisig2 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 1], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
for i in [1, 2, 3]:
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/%d'/0/1" % i),
|
||||
False,
|
||||
multisig2,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qauuv4e2pwjkr4ws5f8p20hu562jlqpe5h74whxqrwf7pufsgzcms9y8set"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/%d'/0/0" % i),
|
||||
False,
|
||||
multisig1,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qgvn67p4twmpqhs8c39tukmu9geamtf7x0z3flwf9rrw4ff3h6d2qt0czq3"
|
||||
)
|
||||
|
||||
@pytest.mark.multisig
|
||||
@pytest.mark.parametrize("show_display", (True, False))
|
||||
def test_multisig_missing(self, client, show_display):
|
||||
# Multisig with global suffix specification.
|
||||
# Use account numbers 1, 2 and 3 to create a valid multisig,
|
||||
# but not containing the keys from account 0 used below.
|
||||
nodes = [
|
||||
btc.get_public_node(client, parse_path("84'/0'/%d'" % i)).node
|
||||
for i in range(1, 4)
|
||||
]
|
||||
multisig1 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 0], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
|
||||
# Multisig with per-node suffix specification.
|
||||
node = btc.get_public_node(
|
||||
client, parse_path("84h/0h/0h/0"), coin_name="Bitcoin"
|
||||
@pytest.mark.multisig
|
||||
def test_show_multisig_3(client):
|
||||
nodes = [
|
||||
btc.get_public_node(
|
||||
client, parse_path("84'/1'/%d'" % index), coin_name="Testnet"
|
||||
).node
|
||||
multisig2 = proto.MultisigRedeemScriptType(
|
||||
pubkeys=[
|
||||
proto.HDNodePathType(node=node, address_n=[1]),
|
||||
proto.HDNodePathType(node=node, address_n=[2]),
|
||||
proto.HDNodePathType(node=node, address_n=[3]),
|
||||
],
|
||||
signatures=[b"", b"", b""],
|
||||
m=2,
|
||||
for index in range(1, 4)
|
||||
]
|
||||
multisig1 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 0], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
multisig2 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 1], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
for i in [1, 2, 3]:
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/%d'/0/1" % i),
|
||||
False,
|
||||
multisig2,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qauuv4e2pwjkr4ws5f8p20hu562jlqpe5h74whxqrwf7pufsgzcms9y8set"
|
||||
)
|
||||
assert (
|
||||
btc.get_address(
|
||||
client,
|
||||
"Testnet",
|
||||
parse_path("84'/1'/%d'/0/0" % i),
|
||||
False,
|
||||
multisig1,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
== "tb1qgvn67p4twmpqhs8c39tukmu9geamtf7x0z3flwf9rrw4ff3h6d2qt0czq3"
|
||||
)
|
||||
|
||||
for multisig in (multisig1, multisig2):
|
||||
with pytest.raises(TrezorFailure):
|
||||
btc.get_address(
|
||||
client,
|
||||
"Bitcoin",
|
||||
parse_path("84'/0'/0'/0/0"),
|
||||
show_display=show_display,
|
||||
multisig=multisig,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
|
||||
@pytest.mark.multisig
|
||||
@pytest.mark.parametrize("show_display", (True, False))
|
||||
def test_multisig_missing(client, show_display):
|
||||
# Multisig with global suffix specification.
|
||||
# Use account numbers 1, 2 and 3 to create a valid multisig,
|
||||
# but not containing the keys from account 0 used below.
|
||||
nodes = [
|
||||
btc.get_public_node(client, parse_path("84'/0'/%d'" % i)).node
|
||||
for i in range(1, 4)
|
||||
]
|
||||
multisig1 = proto.MultisigRedeemScriptType(
|
||||
nodes=nodes, address_n=[0, 0], signatures=[b"", b"", b""], m=2
|
||||
)
|
||||
|
||||
# Multisig with per-node suffix specification.
|
||||
node = btc.get_public_node(
|
||||
client, parse_path("84h/0h/0h/0"), coin_name="Bitcoin"
|
||||
).node
|
||||
multisig2 = proto.MultisigRedeemScriptType(
|
||||
pubkeys=[
|
||||
proto.HDNodePathType(node=node, address_n=[1]),
|
||||
proto.HDNodePathType(node=node, address_n=[2]),
|
||||
proto.HDNodePathType(node=node, address_n=[3]),
|
||||
],
|
||||
signatures=[b"", b"", b""],
|
||||
m=2,
|
||||
)
|
||||
|
||||
for multisig in (multisig1, multisig2):
|
||||
with pytest.raises(TrezorFailure):
|
||||
btc.get_address(
|
||||
client,
|
||||
"Bitcoin",
|
||||
parse_path("84'/0'/0'/0/0"),
|
||||
show_display=show_display,
|
||||
multisig=multisig,
|
||||
script_type=proto.InputScriptType.SPENDWITNESS,
|
||||
)
|
||||
|
@ -289,11 +289,21 @@
|
||||
"test_msg_getaddress_segwit.py-test_show_multisig_3": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit.py-test_show_segwit": "8fee331410c7b921ea9bca379bd8c626672e9a8f87e99eca3e8786b27a10814c",
|
||||
"test_msg_getaddress_segwit.py-test_show_segwit_altcoin": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py-test_multisig_missing[False]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py-test_multisig_missing[True]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py-test_show_multisig_3": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py-test_show_segwit": "222d8057b5db530e7e5f1e1328c9049d2ccdc520f797cf02f8f578cdd53fb784",
|
||||
"test_msg_getaddress_segwit_native.py-test_show_segwit_altcoin": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_multisig_missing[False]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_multisig_missing[True]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_multisig_3": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Bitcoin-84'-0'-0'-0-0-InputScriptTyp-1daa684c": "6ed624858ce8f9e7a2c3eb3d3ea369caffb800e8f64a2a70320fbc901ab5fcde",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Bitcoin-84'-0'-0'-0-0-InputScriptTyp-edbd0ef5": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Bitcoin-84'-0'-0'-1-0-InputScriptTyp-6154dbf8": "a021b0436b425f2b32923601fc4e79dbb1668ae7077cab5f8852fa0278334e19",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Bitcoin-84'-0'-0'-1-0-InputScriptTyp-baf8e630": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Elements-84'-1'-0'-0-0-InputScriptTy-85a82103": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Elements-84'-1'-0'-0-0-InputScriptTy-fddcab5b": "f780fae7616adf03f07144ef8d3482fa04cd0e744ec4502aa93cc0ec0877e61d",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-84'-17'-0'-0-0-InputScri-94cc4c77": "c5311f036fdb7d7cae9878b6161a4f3cae3b6a594bff9b1e2099455cd0bf3d28",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-84'-17'-0'-0-0-InputScri-c8d41d22": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Testnet-84'-1'-0'-0-0-InputScriptTyp-41719d2f": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Testnet-84'-1'-0'-0-0-InputScriptTyp-b1cc1c24": "222d8057b5db530e7e5f1e1328c9049d2ccdc520f797cf02f8f578cdd53fb784",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Testnet-84'-1'-0'-1-0-InputScriptTyp-63e7b548": "cd275027373a9939bc0443381cfcd062c7edef26d817efbcc6f7cb1b17bd276d",
|
||||
"test_msg_getaddress_segwit_native.py::test_show_segwit[Testnet-84'-1'-0'-1-0-InputScriptTyp-d9df6906": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
|
||||
"test_msg_getaddress_show.py::test_show[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-1FM6Kz-0e830714": "1639a90cd9deccc25478b736c1992bd3f1ef17db95ab7e0ea82451dff0ebb12d",
|
||||
"test_msg_getaddress_show.py::test_show[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWITNESS-3H-3d077d2b": "a2b3af26697700980024d2d9ba1145925d9c3c9dea40f6cc3d4546ea94e6e913",
|
||||
"test_msg_getaddress_show.py::test_show[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-bc1qdu-723cf9ae": "c3258bfb300e27bb54aec51eaf68008e087191b97794ddb8a1e6ee650fd8a6b2",
|
||||
|
Loading…
Reference in New Issue
Block a user