1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-08-01 11:28:20 +00:00

fix(tests): patch over confirm_blob buttonrequest problems

This commit is contained in:
matejcik 2024-11-08 11:37:09 +01:00 committed by matejcik
parent dfac2ae4dd
commit 35be52e31e
4 changed files with 27 additions and 11 deletions

View File

@ -65,20 +65,30 @@ async def with_info(
info_layout: ui.LayoutObj[Any], info_layout: ui.LayoutObj[Any],
br_name: str, br_name: str,
br_code: ButtonRequestType, br_code: ButtonRequestType,
repeat_button_request: bool = False, # TODO this should eventually always be true
) -> None: ) -> None:
send_button_request = True first_br = br_name
next_br = br_name if repeat_button_request else None
# if repeat_button_request is True:
# * `first_br` (br_name) is sent on first interaction
# * `next_br` (br_name) is sent on the info screen
# * `first_br` is updated to `next_br` (still br_name) and that is sent for every
# subsequent interaction
# if repeat_button_request is False:
# * `first_br` (br_name) is sent on first interaction
# * `next_br` (None) is sent on the info screen
# * `first_br` is cleared to None for every subsequent interaction
while True: while True:
result = await interact( result = await interact(main_layout, first_br, br_code)
main_layout, br_name if send_button_request else None, br_code
)
# raises on cancel # raises on cancel
send_button_request = False
first_br = next_br
if result is trezorui2.CONFIRMED: if result is trezorui2.CONFIRMED:
return return
elif result is trezorui2.INFO: elif result is trezorui2.INFO:
await interact(info_layout, None, raise_on_cancel=None) await interact(info_layout, next_br, br_code, raise_on_cancel=None)
continue continue
else: else:
raise RuntimeError # unexpected result raise RuntimeError # unexpected result

View File

@ -500,7 +500,9 @@ def confirm_blob_with_optional_pagination(
prompt_screen=False, prompt_screen=False,
) )
return with_info(main_layout, info_layout, br_name, br_code) return with_info(
main_layout, info_layout, br_name, br_code, repeat_button_request=True
)
def confirm_blob( def confirm_blob(

View File

@ -585,7 +585,9 @@ def confirm_blob_with_optional_pagination(
hold=False, hold=False,
chunkify=chunkify, chunkify=chunkify,
) )
return with_info(main_layout, info_layout, br_name, br_code) return with_info(
main_layout, info_layout, br_name, br_code, repeat_button_request=True
)
def confirm_blob( def confirm_blob(

View File

@ -351,7 +351,7 @@ class EthereumFlow:
self.debug = self.client.debug self.debug = self.client.debug
def confirm_data(self, info: bool = False, cancel: bool = False) -> BRGeneratorType: def confirm_data(self, info: bool = False, cancel: bool = False) -> BRGeneratorType:
yield assert (yield).name == "confirm_data"
TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data")
if info: if info:
self.debug.press_info() self.debug.press_info()
@ -362,8 +362,9 @@ class EthereumFlow:
def paginate_data(self) -> BRGeneratorType: def paginate_data(self) -> BRGeneratorType:
br = yield br = yield
TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") assert br.name == "confirm_data"
assert br.pages is not None assert br.pages is not None
TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data")
for i in range(br.pages): for i in range(br.pages):
self.debug.read_layout() self.debug.read_layout()
if i < br.pages - 1: if i < br.pages - 1:
@ -372,9 +373,10 @@ class EthereumFlow:
def paginate_data_go_back(self) -> BRGeneratorType: def paginate_data_go_back(self) -> BRGeneratorType:
br = yield br = yield
TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") assert br.name == "confirm_data"
assert br.pages is not None assert br.pages is not None
assert br.pages > 2 assert br.pages > 2
TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data")
if self.client.layout_type is LayoutType.TR: if self.client.layout_type is LayoutType.TR:
self.debug.press_right() self.debug.press_right()
self.debug.press_right() self.debug.press_right()