mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-02 04:18:20 +00:00
test: fix test_protection_levels device test
[no changelog]
This commit is contained in:
parent
76daf9da60
commit
147c4586b4
@ -53,7 +53,7 @@ def _pin_request(session: Session):
|
|||||||
|
|
||||||
def _assert_protection(
|
def _assert_protection(
|
||||||
session: Session, pin: bool = True, passphrase: bool = True
|
session: Session, pin: bool = True, passphrase: bool = True
|
||||||
) -> None:
|
) -> Session:
|
||||||
"""Make sure PIN and passphrase protection have expected values"""
|
"""Make sure PIN and passphrase protection have expected values"""
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
@ -61,8 +61,13 @@ def _assert_protection(
|
|||||||
client.refresh_features()
|
client.refresh_features()
|
||||||
assert client.features.pin_protection is pin
|
assert client.features.pin_protection is pin
|
||||||
assert client.features.passphrase_protection is passphrase
|
assert client.features.passphrase_protection is passphrase
|
||||||
|
if session.session_version == Session.THP_V2:
|
||||||
|
new_session = session.client.get_session()
|
||||||
session.lock()
|
session.lock()
|
||||||
# TODO session.clear_session()
|
session.end()
|
||||||
|
if session.session_version == Session.CODEC_V1:
|
||||||
|
new_session = session.client.get_session()
|
||||||
|
return Session(new_session)
|
||||||
|
|
||||||
|
|
||||||
def test_initialize(session: Session):
|
def test_initialize(session: Session):
|
||||||
@ -73,7 +78,7 @@ def test_initialize(session: Session):
|
|||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
session.ensure_unlocked()
|
session.ensure_unlocked()
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session:
|
with session:
|
||||||
session.set_expected_responses([messages.Features])
|
session.set_expected_responses([messages.Features])
|
||||||
session.call(messages.Initialize(session_id=session.id))
|
session.call(messages.Initialize(session_id=session.id))
|
||||||
@ -97,7 +102,7 @@ def test_passphrase_reporting(session: Session, passphrase):
|
|||||||
assert session.features.passphrase_protection is None
|
assert session.features.passphrase_protection is None
|
||||||
|
|
||||||
# on an unlocked device, protection should be reported accurately
|
# on an unlocked device, protection should be reported accurately
|
||||||
_assert_protection(session, pin=True, passphrase=passphrase)
|
session = _assert_protection(session, pin=True, passphrase=passphrase)
|
||||||
|
|
||||||
# after re-locking, the setting should be hidden again
|
# after re-locking, the setting should be hidden again
|
||||||
session.lock()
|
session.lock()
|
||||||
@ -106,7 +111,7 @@ def test_passphrase_reporting(session: Session, passphrase):
|
|||||||
|
|
||||||
|
|
||||||
def test_apply_settings(session: Session):
|
def test_apply_settings(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
|
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
@ -123,7 +128,7 @@ def test_apply_settings(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.models("legacy")
|
@pytest.mark.models("legacy")
|
||||||
def test_change_pin_t1(session: Session):
|
def test_change_pin_t1(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4, PIN4, PIN4])
|
client.use_pin_sequence([PIN4, PIN4, PIN4])
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
@ -141,7 +146,7 @@ def test_change_pin_t1(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.models("core")
|
@pytest.mark.models("core")
|
||||||
def test_change_pin_t2(session: Session):
|
def test_change_pin_t2(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4, PIN4, PIN4, PIN4])
|
client.use_pin_sequence([PIN4, PIN4, PIN4, PIN4])
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
@ -162,14 +167,14 @@ def test_change_pin_t2(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.setup_client(pin=None, passphrase=False)
|
@pytest.mark.setup_client(pin=None, passphrase=False)
|
||||||
def test_ping(session: Session):
|
def test_ping(session: Session):
|
||||||
_assert_protection(session, pin=False, passphrase=False)
|
session = _assert_protection(session, pin=False, passphrase=False)
|
||||||
with session:
|
with session:
|
||||||
session.set_expected_responses([messages.ButtonRequest, messages.Success])
|
session.set_expected_responses([messages.ButtonRequest, messages.Success])
|
||||||
session.call(messages.Ping(message="msg", button_protection=True))
|
session.call(messages.Ping(message="msg", button_protection=True))
|
||||||
|
|
||||||
|
|
||||||
def test_get_entropy(session: Session):
|
def test_get_entropy(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
@ -183,11 +188,12 @@ def test_get_entropy(session: Session):
|
|||||||
|
|
||||||
|
|
||||||
def test_get_public_key(session: Session):
|
def test_get_public_key(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
|
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
|
|
||||||
expected_responses = [_pin_request(session)]
|
expected_responses = [_pin_request(session)]
|
||||||
|
|
||||||
if session.session_version == Session.CODEC_V1:
|
if session.session_version == Session.CODEC_V1:
|
||||||
expected_responses.append(messages.PassphraseRequest)
|
expected_responses.append(messages.PassphraseRequest)
|
||||||
expected_responses.append(messages.PublicKey)
|
expected_responses.append(messages.PublicKey)
|
||||||
@ -197,10 +203,10 @@ def test_get_public_key(session: Session):
|
|||||||
|
|
||||||
|
|
||||||
def test_get_address(session: Session):
|
def test_get_address(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
|
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
|
|
||||||
expected_responses = [_pin_request(session)]
|
expected_responses = [_pin_request(session)]
|
||||||
if session.session_version == Session.CODEC_V1:
|
if session.session_version == Session.CODEC_V1:
|
||||||
expected_responses.append(messages.PassphraseRequest)
|
expected_responses.append(messages.PassphraseRequest)
|
||||||
@ -228,7 +234,7 @@ def test_wipe_device(session: Session):
|
|||||||
# File "storage/common.py", line 21, in set
|
# File "storage/common.py", line 21, in set
|
||||||
# RuntimeError: Could not save value
|
# RuntimeError: Could not save value
|
||||||
|
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session:
|
with session:
|
||||||
session.set_expected_responses([messages.ButtonRequest, messages.Success])
|
session.set_expected_responses([messages.ButtonRequest, messages.Success])
|
||||||
device.wipe(session)
|
device.wipe(session)
|
||||||
@ -310,7 +316,8 @@ def test_recovery_device(session: Session):
|
|||||||
|
|
||||||
|
|
||||||
def test_sign_message(session: Session):
|
def test_sign_message(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
|
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
|
|
||||||
@ -336,7 +343,7 @@ def test_sign_message(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.models("legacy")
|
@pytest.mark.models("legacy")
|
||||||
def test_verify_message_t1(session: Session):
|
def test_verify_message_t1(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session:
|
with session:
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
[
|
[
|
||||||
@ -359,7 +366,7 @@ def test_verify_message_t1(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.models("core")
|
@pytest.mark.models("core")
|
||||||
def test_verify_message_t2(session: Session):
|
def test_verify_message_t2(session: Session):
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
@ -398,7 +405,7 @@ def test_signtx(session: Session):
|
|||||||
script_type=messages.OutputScriptType.PAYTOADDRESS,
|
script_type=messages.OutputScriptType.PAYTOADDRESS,
|
||||||
)
|
)
|
||||||
|
|
||||||
_assert_protection(session)
|
session = _assert_protection(session)
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
expected_responses = [_pin_request(session)]
|
expected_responses = [_pin_request(session)]
|
||||||
@ -439,7 +446,8 @@ def test_unlocked(session: Session):
|
|||||||
session.lock()
|
session.lock()
|
||||||
assert session.features.unlocked is False
|
assert session.features.unlocked is False
|
||||||
|
|
||||||
_assert_protection(session, passphrase=False)
|
session = _assert_protection(session, passphrase=False)
|
||||||
|
|
||||||
with session, session.client as client:
|
with session, session.client as client:
|
||||||
client.use_pin_sequence([PIN4])
|
client.use_pin_sequence([PIN4])
|
||||||
session.set_expected_responses([_pin_request(session), messages.Address])
|
session.set_expected_responses([_pin_request(session), messages.Address])
|
||||||
@ -454,7 +462,7 @@ def test_unlocked(session: Session):
|
|||||||
|
|
||||||
@pytest.mark.setup_client(pin=None, passphrase=True)
|
@pytest.mark.setup_client(pin=None, passphrase=True)
|
||||||
def test_passphrase_cached(session: Session):
|
def test_passphrase_cached(session: Session):
|
||||||
_assert_protection(session, pin=False)
|
session = _assert_protection(session, pin=False)
|
||||||
with session:
|
with session:
|
||||||
if session.session_version == 1:
|
if session.session_version == 1:
|
||||||
session.set_expected_responses(
|
session.set_expected_responses(
|
||||||
|
Loading…
Reference in New Issue
Block a user