1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-01-27 15:51:02 +00:00

refactor(python,tests): add is_invalidated flag to client, do not set the emulator.client outside from emulator

[no changelog]
This commit is contained in:
M1nd3r 2024-12-04 16:19:22 +01:00
parent 032f99aa1f
commit a0c796db96
7 changed files with 15 additions and 12 deletions

View File

@ -283,7 +283,6 @@ def cli(
assert emulator.client is not None
trezorlib.device.wipe(emulator.client.get_management_session())
emulator.client = emulator.client.get_new_client()
trezorlib.debuglink.load_device(
emulator.client.get_management_session(),

View File

@ -93,17 +93,10 @@ class Emulator:
"""
if self._client is None:
raise RuntimeError
if self._client.is_invalidated:
self._client = self._client.get_new_client()
return self._client
@client.setter
def client(self, new_client: TrezorClientDebugLink) -> None:
"""Setter for the client property to update _client."""
if not isinstance(new_client, TrezorClientDebugLink):
raise TypeError(
f"Expected a TrezorClientDebugLink, got {type(new_client).__name__}."
)
self._client = new_client
def make_args(self) -> List[str]:
return []

View File

@ -72,6 +72,7 @@ class TrezorClient:
protobuf_mapping: ProtobufMapping | None = None,
protocol: ProtocolAndChannel | None = None,
) -> None:
self._is_invalidated: bool = False
self.transport = transport
if protobuf_mapping is None:
@ -181,6 +182,9 @@ class TrezorClient:
assert self._management_session is not None
return self._management_session
def invalidate(self) -> None:
self._is_invalidated = True
@property
def features(self) -> messages.Features:
if self._features is None:
@ -214,6 +218,10 @@ class TrezorClient:
)
return ver
@property
def is_invalidated(self) -> bool:
return self._is_invalidated
def refresh_features(self) -> None:
self.protocol.update_features()
self._features = self.protocol.get_features()

View File

@ -137,6 +137,7 @@ def sd_protect(
def wipe(session: "Session") -> str | None:
ret = session.call(messages.WipeDevice(), expect=messages.Success)
session.invalidate()
# if not session.features.bootloader_mode:
# session.refresh_features()
return _return_success(ret)

View File

@ -84,6 +84,9 @@ class Session:
assert resp.message is not None
return resp.message
def invalidate(self) -> None:
self.client.invalidate()
@property
def features(self) -> messages.Features:
return self.client.features

View File

@ -21,7 +21,6 @@ def test_safety_checks_level_after_reboot(
core_emulator: Emulator, set_level: SafetyCheckLevel, after_level: SafetyCheckLevel
):
device.wipe(core_emulator.client.get_management_session())
core_emulator.client = core_emulator.client.get_new_client()
debuglink.load_device(
core_emulator.client.get_management_session(),
mnemonic=MNEMONIC12,

View File

@ -55,7 +55,7 @@ def emulator(gen: str, tag: str) -> Iterator[Emulator]:
entropy_check_count=0,
backup_type=messages.BackupType.Bip39,
)
emu.client = emu.client.get_new_client()
emu.client.invalidate()
resp = emu.client.get_management_session().call(
ApplySettingsCompat(use_passphrase=True, passphrase_source=SOURCE_HOST)
)