def test_options_mapping_peers(self):
        os.environ.clear()

        cfg = get_configuration(args=["--peers=testpeer1"],
                                config_files_required=False)

        self.assertIn("Peers", cfg)
        self.assertIn("testpeer1", cfg["Peers"])
    def test_options_mapping_listsn(self):
        os.environ.clear()

        cfg = get_configuration(args=['--listen="localhost:5500/UDP gossip"'],
                                config_files_required=False)

        self.assertIn("Listen", cfg)
        self.assertEqual(cfg["Listen"], ['"localhost:5500/UDP gossip"'])
    def test_options_mapping_key_file(self):
        os.environ.clear()

        cfg = get_configuration(args=["--keyfile=/test_path/keys/key.wif"],
                                config_files_required=False)

        self.assertIn("KeyFile", cfg)
        self.assertEqual(cfg["KeyFile"], "/test_path/keys/key.wif")
    def test_options_mapping_type(self):
        os.environ.clear()

        cfg = get_configuration(args=["--type=test"],
                                config_files_required=False)

        self.assertIn("LedgerType", cfg)
        self.assertEqual(cfg["LedgerType"], "test")
    def test_options_mapping_listsn(self):
        os.environ.clear()

        cfg = get_configuration(args=['--listen="localhost:5500/UDP gossip"'],
                                config_files_required=False)

        self.assertIn("Listen", cfg)
        self.assertEqual(cfg["Listen"], ['"localhost:5500/UDP gossip"'])
    def test_options_mapping_key_file(self):
        os.environ.clear()

        cfg = get_configuration(args=["--keyfile=/test_path/keys/key.wif"],
                                config_files_required=False)

        self.assertIn("KeyFile", cfg)
        self.assertEqual(cfg["KeyFile"], "/test_path/keys/key.wif")
    def test_options_mapping_conf_dir(self):
        os.environ.clear()

        cfg = get_configuration(args=["--conf-dir=/test_path/etc"],
                                config_files_required=False)

        self.assertIn("ConfigDirectory", cfg)
        self.assertEqual(cfg["ConfigDirectory"], "/test_path/etc")
    def test_options_mapping_node(self):
        os.environ.clear()

        cfg = get_configuration(args=["--node=test000"],
                                config_files_required=False)

        self.assertIn("NodeName", cfg)
        self.assertEqual(cfg["NodeName"], "test000")
    def test_options_mapping_data_dir(self):
        os.environ.clear()

        cfg = get_configuration(args=["--data-dir=/test_path/data"],
                                config_files_required=False)

        self.assertIn("DataDirectory", cfg)
        self.assertEqual(cfg["DataDirectory"], "/test_path/data")
    def test_options_mapping_type(self):
        os.environ.clear()

        cfg = get_configuration(args=["--type=test"],
                                config_files_required=False)

        self.assertIn("LedgerType", cfg)
        self.assertEqual(cfg["LedgerType"], "test")
    def test_options_mapping_node(self):
        os.environ.clear()

        cfg = get_configuration(args=["--node=test000"],
                                config_files_required=False)

        self.assertIn("NodeName", cfg)
        self.assertEqual(cfg["NodeName"], "test000")
    def test_options_mapping_data_dir(self):
        os.environ.clear()

        cfg = get_configuration(args=["--data-dir=/test_path/data"],
                                config_files_required=False)

        self.assertIn("DataDirectory", cfg)
        self.assertEqual(cfg["DataDirectory"], "/test_path/data")
    def test_options_mapping_conf_dir(self):
        os.environ.clear()

        cfg = get_configuration(args=["--conf-dir=/test_path/etc"],
                                config_files_required=False)

        self.assertIn("ConfigDirectory", cfg)
        self.assertEqual(cfg["ConfigDirectory"], "/test_path/etc")
    def test_logconfig_arg(self):
        os.environ.clear()

        cfg = get_configuration(args=["--log-config=Logging.js"],
                                config_files_required=False)

        self.assertIn("LogConfigFile", cfg)
        self.assertEqual(cfg["LogConfigFile"], "Logging.js")
    def test_logconfig_arg(self):
        os.environ.clear()

        cfg = get_configuration(args=["--log-config=Logging.js"],
                                config_files_required=False)

        self.assertIn("LogConfigFile", cfg)
        self.assertEqual(cfg["LogConfigFile"], "Logging.js")
    def test_options_mapping_peers(self):
        os.environ.clear()

        cfg = get_configuration(args=["--peers=testpeer1"],
                                config_files_required=False)

        self.assertIn("Peers", cfg)
        self.assertIn("testpeer1", cfg["Peers"])
    def test_default_config_posix(self):
        os.environ.clear()
        cfg = get_configuration(args=[],
                                os_name='posix',
                                config_files_required=False)

        self.assertNotIn("CurrencyHome", cfg)
        self.assertEqual(cfg["ConfigDirectory"], "/etc/sawtooth-validator")
        self.assertEqual(cfg["LogDirectory"], "/var/log/sawtooth-validator")
        self.assertEqual(cfg["DataDirectory"], "/var/lib/sawtooth-validator")
    def test_default_config_posix(self):
        os.environ.clear()
        cfg = get_configuration(args=[],
                                os_name='posix',
                                config_files_required=False)

        self.assertNotIn("CurrencyHome", cfg)
        self.assertEqual(cfg["ConfigDirectory"], "/etc/sawtooth-validator")
        self.assertEqual(cfg["LogDirectory"], "/var/log/sawtooth-validator")
        self.assertEqual(cfg["DataDirectory"], "/var/lib/sawtooth-validator")
    def test_currency_home(self):
        os.environ.clear()
        os.environ["CURRENCYHOME"] = "/test_path"

        cfg = get_configuration(args=[], config_files_required=False)

        self.assertIn("CurrencyHome", cfg)
        self.assertEqual(cfg["CurrencyHome"], "/test_path")
        self.assertEqual(cfg["ConfigDirectory"], "/test_path/etc")
        self.assertEqual(cfg["LogDirectory"], "/test_path/logs")
        self.assertEqual(cfg["DataDirectory"], "/test_path/data")
    def test_currency_home(self):
        os.environ.clear()
        os.environ["CURRENCYHOME"] = "/test_path"

        cfg = get_configuration(args=[], config_files_required=False)

        self.assertIn("CurrencyHome", cfg)
        self.assertEqual(cfg["CurrencyHome"], "/test_path")
        self.assertEqual(cfg["ConfigDirectory"], "/test_path/etc")
        self.assertEqual(cfg["LogDirectory"], "/test_path/logs")
        self.assertEqual(cfg["DataDirectory"], "/test_path/data")
    def test_options_mapping_url(self):
        os.environ.clear()

        cfg = get_configuration(args=[
            "--url", "http://testhost:8888,"
            "http://testhost:8889", "--url", "http://testhost:8890"
        ],
                                config_files_required=False)

        self.assertIn("LedgerURL", cfg)
        self.assertIn("http://testhost:8888", cfg["LedgerURL"])
        self.assertIn("http://testhost:8889", cfg["LedgerURL"])
        self.assertIn("http://testhost:8890", cfg["LedgerURL"])
    def test_options_mapping_url(self):
        os.environ.clear()

        cfg = get_configuration(args=["--url",
                                      "http://testhost:8888,"
                                      "http://testhost:8889",
                                      "--url",
                                      "http://testhost:8890"],
                                config_files_required=False)

        self.assertIn("LedgerURL", cfg)
        self.assertIn("http://testhost:8888", cfg["LedgerURL"])
        self.assertIn("http://testhost:8889", cfg["LedgerURL"])
        self.assertIn("http://testhost:8890", cfg["LedgerURL"])
    def test_default_config_nt(self):
        os.environ.clear()
        cfg = get_configuration(args=[],
                                os_name='nt',
                                config_files_required=False)

        self.assertNotIn("CurrencyHome", cfg)
        self.assertEqual(
            cfg["ConfigDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\conf")
        self.assertEqual(
            cfg["LogDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\logs")
        self.assertEqual(
            cfg["DataDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\data")
    def test_default_config_nt(self):
        os.environ.clear()
        cfg = get_configuration(args=[],
                                os_name='nt',
                                config_files_required=False)

        self.assertNotIn("CurrencyHome", cfg)
        self.assertEqual(
            cfg["ConfigDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\conf")
        self.assertEqual(
            cfg["LogDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\logs")
        self.assertEqual(
            cfg["DataDirectory"],
            "C:\\Program Files (x86)\\Intel\\sawtooth-validator\\data")