test(core): use internal model names

[no changelog]
pull/3601/head
Martin Milata 2 months ago
parent 73a7223e7b
commit e7f2d3f6cc

@ -308,7 +308,7 @@ VECTORS = ( # name, amount, show_display
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("name, amount, show_display", VECTORS)
def test_hello_world(
client: Client, name: str, amount: Optional[int], show_display: bool
@ -325,7 +325,7 @@ def test_hello_world(
Unlike in unit tests, [pytest](https://docs.pytest.org) is used as the test framework, which is more suitable for bigger and more complex test suites.
As the functionality is developed only for `TT`, to not break the `CI`, we want to skip this test's execution for model `T1`, by adding `@pytest.mark.skip_t1` decorator.
As the functionality is developed only for `TT`, to not break the `CI`, we want to skip this test's execution for model `T1`, by adding `@pytest.mark.skip_t1b1` decorator.
We are also using the `@pytest.mark.parametrize` decorator, which is an efficient way of testing multiple inputs into the same test case.

@ -106,11 +106,11 @@ the following marker:
This marker must be registered in `REGISTERED_MARKERS` file in `tests` folder.
Tests can be run only for specific models - it is done by disallowing the tests for the other models.
`@pytest.mark.skip_t1`
`@pytest.mark.skip_t2`
`@pytest.mark.skip_tr`
`@pytest.mark.skip_t1b1`
`@pytest.mark.skip_t2t1`
`@pytest.mark.skip_t2b1`
`@pytest.mark.skip_t3t1`
are valid markers to skip current test for T1, TT and TR respectively.
are valid markers to skip current test for Model 1, Model T, Safe 3, and T3T1 respectively.
[pytest-random-order]: https://pypi.org/project/pytest-random-order/

@ -36,7 +36,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_t2, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1, pytest.mark.skip_t3t1]
# Testing the maximum length is really 50
# TODO: show some UI message when length reaches 50?

@ -30,7 +30,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_tr]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1]
# TODO: it is not possible to cancel the passphrase entry on TT
# NOTE: the prompt (underscoring) is not there when a space is entered

@ -37,7 +37,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
PIN_CANCELLED = pytest.raises(exceptions.TrezorFailure, match="PIN entry cancelled")
PIN_INVALID = pytest.raises(exceptions.TrezorFailure, match="PIN invalid")
@ -285,7 +285,7 @@ def test_pin_incorrect(device_handler: "BackgroundDeviceHandler"):
_input_see_confirm(debug, PIN4)
@pytest.mark.skip_tr("TODO: will we support cancelling on TR?")
@pytest.mark.skip_t2b1("TODO: will we support cancelling on T2B1?")
@pytest.mark.setup_client(pin=PIN4)
def test_pin_cancel(device_handler: "BackgroundDeviceHandler"):
with PIN_CANCELLED, prepare(device_handler) as debug:

@ -30,7 +30,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
@contextmanager

@ -28,7 +28,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
@pytest.mark.setup_client(uninitialized=True)

@ -28,7 +28,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
@pytest.mark.setup_client(uninitialized=True)

@ -28,7 +28,7 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
@pytest.mark.parametrize(

@ -31,7 +31,7 @@ if TYPE_CHECKING:
# T2B1-only
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_t2, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1, pytest.mark.skip_t3t1]
@contextmanager

@ -90,11 +90,11 @@ def parametrize_using_common_fixtures(*paths: str) -> "MarkDecorator":
skip_marks = []
for skip_model in skip_models:
if skip_model in ("t1", "t1b1"):
skip_marks.append(pytest.mark.skip_t1)
skip_marks.append(pytest.mark.skip_t1b1)
if skip_model in ("t2", "t2t1"):
skip_marks.append(pytest.mark.skip_t2)
skip_marks.append(pytest.mark.skip_t2t1)
if skip_model in ("tr", "t2b1"):
skip_marks.append(pytest.mark.skip_tr)
skip_marks.append(pytest.mark.skip_t2b1)
if skip_model == "t3t1":
skip_marks.append(pytest.mark.skip_t3t1)

@ -140,7 +140,7 @@ def _raw_client(request: pytest.FixtureRequest) -> Client:
# Setting the appropriate language
# Not doing it for T1
if client.features.model != "1":
if client.model is not models.T1B1:
lang = request.session.config.getoption("lang") or "en"
assert isinstance(lang, str)
translations.set_language(client, lang)
@ -179,8 +179,8 @@ def client(
Every test function that requires a client instance will get it from here.
If we can't connect to a debuggable device, the test will fail.
If 'skip_t2' is used and TT is connected, the test is skipped. Vice versa with T1
and 'skip_t1'. Same with TR.
If 'skip_t2t1' is used and TT is connected, the test is skipped. Vice versa with T1
and 'skip_t1b1'. Same with T2B1, T3T1.
The client instance is wiped and preconfigured with "all all all..." mnemonic, no
password and no pin. It is possible to customize this with the `setup_client`
@ -198,15 +198,21 @@ def client(
@pytest.mark.experimental
"""
if request.node.get_closest_marker("skip_t2") and _raw_client.features.model == "T":
if (
request.node.get_closest_marker("skip_t2t1")
and _raw_client.model is models.T2T1
):
pytest.skip("Test excluded on Trezor T")
if request.node.get_closest_marker("skip_t1") and _raw_client.features.model == "1":
if (
request.node.get_closest_marker("skip_t1b1")
and _raw_client.model is models.T1B1
):
pytest.skip("Test excluded on Trezor 1")
if (
request.node.get_closest_marker("skip_tr")
and _raw_client.features.model == "Safe 3"
request.node.get_closest_marker("skip_t2b1")
and _raw_client.model is models.T2B1
):
pytest.skip("Test excluded on Trezor R")
pytest.skip("Test excluded on Trezor T2B1")
if (
request.node.get_closest_marker("skip_t3t1")
and _raw_client.model is models.T3T1
@ -245,7 +251,7 @@ def client(
wipe_device(_raw_client)
# Load language again, as it got erased in wipe
if _raw_client.features.model != "1":
if _raw_client.model is not models.T1B1:
lang = request.session.config.getoption("lang") or "en"
assert isinstance(lang, str)
if lang != "en":
@ -392,9 +398,9 @@ def pytest_configure(config: "Config") -> None:
Registers known markers, enables verbose output if requested.
"""
# register known markers
config.addinivalue_line("markers", "skip_t1: skip the test on Trezor One")
config.addinivalue_line("markers", "skip_t2: skip the test on Trezor T")
config.addinivalue_line("markers", "skip_tr: skip the test on Trezor R")
config.addinivalue_line("markers", "skip_t1b1: skip the test on Trezor One")
config.addinivalue_line("markers", "skip_t2t1: skip the test on Trezor T")
config.addinivalue_line("markers", "skip_t2b1: skip the test on Trezor T2B1")
config.addinivalue_line("markers", "skip_t3t1: skip the test on Trezor T3T1")
config.addinivalue_line(
"markers", "experimental: enable experimental features on Trezor"
@ -419,7 +425,8 @@ def pytest_runtest_setup(item: pytest.Item) -> None:
both T1 and TT.
"""
if all(
item.get_closest_marker(marker) for marker in ("skip_t1", "skip_t2", "skip_tr")
item.get_closest_marker(marker)
for marker in ("skip_t1b1", "skip_t2t1", "skip_t2b1")
):
raise RuntimeError("Don't skip tests for all trezor models!")

@ -25,7 +25,7 @@ from ...input_flows import InputFlowShowAddressQRCode
pytestmark = [
pytest.mark.altcoin,
pytest.mark.binance,
pytest.mark.skip_t1, # T1 support is not planned
pytest.mark.skip_t1b1, # T1 support is not planned
pytest.mark.setup_client(
mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin"
),

@ -27,7 +27,7 @@ BINANCE_PATH = parse_path("m/44h/714h/0h/0/0")
@pytest.mark.altcoin
@pytest.mark.binance
@pytest.mark.skip_t1 # T1 support is not planned
@pytest.mark.skip_t1b1 # T1 support is not planned
@pytest.mark.setup_client(
mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin"
)

@ -103,7 +103,7 @@ BINANCE_TEST_VECTORS = [
@pytest.mark.altcoin
@pytest.mark.binance
@pytest.mark.skip_t1 # T1 support is not planned
@pytest.mark.skip_t1b1 # T1 support is not planned
@pytest.mark.setup_client(
mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin"
)

@ -467,7 +467,7 @@ def test_send_bch_multisig_change(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_send_bch_external_presigned(client: Client):
inp1 = messages.TxInputType(
# address_n=parse_path("44'/145'/0'/1/0"),

@ -47,7 +47,7 @@ FAKE_TXHASH_a63dbe = bytes.fromhex(
"a63dbedd8cd284bf0d3c468e84b9b0eeb14c3a08824eab8f80e7723a299f30db"
)
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_tr]
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1]
# All data taken from T1
@ -548,7 +548,7 @@ def test_send_mixed_inputs(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_send_btg_external_presigned(client: Client):
# NOTE: fake input tx used

@ -40,7 +40,7 @@ TXHASH_15575a = bytes.fromhex(
"15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a"
)
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_tr]
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1]
def test_send_dash(client: Client):

@ -53,7 +53,7 @@ FAKE_TXHASH_51bc9c = bytes.fromhex(
pytestmark = [
pytest.mark.altcoin,
pytest.mark.decred,
pytest.mark.skip_tr,
pytest.mark.skip_t2b1,
pytest.mark.skip_t3t1,
]
@ -105,7 +105,7 @@ def test_send_decred(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_purchase_ticket_decred(client: Client):
# NOTE: fake input tx used
@ -168,7 +168,7 @@ def test_purchase_ticket_decred(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_spend_from_stake_generation_and_revocation_decred(client: Client):
# NOTE: fake input tx used

@ -161,7 +161,7 @@ def _address_n(purpose, coin, account, script_type):
return res
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize(
"coin, account, purpose, script_type, descriptors", VECTORS_DESCRIPTORS
)

@ -136,7 +136,7 @@ def test_elements(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_address_mac(client: Client):
resp = btc.get_authenticated_address(
client, "Bitcoin", parse_path("m/44h/0h/0h/1/0")
@ -163,7 +163,7 @@ def test_address_mac(client: Client):
assert resp.mac is None
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.altcoin
def test_altcoin_address_mac(client: Client):
resp = btc.get_authenticated_address(

@ -50,8 +50,8 @@ VECTORS = ( # path, script_type, address
)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
@pytest.mark.parametrize("path, script_type, address", VECTORS)
def test_show_t1(
@ -78,7 +78,7 @@ def test_show_t1(
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("chunkify", (True, False))
@pytest.mark.parametrize("path, script_type, address", VECTORS)
def test_show_tt(
@ -104,7 +104,7 @@ def test_show_tt(
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("path, script_type, address", VECTORS)
def test_show_cancel(
client: Client, path: str, script_type: messages.InputScriptType, address: str
@ -231,7 +231,7 @@ VECTORS_MULTISIG = ( # script_type, bip48_type, address, xpubs, ignore_xpub_mag
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.multisig
@pytest.mark.parametrize(
"script_type, bip48_type, address, xpubs, ignore_xpub_magic", VECTORS_MULTISIG

@ -116,7 +116,7 @@ def test_get_public_node(client: Client, coin_name, xpub_magic, path, xpub):
assert bip32.serialize(res.node, xpub_magic) == xpub
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("coin_name, xpub_magic, path, xpub", VECTORS_BITCOIN)
def test_get_public_node_show(client: Client, coin_name, xpub_magic, path, xpub):
with client:

@ -16,7 +16,7 @@
import pytest
from trezorlib import btc, messages
from trezorlib import btc, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import parse_path
@ -238,7 +238,7 @@ def test_missing_pubkey(client: Client):
with pytest.raises(TrezorFailure) as exc:
btc.sign_tx(client, "Bitcoin", [inp1], [out1], prev_txes=TX_API)
if client.features.model == "1":
if client.model is models.T1B1:
assert exc.value.message.endswith("Failed to derive scriptPubKey")
else:
assert exc.value.message.endswith("Pubkey not found in multisig script")

@ -18,7 +18,7 @@ from typing import Any
import pytest
from trezorlib import btc, messages
from trezorlib import btc, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.debuglink import message_filters
from trezorlib.exceptions import Cancelled
@ -33,16 +33,16 @@ def case(
id: str,
*args: Any,
altcoin: bool = False,
skip_t1: bool = False,
skip_tr: bool = False
skip_t1b1: bool = False,
skip_t2b1: bool = False
):
marks = []
if altcoin:
marks.append(pytest.mark.altcoin)
if skip_t1:
marks.append(pytest.mark.skip_t1)
if skip_tr:
marks.append(pytest.mark.skip_tr)
if skip_t1b1:
marks.append(pytest.mark.skip_t1b1)
if skip_t2b1:
marks.append(pytest.mark.skip_t2b1)
return pytest.param(*args, id=id, marks=marks)
@ -174,7 +174,7 @@ VECTORS = ( # case name, coin_name, path, script_type, address, message, signat
"1FoHjQT6bAEu2FQGzTgqj4PBneoiCAk4ZN",
b"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"1f40ae58dd68480a2f39eecf4decfe79ceacde3f865502db67c083b8465b33535c0750d5377b7ac62e534f71c922cd029f659761f8ac99e859df36322c5b320eff",
skip_t1=True,
skip_t1b1=True,
),
# ==== Testnet script types ====
case(
@ -262,7 +262,7 @@ VECTORS = ( # case name, coin_name, path, script_type, address, message, signat
"This is an example of a signed message.",
"206b1f8ba47ef9eaf87aa900e41ab1e97f67e8c09292faa4acf825228d074c4b774484046dcb1d9bbf0603045dbfb328c3e1b0c09c5ae133e89e604a67a1fc6cca",
altcoin=True,
skip_tr=True,
skip_t2b1=True,
),
case(
"decred-empty",
@ -274,7 +274,7 @@ VECTORS = ( # case name, coin_name, path, script_type, address, message, signat
"",
"1fd2d57490b44a0361c7809768cad032d41ba1d4b7a297f935fc65ae05f71de7ea0c6c6fd265cc5154f1fa4acd7006b6a00ddd67fb7333c1594aff9120b3ba8024",
altcoin=True,
skip_tr=True,
skip_t2b1=True,
),
)
@ -304,8 +304,8 @@ def test_signmessage(
assert sig.signature.hex() == signature
@pytest.mark.skip_t1
@pytest.mark.skip_tr
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1
@pytest.mark.parametrize(
"coin_name, path, script_type, no_script_type, address, message, signature", VECTORS
)
@ -348,7 +348,7 @@ MESSAGE_LENGTHS = (
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("message", MESSAGE_LENGTHS)
def test_signmessage_pagination(client: Client, message: str):
with client:
@ -362,15 +362,15 @@ def test_signmessage_pagination(client: Client, message: str):
)
# We cannot differentiate between a newline and space in the message read from Trezor.
# TODO: do the check also for model R
# TODO: do the check also for T2B1
if client.model in (models.T2T1, models.T3T1):
message_read = IF.message_read.replace(" ", "").replace("...", "")
signed_message = message.replace("\n", "").replace(" ", "")
assert signed_message in message_read
@pytest.mark.skip_t1
@pytest.mark.skip_tr(reason="Different screen size")
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1(reason="Different screen size")
def test_signmessage_pagination_trailing_newline(client: Client):
message = "THIS\nMUST\nNOT\nBE\nPAGINATED\n"
# The trailing newline must not cause a new paginated screen to appear.

@ -641,7 +641,7 @@ def test_fee_high_warning(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_fee_high_hardfail(client: Client):
# input tx: 25fee583181847cbe9d9fd9a483a8b8626c99854a72d01de848ef40508d0f3bc
# (The "25fee" tx hash is very suitable for testing high fees)
@ -1445,7 +1445,7 @@ def test_lock_time(client: Client, lock_time: int, sequence: int):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
def test_lock_time_blockheight(client: Client):
# input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5
@ -1477,7 +1477,7 @@ def test_lock_time_blockheight(client: Client):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
@pytest.mark.parametrize(
"lock_time_str", ("1985-11-05 00:53:20", "2048-08-16 22:14:00")
)
@ -1516,7 +1516,7 @@ def test_lock_time_datetime(client: Client, lock_time_str: str):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
def test_information(client: Client):
# input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5
@ -1547,7 +1547,7 @@ def test_information(client: Client):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
def test_information_mixed(client: Client):
inp1 = messages.TxInputType(
address_n=parse_path("m/44h/1h/0h/0/0"), # mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q
@ -1582,7 +1582,7 @@ def test_information_mixed(client: Client):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
def test_information_cancel(client: Client):
# input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5
@ -1613,7 +1613,7 @@ def test_information_cancel(client: Client):
)
@pytest.mark.skip_t1(reason="Cannot test layouts on T1")
@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1")
def test_information_replacement(client: Client):
# Use the change output and an external output to bump the fee.
# Originally fee was 3780, now 108060 (94280 from change and 10000 from external).

@ -16,7 +16,7 @@
import pytest
from trezorlib import btc, device, messages
from trezorlib import btc, device, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.messages import SafetyCheckLevel
@ -81,7 +81,7 @@ TXHASH_1010b2 = bytes.fromhex(
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2pkh_presigned(client: Client):
inp1 = messages.TxInputType(
# mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q
@ -178,7 +178,7 @@ def test_p2pkh_presigned(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2wpkh_in_p2sh_presigned(client: Client):
inp1 = messages.TxInputType(
# 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX
@ -301,7 +301,7 @@ def test_p2wpkh_in_p2sh_presigned(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2wpkh_presigned(client: Client):
inp1 = messages.TxInputType(
# tb1qkvwu9g3k2pdxewfqr7syz89r3gj557l3uuf9r9
@ -366,7 +366,7 @@ def test_p2wpkh_presigned(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2wsh_external_presigned(client: Client):
inp1 = messages.TxInputType(
address_n=parse_path("m/84h/1h/0h/0/0"),
@ -474,7 +474,7 @@ def test_p2wsh_external_presigned(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2tr_external_presigned(client: Client):
inp1 = messages.TxInputType(
# tb1p8tvmvsvhsee73rhym86wt435qrqm92psfsyhy6a3n5gw455znnpqm8wald
@ -566,13 +566,13 @@ def test_p2tr_external_presigned(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2pkh_with_proof(client: Client):
# TODO
pass
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_p2wpkh_in_p2sh_with_proof(client: Client):
# TODO
pass
@ -611,7 +611,7 @@ def test_p2wpkh_with_proof(client: Client):
)
with client:
is_t1 = client.features.model == "1"
is_t1 = client.model is models.T1B1
client.set_expected_responses(
[
request_input(0),
@ -704,7 +704,7 @@ def test_p2tr_with_proof(client: Client):
)
with client:
is_t1 = client.features.model == "1"
is_t1 = client.model is models.T1B1
client.set_expected_responses(
[
request_input(0),

@ -18,7 +18,7 @@ from collections import namedtuple
import pytest
from trezorlib import btc, messages, misc
from trezorlib import btc, messages, misc, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import parse_path
@ -33,15 +33,15 @@ PREV_HASH, PREV_TX = forge_prevtx([(INPUT_ADDRESS, 12_300_000)], network="testne
PREV_TXES = {PREV_HASH: PREV_TX}
pytestmark = [pytest.mark.skip_t1, pytest.mark.experimental]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.experimental]
def case(id, *args, altcoin: bool = False, skip_tr: bool = False):
def case(id, *args, altcoin: bool = False, skip_t2b1: bool = False):
marks = []
if altcoin:
marks.append(pytest.mark.altcoin)
if skip_tr:
marks.append(pytest.mark.skip_tr)
if skip_t2b1:
marks.append(pytest.mark.skip_t2b1)
return pytest.param(*args, id=id, marks=marks)
@ -114,13 +114,13 @@ SERIALIZED_TX = "01000000000101e29305e85821ea86f2bca1fcfe45e7cb0c8de87b612479ee6
"out0",
(PaymentRequestParams([0], memos1, get_nonce=True),),
altcoin=True,
skip_tr=True,
skip_t2b1=True,
),
case(
"out1",
(PaymentRequestParams([1], memos2, get_nonce=True),),
altcoin=True,
skip_tr=True,
skip_t2b1=True,
),
case("out2", (PaymentRequestParams([2], [], get_nonce=True),)),
case(
@ -184,8 +184,8 @@ def test_payment_request(client: Client, payment_request_params):
def test_payment_request_details(client: Client):
if client.features.model == "Safe 3":
pytest.skip("Details not implemented on TR")
if client.model is models.T2B1:
pytest.skip("Details not implemented on T2B1")
# Test that payment request details are shown when requested.
outputs[0].payment_req_index = 0
@ -275,7 +275,7 @@ def test_payment_req_wrong_mac_refund(client: Client):
@pytest.mark.altcoin
@pytest.mark.skip_tr
@pytest.mark.skip_t2b1
def test_payment_req_wrong_mac_purchase(client: Client):
# Test wrong MAC in payment request memo.
memo = CoinPurchaseMemo(

@ -4,7 +4,7 @@ from io import BytesIO
import pytest
from trezorlib import btc, messages, tools
from trezorlib import btc, messages, models, tools
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
@ -62,9 +62,9 @@ def hash_tx(data: bytes) -> bytes:
return sha256(sha256(data).digest()).digest()[::-1]
def _check_error_message(value: bytes, model: str, message: str):
def _check_error_message(value: bytes, model: models.TrezorModel, message: str):
# T1 has several possible errors
if model == "1" and len(value) > 32:
if model is models.T1B1 and len(value) > 32:
assert message.endswith("bytes overflow")
else:
assert message.endswith("Provided prev_hash is invalid.")
@ -92,7 +92,7 @@ def test_invalid_prev_hash(client: Client, prev_hash):
with pytest.raises(TrezorFailure) as e:
btc.sign_tx(client, "Testnet", [inp1], [out1], prev_txes={})
_check_error_message(prev_hash, client.features.model, e.value.message)
_check_error_message(prev_hash, client.model, e.value.message)
@with_bad_prevhashes
@ -134,7 +134,7 @@ def test_invalid_prev_hash_attack(client: Client, prev_hash):
# check that injection was performed
assert counter == 0
_check_error_message(prev_hash, client.features.model, e.value.message)
_check_error_message(prev_hash, client.model, e.value.message)
@with_bad_prevhashes
@ -165,4 +165,4 @@ def test_invalid_prev_hash_in_prevtx(client: Client, prev_hash):
with pytest.raises(TrezorFailure) as e:
btc.sign_tx(client, "Bitcoin", [inp0], [out1], prev_txes={tx_hash: prev_tx})
_check_error_message(prev_hash, client.features.model, e.value.message)
_check_error_message(prev_hash, client.model, e.value.message)

@ -354,7 +354,7 @@ def test_p2wpkh_finalize(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize(
"out1_amount, out2_amount, copayer_witness, fee_confirm, expected_tx",
(
@ -648,7 +648,7 @@ def test_p2wpkh_in_p2sh_fee_bump_from_external(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_tx_meld(client: Client):
# Meld two original transactions into one, joining the change-outputs into a different one.
@ -869,7 +869,7 @@ def test_attack_steal_change(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_attack_false_internal(client: Client):
# Falsely claim that an external input is internal in the original transaction.
# If this were possible, it would allow an attacker to make it look like the
@ -976,7 +976,7 @@ def test_attack_fake_int_input_amount(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_attack_fake_ext_input_amount(client: Client):
# Give a fake input amount for an original external input while giving the correct
# amount for the replacement input. If an attacker could decrease the amount of an

@ -16,7 +16,7 @@
import pytest
from trezorlib import btc, messages
from trezorlib import btc, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import H_, parse_path
@ -417,7 +417,7 @@ def test_attack_mixed_inputs(client: Client):
request_finished(),
]
if client.features.model == "1":
if client.model is models.T1B1:
# T1 asks for first input for witness again
expected_responses.insert(-2, request_input(0))
@ -436,7 +436,7 @@ def test_attack_mixed_inputs(client: Client):
# In Phase 1 make the user confirm a lower value of the segwit input.
inp2.amount = FAKE_AMOUNT
if client.features.model == "1":
if client.model is models.T1B1:
# T1 fails as soon as it encounters the fake amount.
expected_responses = (
expected_responses[:4] + expected_responses[5:15] + [messages.Failure()]

@ -16,7 +16,7 @@
import pytest
from trezorlib import btc, messages
from trezorlib import btc, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import H_, parse_path
@ -293,7 +293,7 @@ def test_send_mixed(client: Client):
request_input(0),
request_input(1),
request_input(2),
(client.features.model == "1", request_input(3)),
(client.model is models.T1B1, request_input(3)),
request_finished(),
]
)

@ -228,7 +228,7 @@ def test_spend_old_versions(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_external_presigned(client: Client):
inp1 = messages.TxInputType(
# tmQoJ3PTXgQLaRRZZYT6xk8XtjRbr2kCqwu

@ -32,7 +32,7 @@ from ...input_flows import InputFlowShowXpubQRCode
pytestmark = [
pytest.mark.altcoin,
pytest.mark.cardano,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -27,7 +27,7 @@ from ...common import MNEMONIC_SLIP39_BASIC_20_3of6
pytestmark = [
pytest.mark.altcoin,
pytest.mark.cardano,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]
ADDRESS_N = parse_path("m/1852h/1815h/0h")

@ -25,7 +25,7 @@ from ...common import parametrize_using_common_fixtures
pytestmark = [
pytest.mark.altcoin,
pytest.mark.cardano,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -25,14 +25,14 @@ from ...common import parametrize_using_common_fixtures
pytestmark = [
pytest.mark.altcoin,
pytest.mark.cardano,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]
def show_details_input_flow(client: Client):
yield
client.debug.wait_layout()
# Clicking for model T, pressing right for model R
# Touch screen click vs pressing right for T2B1
if client.model in (models.T2T1, models.T3T1):
SHOW_ALL_BUTTON_POSITION = (143, 167)
client.debug.click(SHOW_ALL_BUTTON_POSITION)

@ -26,8 +26,8 @@ from ...input_flows import InputFlowShowXpubQRCode
@pytest.mark.altcoin
@pytest.mark.eos
@pytest.mark.skip_t1
@pytest.mark.skip_tr # coin not supported
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1 # coin not supported
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(mnemonic=MNEMONIC12)
def test_eos_get_public_key(client: Client):

@ -29,8 +29,8 @@ ADDRESS_N = parse_path("m/44h/194h/0h/0/0")
pytestmark = [
pytest.mark.altcoin,
pytest.mark.eos,
pytest.mark.skip_t1,
pytest.mark.skip_tr, # coin not supported
pytest.mark.skip_t1b1,
pytest.mark.skip_t2b1, # coin not supported
pytest.mark.skip_t3t1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -197,10 +197,10 @@ MethodType = Callable[[Client, int, "bytes | None"], None]
METHODS = (
_call_getaddress,
_call_signmessage,
pytest.param(_call_sign_typed_data, marks=pytest.mark.skip_t1),
pytest.param(_call_sign_typed_data, marks=pytest.mark.skip_t1b1),
pytest.param(
_call_sign_typed_data_hash,
marks=[pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1],
marks=[pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1],
),
)

@ -34,7 +34,7 @@ def test_getaddress(client: Client, parameters, result):
)
@pytest.mark.skip_t1("No input flow for T1")
@pytest.mark.skip_t1b1("No input flow for T1")
@parametrize_using_common_fixtures("ethereum/getaddress.json")
def test_getaddress_chunkify_details(client: Client, parameters, result):
with client:

@ -44,8 +44,8 @@ def test_slip25_disallowed(client: Client):
ethereum.get_public_node(client, path)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_legacy_restrictions(client: Client):
path = parse_path("m/46'")

@ -26,7 +26,7 @@ from ...input_flows import InputFlowEIP712Cancel, InputFlowEIP712ShowMore
pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum]
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@parametrize_using_common_fixtures("ethereum/sign_typed_data.json")
def test_ethereum_sign_typed_data(client: Client, parameters, result):
with client:
@ -41,8 +41,8 @@ def test_ethereum_sign_typed_data(client: Client, parameters, result):
assert f"0x{ret.signature.hex()}" == result["sig"]
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
@parametrize_using_common_fixtures("ethereum/sign_typed_data.json")
def test_ethereum_sign_typed_data_blind(client: Client, parameters, result):
@ -97,7 +97,7 @@ DATA = {
}
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_ethereum_sign_typed_data_show_more_button(client: Client):
with client:
client.watch_layout()
@ -111,7 +111,7 @@ def test_ethereum_sign_typed_data_show_more_button(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_ethereum_sign_typed_data_cancel(client: Client):
with client, pytest.raises(exceptions.Cancelled):
client.watch_layout()

@ -113,7 +113,7 @@ example_input_data = {
}
@pytest.mark.skip_t1("T1 does not support input flows")
@pytest.mark.skip_t1b1("T1 does not support input flows")
def test_signtx_fee_info(client: Client):
input_flow = InputFlowEthereumSignTxShowFeeInfo(client).get()
_do_test_signtx(
@ -124,7 +124,7 @@ def test_signtx_fee_info(client: Client):
)
@pytest.mark.skip_t1("T1 does not support input flows")
@pytest.mark.skip_t1b1("T1 does not support input flows")
def test_signtx_go_back_from_summary(client: Client):
input_flow = InputFlowEthereumSignTxGoBackFromSummary(client).get()
_do_test_signtx(
@ -430,7 +430,7 @@ HEXDATA = "0123456789abcd000023456789abcd010003456789abcd020000456789abcd0300000
@pytest.mark.parametrize(
"flow", (input_flow_data_skip, input_flow_data_scroll_down, input_flow_data_go_back)
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_signtx_data_pagination(client: Client, flow):
def _sign_tx_call():
ethereum.sign_tx(
@ -457,7 +457,7 @@ def test_signtx_data_pagination(client: Client, flow):
_sign_tx_call()
@pytest.mark.skip_t1("T1 does not support Everstake")
@pytest.mark.skip_t1b1("T1 does not support Everstake")
@parametrize_using_common_fixtures("ethereum/sign_tx_staking.json")
@pytest.mark.parametrize("chunkify", (True, False))
def test_signtx_staking(client: Client, chunkify: bool, parameters: dict, result: dict):
@ -467,7 +467,7 @@ def test_signtx_staking(client: Client, chunkify: bool, parameters: dict, result
)
@pytest.mark.skip_t1("T1 does not support Everstake")
@pytest.mark.skip_t1b1("T1 does not support Everstake")
@parametrize_using_common_fixtures("ethereum/sign_tx_staking_data_error.json")
def test_signtx_staking_bad_inputs(client: Client, parameters: dict, result: dict):
# result not needed
@ -488,7 +488,7 @@ def test_signtx_staking_bad_inputs(client: Client, parameters: dict, result: dic
)
@pytest.mark.skip_t1("T1 does not support Everstake")
@pytest.mark.skip_t1b1("T1 does not support Everstake")
@parametrize_using_common_fixtures("ethereum/sign_tx_staking_eip1559.json")
def test_signtx_staking_eip1559(client: Client, parameters: dict, result: dict):
with client:

@ -109,7 +109,7 @@ def test_cosi_sign3(client: Client):
cosi.verify_combined(signature, DIGEST, global_pk)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_cosi_different_key(client: Client):
with pytest.raises(TrezorFailure):
commit = cosi.commit(client, parse_path("m/10018h/0h"))
@ -135,7 +135,7 @@ def test_cosi_different_key(client: Client):
(b"T2B1", 3),
),
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_slip26_paths(client: Client, model: bytes, image_type: int):
slip26_model = int.from_bytes(model, "little")
path = Address([H_(10026), H_(slip26_model), H_(image_type), H_(0)])

@ -41,7 +41,7 @@ TEST_VECTORS = [
pytestmark = [
pytest.mark.altcoin,
pytest.mark.monero,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -25,7 +25,7 @@ from ...common import MNEMONIC12
@pytest.mark.altcoin
@pytest.mark.monero
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(mnemonic=MNEMONIC12)
def test_monero_getwatchkey(client: Client):
res = monero.get_watch_key(client, parse_path("m/44h/128h/0h"))

@ -25,7 +25,7 @@ from ...common import MNEMONIC12
@pytest.mark.altcoin
@pytest.mark.nem
@pytest.mark.skip_tr # coin not supported,
@pytest.mark.skip_t2b1 # coin not supported,
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(mnemonic=MNEMONIC12)
@pytest.mark.parametrize("chunkify", (True, False))

@ -27,7 +27,7 @@ ADDRESS_N = parse_path("m/44h/1h/0h/0h/0h")
pytestmark = [
pytest.mark.altcoin,
pytest.mark.nem,
pytest.mark.skip_tr, # coin not supported,
pytest.mark.skip_t2b1, # coin not supported,
pytest.mark.skip_t3t1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -25,7 +25,7 @@ from ...common import MNEMONIC12
pytestmark = [
pytest.mark.altcoin,
pytest.mark.nem,
pytest.mark.skip_tr, # coin not supported,
pytest.mark.skip_t2b1, # coin not supported,
pytest.mark.skip_t3t1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -25,7 +25,7 @@ from ...common import MNEMONIC12
pytestmark = [
pytest.mark.altcoin,
pytest.mark.nem,
pytest.mark.skip_tr, # coin not supported,
pytest.mark.skip_t2b1, # coin not supported,
pytest.mark.skip_t3t1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -25,7 +25,7 @@ from ...common import MNEMONIC12, is_core
pytestmark = [
pytest.mark.altcoin,
pytest.mark.nem,
pytest.mark.skip_tr, # coin not supported,
pytest.mark.skip_t2b1, # coin not supported,
pytest.mark.skip_t3t1,
pytest.mark.setup_client(mnemonic=MNEMONIC12),
]

@ -18,7 +18,7 @@ from typing import Any
import pytest
from trezorlib import device, exceptions, messages
from trezorlib import device, exceptions, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from ...common import MNEMONIC12
@ -60,7 +60,7 @@ def do_recover_core(client: Client, mnemonic: list[str], mismatch: bool = False)
def do_recover(client: Client, mnemonic: list[str], mismatch: bool = False):
if client.features.model == "1":
if client.model is models.T1B1:
return do_recover_legacy(client, mnemonic)
else:
return do_recover_core(client, mnemonic, mismatch)
@ -80,15 +80,15 @@ def test_seed_mismatch(client: Client):
do_recover(client, ["all"] * 12, mismatch=True)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_invalid_seed_t1(client: Client):
with pytest.raises(exceptions.TrezorFailure, match="Invalid seed"):
do_recover(client, ["stick"] * 12)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_invalid_seed_core(client: Client):
with client:
client.watch_layout()

@ -25,7 +25,7 @@ from ...common import MNEMONIC12
PIN4 = "1234"
PIN6 = "789456"
pytestmark = [pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
@pytest.mark.setup_client(uninitialized=True)

@ -22,7 +22,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client
from ...common import MNEMONIC12
from ...input_flows import InputFlowBip39Recovery
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
@pytest.mark.setup_client(uninitialized=True)

@ -28,7 +28,7 @@ from ...input_flows import (
InputFlowSlip39AdvancedRecoveryThresholdReached,
)
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
EXTRA_GROUP_SHARE = [
"eraser senior decision smug corner ruin rescue cubic angel tackle skin skunk program roster trash rumor slush angel flea amazing"

@ -23,7 +23,7 @@ from trezorlib.exceptions import TrezorFailure
from ...common import MNEMONIC_SLIP39_ADVANCED_20
from ...input_flows import InputFlowSlip39AdvancedRecoveryDryRun
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
INVALID_SHARES_SLIP39_ADVANCED_20 = [
"chest garlic acrobat leaf diploma thank soul predator grant laundry camera license language likely slim twice amount rich total carve",

@ -33,7 +33,7 @@ from ...input_flows import (
InputFlowSlip39BasicRecoveryWrongNthWord,
)
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
MNEMONIC_SLIP39_BASIC_20_1of1 = [
"academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic rebuild aquatic spew"

@ -22,7 +22,7 @@ from trezorlib.exceptions import TrezorFailure
from ...input_flows import InputFlowSlip39BasicRecoveryDryRun
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
SHARES_20_2of3 = [
"crush merchant academic acid dream decision orbit smug trend trust painting slice glad crunch veteran lunch friar satoshi engage aquatic",

@ -71,7 +71,7 @@ VECTORS = [
]
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("backup_type, backup_flow", VECTORS)
@pytest.mark.setup_client(uninitialized=True)
def test_skip_backup_msg(client: Client, backup_type, backup_flow):
@ -104,7 +104,7 @@ def test_skip_backup_msg(client: Client, backup_type, backup_flow):
assert state.mnemonic_secret == secret
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.parametrize("backup_type, backup_flow", VECTORS)
@pytest.mark.setup_client(uninitialized=True)
def test_skip_backup_manual(client: Client, backup_type: BackupType, backup_flow):

@ -22,7 +22,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client
from ...common import EXTERNAL_ENTROPY, generate_entropy
pytestmark = [pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
STRENGTH = 128

@ -23,7 +23,7 @@ from trezorlib.tools import parse_path
from ...common import EXTERNAL_ENTROPY, generate_entropy
pytestmark = [pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
def reset_device(client: Client, strength: int):

@ -17,7 +17,7 @@
import pytest
from mnemonic import Mnemonic
from trezorlib import device, messages
from trezorlib import device, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
@ -28,7 +28,7 @@ from ...input_flows import (
InputFlowBip39ResetPIN,
)
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
def reset_device(client: Client, strength: int):
@ -164,7 +164,7 @@ def test_failed_pin(client: Client):
ret = client.call_raw(messages.ButtonAck())
# Re-enter PIN for TR
if client.debug.model == "Safe 3":
if client.model is models.T2B1:
assert isinstance(ret, messages.ButtonRequest)
client.debug.press_yes()
ret = client.call_raw(messages.ButtonAck())

@ -25,7 +25,7 @@ from ...common import WITH_MOCK_URANDOM
from ...input_flows import InputFlowBip39Recovery, InputFlowBip39ResetBackup
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(uninitialized=True)
def test_reset_recovery(client: Client):
mnemonic = reset(client)

@ -28,7 +28,7 @@ from ...input_flows import (
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(uninitialized=True)
def test_reset_recovery(client: Client):
mnemonics = reset(client)

@ -30,7 +30,7 @@ from ...input_flows import (
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(uninitialized=True)
@WITH_MOCK_URANDOM
def test_reset_recovery(client: Client):

@ -25,7 +25,7 @@ from trezorlib.messages import BackupType
from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy
from ...input_flows import InputFlowSlip39AdvancedResetRecovery
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
# TODO: test with different options

@ -27,7 +27,7 @@ from trezorlib.messages import BackupType
from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy
from ...input_flows import InputFlowSlip39BasicResetRecovery
pytestmark = [pytest.mark.skip_t1]
pytestmark = [pytest.mark.skip_t1b1]
def reset_device(client: Client, strength: int):

@ -31,7 +31,7 @@ CUSTOM_MNEMONIC = (
pytestmark = [
pytest.mark.altcoin,
pytest.mark.ripple,
pytest.mark.skip_t1, # T1 support is not planned
pytest.mark.skip_t1b1, # T1 support is not planned
]
# data from https://iancoleman.io/bip39/

@ -24,7 +24,7 @@ from trezorlib.tools import parse_path
pytestmark = [
pytest.mark.altcoin,
pytest.mark.ripple,
pytest.mark.skip_t1, # T1 support is not planned
pytest.mark.skip_t1b1, # T1 support is not planned
]

@ -25,7 +25,7 @@ from ...common import parametrize_using_common_fixtures
pytestmark = [
pytest.mark.altcoin,
pytest.mark.solana,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -25,7 +25,7 @@ from ...common import parametrize_using_common_fixtures
pytestmark = [
pytest.mark.altcoin,
pytest.mark.solana,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -28,7 +28,7 @@ from .construct.transaction import Message, RawInstruction
pytestmark = [
pytest.mark.altcoin,
pytest.mark.solana,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -119,7 +119,7 @@ def test_get_address(client: Client, parameters, result):
assert address == result["address"]
@pytest.mark.skip_t1("No input flow for T1")
@pytest.mark.skip_t1b1("No input flow for T1")
@parametrize_using_common_fixtures("stellar/get_address.json")
def test_get_address_chunkify_details(client: Client, parameters, result):
with client:

@ -9,7 +9,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client
from ..common import compact_size
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_t2]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1]
ROOT_PUBLIC_KEY = bytes.fromhex(
"047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a"

@ -18,7 +18,7 @@ import time
import pytest
from trezorlib import device, messages
from trezorlib import device, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
@ -32,7 +32,7 @@ pytestmark = pytest.mark.setup_client(pin=PIN4)
def pin_request(client: Client):
return (
messages.PinMatrixRequest
if client.features.model == "1"
if client.model is models.T1B1
else messages.ButtonRequest
)
@ -111,7 +111,7 @@ def test_apply_auto_lock_delay_out_of_range(client: Client, seconds):
device.apply_settings(client, auto_lock_delay_ms=delay)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_autolock_cancels_ui(client: Client):
set_autolock_delay(client, 10 * 1000)

@ -24,8 +24,8 @@ from trezorlib.messages import SafetyCheckLevel
from trezorlib.tools import H_
pytestmark = [
pytest.mark.skip_t2,
pytest.mark.skip_tr,
pytest.mark.skip_t2t1,
pytest.mark.skip_t2b1,
pytest.mark.skip_t3t1,
pytest.mark.flaky(max_runs=5),
]

@ -18,7 +18,7 @@ import time
import pytest
from trezorlib import btc, device
from trezorlib import btc, device, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import parse_path

@ -17,6 +17,7 @@
import pytest
import trezorlib.messages as m
from trezorlib import models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import Cancelled
@ -70,7 +71,7 @@ def test_cancel_message_via_initialize(client: Client, message):
assert isinstance(resp, m.Features)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_cancel_on_paginated(client: Client):
"""Check that device is responsive on paginated screen. See #1708."""
# In #1708, the device would ignore USB (or UDP) events while waiting for the user
@ -91,9 +92,9 @@ def test_cancel_on_paginated(client: Client):
resp = client._raw_read()
assert isinstance(resp, m.ButtonRequest)
# In TR, confirm message is no longer paginated by default,
# In T2B1, confirm message is no longer paginated by default,
# user needs to click info button
if client.debug.model == "Safe 3":
if client.model is models.T2B1:
client._raw_write(m.ButtonAck())
client.debug.press_right()
resp = client._raw_read()

@ -24,16 +24,16 @@ from trezorlib.transport import udp
from ..common import MNEMONIC12
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_layout(client: Client):
layout = client.debug.state().layout
assert len(layout) == 1024
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(mnemonic=MNEMONIC12)
def test_mnemonic(client: Client):
@ -42,8 +42,8 @@ def test_mnemonic(client: Client):
assert mnemonic == MNEMONIC12.encode()
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(mnemonic=MNEMONIC12, pin="1234", passphrase="")
def test_pin(client: Client):
@ -62,7 +62,7 @@ def test_pin(client: Client):
assert isinstance(resp, messages.Address)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_softlock_instability(client: Client):
def load_device():
debuglink.load_device(

@ -24,7 +24,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client
from ..translations import LANGUAGES, build_and_sign_blob, get_lang_json, set_language
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
MAX_DATA_LENGTH = {

@ -18,7 +18,7 @@ from pathlib import Path
import pytest
from trezorlib import btc, device, exceptions, messages, misc
from trezorlib import btc, device, exceptions, messages, misc, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import parse_path
@ -50,7 +50,7 @@ TR_HOMESCREEN = b"TOIG\x80\x00@\x00\x0c\x04\x00\x00\xa5RY\x96\xdc0\x08\xe4\x06\x
def _set_expected_responses(client: Client):
client.use_pin_sequence([PIN4])
if client.features.model == "1":
if client.model is models.T1B1:
client.set_expected_responses(EXPECTED_RESPONSES_PIN_T1)
else:
client.set_expected_responses(EXPECTED_RESPONSES_PIN_TT)
@ -66,7 +66,7 @@ def test_apply_settings(client: Client):
assert client.features.label == "new label"
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_apply_settings_rotation(client: Client):
assert client.features.display_rotation is None
@ -99,7 +99,7 @@ def test_apply_settings_passphrase(client: Client):
@pytest.mark.setup_client(passphrase=False)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_apply_settings_passphrase_on_device(client: Client):
# enable passphrase
with client:
@ -133,8 +133,8 @@ def test_apply_settings_passphrase_on_device(client: Client):
assert client.features.passphrase_always_on_device is False
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
def test_apply_homescreen_tr_toif_good(client: Client):
with client:
@ -146,8 +146,8 @@ def test_apply_homescreen_tr_toif_good(client: Client):
device.apply_settings(client, homescreen=b"")
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(pin=None) # so that "PIN NOT SET" is shown in the header
def test_apply_homescreen_tr_toif_with_notification(client: Client):
@ -156,8 +156,8 @@ def test_apply_homescreen_tr_toif_with_notification(client: Client):
device.apply_settings(client, homescreen=TR_HOMESCREEN)
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
def test_apply_homescreen_tr_toif_with_long_label(client: Client):
with client:
@ -173,8 +173,8 @@ def test_apply_homescreen_tr_toif_with_long_label(client: Client):
device.apply_settings(client, label="My even longer label")
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
def test_apply_homescreen_tr_toif_wrong_size(client: Client):
# 64x64 img
@ -184,8 +184,8 @@ def test_apply_homescreen_tr_toif_wrong_size(client: Client):
device.apply_settings(client, homescreen=img)
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
def test_apply_homescreen_tr_upload_jpeg_fail(client: Client):
with open(HERE / "test_bg.jpg", "rb") as f:
@ -195,8 +195,8 @@ def test_apply_homescreen_tr_upload_jpeg_fail(client: Client):
device.apply_settings(client, homescreen=img)
@pytest.mark.skip_t1
@pytest.mark.skip_t2
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2t1
@pytest.mark.skip_t3t1
def test_apply_homescreen_tr_upload_t1_fail(client: Client):
with pytest.raises(exceptions.TrezorFailure), client:
@ -204,8 +204,8 @@ def test_apply_homescreen_tr_upload_t1_fail(client: Client):
device.apply_settings(client, homescreen=T1_HOMESCREEN)
@pytest.mark.skip_t1
@pytest.mark.skip_tr
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1
def test_apply_homescreen_toif(client: Client):
img = b"TOIf\x90\x00\x90\x00~\x00\x00\x00\xed\xd2\xcb\r\x83@\x10D\xc1^.\xde#!\xac31\x99\x10\x8aC%\x14~\x16\x92Y9\x02WI3\x01<\xf5cI2d\x1es(\xe1[\xdbn\xba\xca\xe8s7\xa4\xd5\xd4\xb3\x13\xbdw\xf6:\xf3\xd1\xe7%\xc7]\xdd_\xb3\x9e\x9f\x9e\x9fN\xed\xaaE\xef\xdc\xcf$D\xa7\xa4X\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0OV"
@ -214,8 +214,8 @@ def test_apply_homescreen_toif(client: Client):
device.apply_settings(client, homescreen=img)
@pytest.mark.skip_t1
@pytest.mark.skip_tr
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1
def test_apply_homescreen_jpeg(client: Client):
with open(HERE / "test_bg.jpg", "rb") as f:
img = f.read()
@ -227,8 +227,8 @@ def test_apply_homescreen_jpeg(client: Client):
device.apply_settings(client, homescreen=b"")
@pytest.mark.skip_t1
@pytest.mark.skip_tr
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1
def test_apply_homescreen_jpeg_progressive(client: Client):
img = (
b"\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x01,\x01,"
@ -284,8 +284,8 @@ def test_apply_homescreen_jpeg_progressive(client: Client):
device.apply_settings(client, homescreen=img)
@pytest.mark.skip_t1
@pytest.mark.skip_tr
@pytest.mark.skip_t1b1
@pytest.mark.skip_t2b1
def test_apply_homescreen_jpeg_wrong_size(client: Client):
img = (
b"\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x01,\x01,"
@ -331,8 +331,8 @@ def test_apply_homescreen_jpeg_wrong_size(client: Client):
device.apply_settings(client, homescreen=img)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_apply_homescreen(client: Client):
with client:
@ -351,7 +351,7 @@ def test_safety_checks(client: Client):
client.set_expected_responses([messages.Failure])
get_bad_address()
if client.features.model != "1":
if client.model is not models.T1B1:
with client:
client.set_expected_responses(EXPECTED_RESPONSES_NOPIN)
device.apply_settings(
@ -391,7 +391,7 @@ def test_safety_checks(client: Client):
get_bad_address()
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_experimental_features(client: Client):
def experimental_call():
misc.get_nonce(client)

@ -18,7 +18,7 @@
import pytest
import shamir_mnemonic as shamir
from trezorlib import device, messages
from trezorlib import device, messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
@ -34,7 +34,7 @@ from ..input_flows import (
)
@pytest.mark.skip_t1 # TODO we want this for t1 too
@pytest.mark.skip_t1b1 # TODO we want this for t1 too
@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC12)
def test_backup_bip39(client: Client):
assert client.features.needs_backup is True
@ -53,14 +53,14 @@ def test_backup_bip39(client: Client):
assert client.features.backup_type is messages.BackupType.Bip39
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6)
@pytest.mark.parametrize(
"click_info", [True, False], ids=["click_info", "no_click_info"]
)
def test_backup_slip39_basic(client: Client, click_info: bool):
if click_info and client.features.model == "Safe 3":
pytest.skip("click_info not implemented on TR")
if click_info and client.model is models.T2B1:
pytest.skip("click_info not implemented on T2B1")
assert client.features.needs_backup is True
@ -81,14 +81,14 @@ def test_backup_slip39_basic(client: Client, click_info: bool):
assert expected_ms == actual_ms
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_ADVANCED_20)
@pytest.mark.parametrize(
"click_info", [True, False], ids=["click_info", "no_click_info"]
)
def test_backup_slip39_advanced(client: Client, click_info: bool):
if click_info and client.features.model == "Safe 3":
pytest.skip("click_info not implemented on TR")
if click_info and client.model is models.T2B1:
pytest.skip("click_info not implemented on T2B1")
assert client.features.needs_backup is True

@ -29,7 +29,7 @@ WIPE_CODE6 = "456789"
WIPE_CODE_MAX = "".join(chr((i % 9) + ord("1")) for i in range(MAX_PIN_LENGTH))
WIPE_CODE_TOO_LONG = WIPE_CODE_MAX + "1"
pytestmark = [pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
def _set_wipe_code(client: Client, pin, wipe_code):

@ -28,7 +28,7 @@ WIPE_CODE4 = "4321"
WIPE_CODE6 = "456789"
WIPE_CODE_MAX = "".join(chr((i % 10) + ord("0")) for i in range(MAX_PIN_LENGTH))
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
def _check_wipe_code(client: Client, pin: str, wipe_code: str):

@ -28,7 +28,7 @@ PIN6 = "789456"
PIN_MAX = "".join(chr((i % 9) + ord("1")) for i in range(MAX_PIN_LENGTH))
PIN_TOO_LONG = PIN_MAX + "1"
pytestmark = [pytest.mark.skip_t2, pytest.mark.skip_tr, pytest.mark.skip_t3t1]
pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
def _check_pin(client: Client, pin):

@ -31,7 +31,7 @@ PIN4 = "1234"
PIN60 = "789456" * 10
PIN_MAX = "".join(chr((i % 10) + ord("0")) for i in range(MAX_PIN_LENGTH))
pytestmark = pytest.mark.skip_t1
pytestmark = pytest.mark.skip_t1b1
def _check_pin(client: Client, pin: str):

@ -16,7 +16,7 @@
import pytest
from trezorlib import debuglink, device
from trezorlib import debuglink, device, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.messages import BackupType
@ -59,7 +59,7 @@ def test_load_device_2(client: Client):
state = client.debug.state()
assert state.mnemonic_secret == MNEMONIC12.encode()
if client.features.model == "1":
if client.model is models.T1B1:
# we do not send PIN in DebugLinkState in Core
assert state.pin == "1234"
assert state.passphrase_protection is True
@ -68,7 +68,7 @@ def test_load_device_2(client: Client):
assert address == "mx77VZjTVixVsU7nCtAKHnGFdsyNCnsWWw"
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_load_device_slip39_basic(client: Client):
debuglink.load_device(
client,
@ -80,7 +80,7 @@ def test_load_device_slip39_basic(client: Client):
assert client.features.backup_type == BackupType.Slip39_Basic
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_load_device_slip39_advanced(client: Client):
debuglink.load_device(
client,

@ -23,7 +23,7 @@ from trezorlib.messages import SdProtectOperationType as Op
from ..common import MNEMONIC12
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_tr, pytest.mark.sd_card]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.sd_card]
def test_enable_disable(client: Client):

@ -26,7 +26,7 @@ from ..common import (
@pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_ADVANCED_20, passphrase=True)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_128bit_passphrase(client: Client):
"""
BIP32 Root Key for passphrase TREZOR:
@ -45,7 +45,7 @@ def test_128bit_passphrase(client: Client):
@pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_ADVANCED_33, passphrase=True)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_256bit_passphrase(client: Client):
"""
BIP32 Root Key for passphrase TREZOR:

@ -22,7 +22,7 @@ from ..common import MNEMONIC_SLIP39_BASIC_20_3of6, get_test_address
@pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6, passphrase="TREZOR")
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_3of6_passphrase(client: Client):
"""
BIP32 Root Key for passphrase TREZOR:
@ -41,7 +41,7 @@ def test_3of6_passphrase(client: Client):
),
passphrase="TREZOR",
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_2of5_passphrase(client: Client):
"""
BIP32 Root Key for passphrase TREZOR:

@ -18,7 +18,7 @@ import time
import pytest
from trezorlib import messages
from trezorlib import messages, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import PinException
@ -42,7 +42,7 @@ def test_correct_pin(client: Client):
with client:
client.use_pin_sequence([PIN4])
# Expected responses differ between T1 and TT
is_t1 = client.features.model == "1"
is_t1 = client.model is models.T1B1
client.set_expected_responses(
[
(is_t1, messages.PinMatrixRequest),
@ -57,8 +57,8 @@ def test_correct_pin(client: Client):
get_test_address(client)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_incorrect_pin_t1(client: Client):
with pytest.raises(PinException):
@ -66,7 +66,7 @@ def test_incorrect_pin_t1(client: Client):
get_test_address(client)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_incorrect_pin_t2(client: Client):
with client:
# After first incorrect attempt, TT will not raise an error, but instead ask for another attempt
@ -81,8 +81,8 @@ def test_incorrect_pin_t2(client: Client):
get_test_address(client)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_exponential_backoff_t1(client: Client):
for attempt in range(3):
@ -93,7 +93,7 @@ def test_exponential_backoff_t1(client: Client):
check_pin_backoff_time(attempt, start)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_exponential_backoff_t2(client: Client):
with client:
IF = InputFlowPINBackoff(client, BAD_PIN, PIN4)

@ -16,7 +16,7 @@
import pytest
from trezorlib import btc, device, messages, misc
from trezorlib import btc, device, messages, misc, models
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import parse_path
@ -44,7 +44,7 @@ pytestmark = pytest.mark.setup_client(pin=PIN4, passphrase=True)
def _pin_request(client: Client):
"""Get appropriate PIN request for each model"""
if client.features.model == "1":
if client.model is models.T1B1:
return messages.PinMatrixRequest
else:
return messages.ButtonRequest(code=B.PinEntry)
@ -69,7 +69,7 @@ def test_initialize(client: Client):
client.init_device()
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(pin=PIN4)
@pytest.mark.parametrize("passphrase", (True, False))
def test_passphrase_reporting(client: Client, passphrase):
@ -110,8 +110,8 @@ def test_apply_settings(client: Client):
device.apply_settings(client, label="nazdar")
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_change_pin_t1(client: Client):
_assert_protection(client)
@ -130,7 +130,7 @@ def test_change_pin_t1(client: Client):
device.change_pin(client)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_change_pin_t2(client: Client):
_assert_protection(client)
with client:
@ -141,7 +141,7 @@ def test_change_pin_t2(client: Client):
messages.ButtonRequest,
_pin_request(client),
_pin_request(client),
(client.debug.model == "Safe 3", messages.ButtonRequest),
(client.model is models.T2B1, messages.ButtonRequest),
_pin_request(client),
messages.ButtonRequest,
messages.Success,
@ -211,8 +211,8 @@ def test_wipe_device(client: Client):
@pytest.mark.setup_client(uninitialized=True)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_reset_device(client: Client):
assert client.features.pin_protection is False
@ -241,8 +241,8 @@ def test_reset_device(client: Client):
@pytest.mark.setup_client(uninitialized=True)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_recovery_device(client: Client):
assert client.features.pin_protection is False
@ -295,8 +295,8 @@ def test_sign_message(client: Client):
)
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_verify_message_t1(client: Client):
_assert_protection(client)
@ -320,7 +320,7 @@ def test_verify_message_t1(client: Client):
)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_verify_message_t2(client: Client):
_assert_protection(client)
with client:

@ -23,7 +23,7 @@ from trezorlib.messages import SdProtectOperationType as Op
from .. import translations as TR
pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_tr]
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1]
@pytest.mark.sd_card(formatted=False)

@ -16,7 +16,7 @@
import pytest
from trezorlib import cardano, messages
from trezorlib import cardano, messages, models
from trezorlib.btc import get_public_node
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.exceptions import TrezorFailure
@ -32,7 +32,7 @@ PIN4 = "1234"
@pytest.mark.setup_client(pin=PIN4, passphrase="")
def test_clear_session(client: Client):
is_t1 = client.features.model == "1"
is_t1 = client.model is models.T1B1
init_responses = [
messages.PinMatrixRequest if is_t1 else messages.ButtonRequest,
messages.PassphraseRequest,
@ -159,7 +159,7 @@ def test_session_recycling(client: Client):
@pytest.mark.altcoin
@pytest.mark.cardano
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_derive_cardano_empty_session(client: Client):
# start new session
client.init_device(new_session=True)
@ -178,7 +178,7 @@ def test_derive_cardano_empty_session(client: Client):
@pytest.mark.altcoin
@pytest.mark.cardano
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_derive_cardano_running_session(client: Client):
# start new session
client.init_device(new_session=True)

@ -241,7 +241,7 @@ def test_session_enable_passphrase(client: Client):
assert _get_xpub(client, passphrase="A") == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_on_device(client: Client):
_init_session(client)
@ -280,7 +280,7 @@ def test_passphrase_on_device(client: Client):
assert response.xpub == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_always_on_device(client: Client):
# Let's start the communication by calling Initialize.
@ -314,8 +314,8 @@ def test_passphrase_always_on_device(client: Client):
assert response.xpub == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_t2
@pytest.mark.skip_tr
@pytest.mark.skip_t2t1
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
@pytest.mark.setup_client(passphrase="")
def test_passphrase_on_device_not_possible_on_t1(client: Client):
@ -380,7 +380,7 @@ def test_passphrase_length(client: Client):
call(passphrase="A" * 49 + "š", expected_result=False)
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.setup_client(passphrase=True)
def test_hide_passphrase_from_host(client: Client):
# Without safety checks, turning it on fails
@ -480,7 +480,7 @@ def _get_xpub_cardano(client: Client, passphrase):
return response.xpub
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.altcoin
@pytest.mark.setup_client(passphrase=True)
def test_cardano_passphrase(client: Client):

@ -25,7 +25,7 @@ from ...input_flows import InputFlowShowAddressQRCode
pytestmark = [
pytest.mark.altcoin,
pytest.mark.tezos,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]
TEST_VECTORS = [

@ -23,7 +23,7 @@ from trezorlib.tools import parse_path
@pytest.mark.altcoin
@pytest.mark.tezos
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
def test_tezos_get_public_key(client: Client):
path = parse_path("m/44h/1729h/0h")
pk = get_public_key(client, path)

@ -28,7 +28,7 @@ TEZOS_PATH_15 = parse_path("m/44h/1729h/15h")
pytestmark = [
pytest.mark.altcoin,
pytest.mark.tezos,
pytest.mark.skip_t1,
pytest.mark.skip_t1b1,
]

@ -26,7 +26,7 @@ from .data_webauthn import CRED1, CRED2, CRED3, CREDS
RK_CAPACITY = 100
@pytest.mark.skip_t1
@pytest.mark.skip_t1b1
@pytest.mark.altcoin
@pytest.mark.setup_client(mnemonic=MNEMONIC12)
def test_add_remove(client: Client):

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save