mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-05 15:08:25 +00:00
foreach test: fixture sets-up, runs-test, tears-down
This commit is contained in:
+43
-24
@@ -1,29 +1,34 @@
|
||||
import configparser
|
||||
import pytest
|
||||
from mock import MagicMock
|
||||
from seedsigner.hardware.microsd import MicroSD
|
||||
from seedsigner.controller import Controller
|
||||
from seedsigner.models.settings import Settings
|
||||
from seedsigner.models.settings_definition import SettingsConstants
|
||||
|
||||
|
||||
|
||||
def test_singleton_init_fails():
|
||||
@pytest.fixture()
|
||||
def reset_controller():
|
||||
print("\nEntering reset_controller fixture; setting up...")
|
||||
Controller.configure_instance(disable_hardware=True)
|
||||
print("...done setting up; yielding to run a test...")
|
||||
yield
|
||||
print("\n...back from the test; tearing down...")
|
||||
MicroSD._instance = None
|
||||
Controller._instance = None
|
||||
print("...done tearing down; leaving reset_controller fixture.")
|
||||
|
||||
|
||||
def test_singleton_init_fails(reset_controller):
|
||||
""" The Controller should not allow any code to instantiate it via Controller() """
|
||||
with pytest.raises(Exception):
|
||||
c = Controller()
|
||||
|
||||
|
||||
def test_singleton_get_instance_preserves_state():
|
||||
def test_singleton_get_instance_preserves_state(reset_controller):
|
||||
""" Changes to the Controller singleton should be preserved across calls to get_instance() """
|
||||
|
||||
# Must reset Singleton instances; pytest cannot properly isolate Singletons for us
|
||||
# automatically.
|
||||
# TODO: Cleaner solution here would be nice.
|
||||
Settings._instance = None
|
||||
Controller._instance = None
|
||||
|
||||
# Initialize the instance and verify that it read the config settings
|
||||
Controller.configure_instance(disable_hardware=True)
|
||||
controller = Controller.get_instance()
|
||||
assert controller.unverified_address is None
|
||||
|
||||
@@ -35,19 +40,33 @@ def test_singleton_get_instance_preserves_state():
|
||||
assert controller.unverified_address == "123abc"
|
||||
|
||||
|
||||
def test_missing_settings_get_defaults():
|
||||
""" Should gracefully handle any missing fields from `settings.ini` """
|
||||
# TODO: This is not complete; currently only handles missing compact_seedqr_enabled.
|
||||
def test_missing_settings_get_defaults(reset_controller):
|
||||
""" Should gracefully handle all missing fields from `settings.json` """
|
||||
|
||||
# Must reset Singleton instances; pytest cannot properly isolate Singletons for us
|
||||
# automatically.
|
||||
# TODO: Cleaner solution here would be nice.
|
||||
Settings._instance = None
|
||||
Controller._instance = None
|
||||
|
||||
# Controller should parse the settings fine, even though a field is missing
|
||||
Controller.configure_instance(disable_hardware=True)
|
||||
|
||||
# Controller should still have a default value
|
||||
controller = Controller.get_instance()
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__COMPACT_SEEDQR) == SettingsConstants.OPTION__DISABLED
|
||||
|
||||
# Settings defaults
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__LANGUAGE) == SettingsConstants.LANGUAGE__ENGLISH
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__WORDLIST_LANGUAGE) == SettingsConstants.WORDLIST_LANGUAGE__ENGLISH
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__PERSISTENT_SETTINGS) == SettingsConstants.OPTION__DISABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__COORDINATORS) == [i for i,j in SettingsConstants.ALL_COORDINATORS]
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__BTC_DENOMINATION) == SettingsConstants.BTC_DENOMINATION__THRESHOLD
|
||||
|
||||
# Advanced Settings defaults
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__NETWORK) == SettingsConstants.MAINNET
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__QR_DENSITY) == SettingsConstants.DENSITY__MEDIUM
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__XPUB_EXPORT) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__SIG_TYPES) == [i for i,j in SettingsConstants.ALL_SIG_TYPES]
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__SCRIPT_TYPES) == [SettingsConstants.NATIVE_SEGWIT, SettingsConstants.NESTED_SEGWIT]
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__XPUB_DETAILS) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__PASSPHRASE) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__CAMERA_ROTATION) == SettingsConstants.CAMERA_ROTATION__0
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__COMPACT_SEEDQR) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__BIP85_CHILD_SEEDS) == SettingsConstants.OPTION__DISABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__PRIVACY_WARNINGS) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__DIRE_WARNINGS) == SettingsConstants.OPTION__ENABLED
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__PARTNER_LOGOS) == SettingsConstants.OPTION__ENABLED
|
||||
|
||||
# Hidden Settings defaults
|
||||
assert controller.settings.get_value(SettingsConstants.SETTING__QR_BRIGHTNESS) == 189
|
||||
|
||||
|
||||
Reference in New Issue
Block a user