mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-05 15:08:25 +00:00
73 lines
3.8 KiB
Python
73 lines
3.8 KiB
Python
# Must import test base before the Controller
|
|
from base import FlowTest, FlowStep
|
|
|
|
from seedsigner.controller import Controller
|
|
from seedsigner.models.seed import Seed
|
|
from seedsigner.models.settings_definition import SettingsConstants, SettingsDefinition
|
|
from seedsigner.views.view import MainMenuView
|
|
from seedsigner.views import scan_views, seed_views, tools_views
|
|
|
|
|
|
|
|
class TestToolsFlows(FlowTest):
|
|
|
|
def test_addressexplorer_flow(self):
|
|
"""
|
|
Test the simplest AddressExplorer flow when a seed is already loaded.
|
|
"""
|
|
controller = Controller.get_instance()
|
|
seed = Seed(mnemonic=["abandon "* 11 + "about"])
|
|
controller.storage.set_pending_seed(seed)
|
|
controller.storage.finalize_pending_seed()
|
|
|
|
self.run_sequence([
|
|
FlowStep(MainMenuView, button_data_selection=MainMenuView.TOOLS),
|
|
FlowStep(tools_views.ToolsMenuView, button_data_selection=tools_views.ToolsMenuView.EXPLORER),
|
|
FlowStep(tools_views.ToolsAddressExplorerSelectSourceView, screen_return_value=0), # ret 1st onboard seed
|
|
FlowStep(seed_views.SeedExportXpubScriptTypeView, button_data_selection=SettingsDefinition.get_settings_entry(SettingsConstants.SETTING__SCRIPT_TYPES).get_selection_option_display_name_by_value(SettingsConstants.NATIVE_SEGWIT)),
|
|
FlowStep(tools_views.ToolsAddressExplorerAddressTypeView, button_data_selection=tools_views.ToolsAddressExplorerAddressTypeView.RECEIVE),
|
|
FlowStep(tools_views.ToolsAddressExplorerAddressListView, screen_return_value=10), # ret NEXT page of addrs
|
|
FlowStep(tools_views.ToolsAddressExplorerAddressListView, screen_return_value=4), # ret a specific addr from the list
|
|
FlowStep(tools_views.ToolsAddressExplorerAddressView), # runs until dismissed; no ret value
|
|
FlowStep(tools_views.ToolsAddressExplorerAddressListView),
|
|
])
|
|
|
|
|
|
def test_addressexplorer_loadseed_sideflow(self):
|
|
"""
|
|
Finalizing a seed during the Address Explorer flow should return to the next
|
|
Address Explorer step upon completion.
|
|
"""
|
|
controller = Controller.get_instance()
|
|
|
|
def load_seed_into_decoder(view: scan_views.ScanView):
|
|
view.decoder.add_data("0000" * 11 + "0003")
|
|
|
|
# Finalize the new seed w/out passphrase
|
|
self.run_sequence([
|
|
FlowStep(MainMenuView, button_data_selection=MainMenuView.TOOLS),
|
|
FlowStep(tools_views.ToolsMenuView, button_data_selection=tools_views.ToolsMenuView.EXPLORER),
|
|
FlowStep(tools_views.ToolsAddressExplorerSelectSourceView, button_data_selection=tools_views.ToolsAddressExplorerSelectSourceView.SCAN_SEED),
|
|
FlowStep(scan_views.ScanView, before_run=load_seed_into_decoder), # simulate read SeedQR
|
|
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.FINALIZE),
|
|
FlowStep(seed_views.SeedOptionsView, is_redirect=True),
|
|
FlowStep(seed_views.SeedExportXpubScriptTypeView),
|
|
])
|
|
|
|
assert controller.resume_main_flow == Controller.FLOW__ADDRESS_EXPLORER
|
|
|
|
# Reset
|
|
controller.storage.seeds.clear()
|
|
controller.storage.set_pending_seed(Seed(mnemonic=["abandon "* 11 + "about"]))
|
|
|
|
# Finalize the new seed w/passphrase
|
|
self.run_sequence(
|
|
sequence=[
|
|
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.PASSPHRASE),
|
|
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="mypassphrase"),
|
|
FlowStep(seed_views.SeedReviewPassphraseView, button_data_selection=seed_views.SeedReviewPassphraseView.DONE),
|
|
FlowStep(seed_views.SeedOptionsView, is_redirect=True),
|
|
FlowStep(seed_views.SeedExportXpubScriptTypeView),
|
|
]
|
|
)
|