def test_can_set_options_set_in_user_config(self): another_path = tempfile.mkdtemp() fake_read_user = lambda _: {"electrum_path": self.electrum_dir} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", another_path) self.assertEqual(another_path, config.get("electrum_path"))
def test_can_set_options_set_in_user_config(self): another_path = tempfile.mkdtemp() fake_read_user = lambda _: {"electrum-quark_path": self.electrum_dir} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum-quark_path", another_path) self.assertEqual(another_path, config.get("electrum-quark_path"))
def test_cannot_set_options_passed_by_command_line(self): fake_read_user = lambda _: {"electrum-quark_path": "b"} read_user_dir = lambda : self.user_dir config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum-quark_path", "c") self.assertEqual(self.options.get("electrum-quark_path"), config.get("electrum-quark_path"))
def test_cannot_set_options_passed_by_command_line(self): fake_read_user = lambda _: {"electrum_path": "b"} read_user_dir = lambda : self.user_dir config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", "c") self.assertEqual(self.options.get("electrum_path"), config.get("electrum_path"))
def test_simple_config_user_config_overrides_system_config(self): """Options passed in user config override system config.""" fake_read_system = lambda : {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {"electrum_path": "b"} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual("b", config.get("electrum_path"))
def test_simple_config_command_line_overrides_everything(self): """Options passed by command line override all other configuration sources""" fake_read_user = lambda _: {"electrum-quark_path": "b"} read_user_dir = lambda : self.user_dir config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(self.options.get("electrum-quark_path"), config.get("electrum-quark_path"))
def test_can_set_options_from_system_config(self): fake_read_system = lambda : {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", "c") self.assertEqual("c", config.get("electrum_path"))
def test_simple_config_user_config_overrides_system_config(self): """Options passed in user config override system config.""" fake_read_system = lambda: {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {"electrum_path": "b"} read_user_dir = lambda: self.user_dir config = SimpleConfig(options={}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual("b", config.get("electrum_path"))
def test_simple_config_user_config_is_used_if_others_arent_specified(self): """If no system-wide configuration and no command-line options are specified, the user configuration is used instead.""" fake_read_user = lambda _: {"electrum_path": self.electrum_dir} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(self.options.get("electrum_path"), config.get("electrum_path"))
def test_simple_config_command_line_overrides_everything(self): """Options passed by command line override all other configuration sources""" fake_read_user = lambda _: {"electrum_path": "b"} read_user_dir = lambda : self.user_dir config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(self.options.get("electrum_path"), config.get("electrum_path"))
def test_can_set_options_from_system_config(self): fake_read_system = lambda: {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {} read_user_dir = lambda: self.user_dir config = SimpleConfig(options={}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", "c") self.assertEqual("c", config.get("electrum_path"))
def test_simple_config_user_config_is_used_if_others_arent_specified(self): """If no system-wide configuration and no command-line options are specified, the user configuration is used instead.""" fake_read_user = lambda _: {"electrum-quark_path": self.electrum_dir} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={}, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(self.options.get("electrum-quark_path"), config.get("electrum-quark_path"))
def test_simple_config_system_config_overrides_user_config(self): """Options passed in system config override user config.""" fake_read_system = lambda: {"light_path": self.light_dir} fake_read_user = lambda _: {"light_path": "b"} read_user_dir = lambda: self.user_dir config = SimpleConfig(options=None, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(self.options.get("light_path"), config.get("light_path"))
def test_simple_config_system_config_ignored_if_portable(self): """If electrum is started with the "portable" flag, system configuration is completely ignored.""" fake_read_system = lambda : {"some_key": "some_value"} fake_read_user = lambda _: {} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(config.get("some_key"), None)
def test_simple_config_system_config_ignored_if_portable(self): """If electrum is started with the "portable" flag, system configuration is completely ignored.""" fake_read_system = lambda: {"some_key": "some_value"} fake_read_user = lambda _: {} read_user_dir = lambda: self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(config.get("some_key"), None)
def test_simple_config_system_config_ignored_if_portable(self): """If electrum is started with the "portable" flag, system configuration is completely ignored.""" another_path = tempfile.mkdtemp() fake_read_system = lambda: {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {"electrum_path": another_path} read_user_dir = lambda: self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(another_path, config.get("electrum_path"))
def test_simple_config_system_config_ignored_if_portable(self): """If electrum is started with the "portable" flag, system configuration is completely ignored.""" another_path = tempfile.mkdtemp() fake_read_system = lambda : {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {"electrum_path": another_path} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(another_path, config.get("electrum_path"))
def test_can_set_options_from_system_config_if_portable(self): """If the "portable" flag is set, the user can overwrite system configuration options.""" another_path = tempfile.mkdtemp() fake_read_system = lambda : {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {} read_user_dir = lambda : self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", another_path) self.assertEqual(another_path, config.get("electrum_path"))
def test_can_set_options_from_system_config_if_portable(self): """If the "portable" flag is set, the user can overwrite system configuration options.""" another_path = tempfile.mkdtemp() fake_read_system = lambda: {"electrum_path": self.electrum_dir} fake_read_user = lambda _: {} read_user_dir = lambda: self.user_dir config = SimpleConfig(options={"portable": True}, read_system_config_function=fake_read_system, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.set_key("electrum_path", another_path) self.assertEqual(another_path, config.get("electrum_path"))
def test_user_config_is_not_written_with_read_only_config(self): """The user config does not contain command-line options when saved.""" fake_read_user = lambda _: {"something": "a"} read_user_dir = lambda : self.user_dir self.options.update({"something": "c"}) config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) config.save_user_config() contents = None with open(os.path.join(self.electrum_dir, "config"), "r") as f: contents = f.read() result = ast.literal_eval(contents) result.pop('config_version', None) self.assertEqual({"something": "a"}, result)
def setUpClass(cls): super().setUpClass() from lib.plugins import Plugins from lib.simple_config import SimpleConfig cls.electrum_path = tempfile.mkdtemp() config = SimpleConfig({'electrum_path': cls.electrum_path}) gui_name = 'cmdline' # TODO it's probably wasteful to load all plugins... only need Trezor Plugins(config, True, gui_name)
def test_simple_config_key_rename(self): """auto_cycle was renamed auto_connect""" fake_read_user = lambda _: {"auto_cycle": True} read_user_dir = lambda : self.user_dir config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(config.get("auto_connect"), True) self.assertEqual(config.get("auto_cycle"), None) fake_read_user = lambda _: {"auto_connect": False, "auto_cycle": True} config = SimpleConfig(options=self.options, read_user_config_function=fake_read_user, read_user_dir_function=read_user_dir) self.assertEqual(config.get("auto_connect"), False) self.assertEqual(config.get("auto_cycle"), None)
def setUpClass(cls): super().setUpClass() cls.electrum_path = tempfile.mkdtemp() cls.config = SimpleConfig({'electrum_path': cls.electrum_path})