diff --git a/monkey/monkey_island/setup/island_config_options.py b/monkey/monkey_island/setup/island_config_options.py index 938c840a0..5ce62ba2e 100644 --- a/monkey/monkey_island/setup/island_config_options.py +++ b/monkey/monkey_island/setup/island_config_options.py @@ -11,8 +11,9 @@ from monkey_island.cc.server_utils.consts import ( class IslandConfigOptions: def __init__(self, config_contents: dict): - self.data_dir = os.path.expanduser(config_contents.get("data_dir", DEFAULT_DATA_DIR)) - + self.data_dir = os.path.expandvars( + os.path.expanduser(config_contents.get("data_dir", DEFAULT_DATA_DIR)) + ) self.log_level = config_contents.get("log_level", DEFAULT_LOG_LEVEL) self.start_mongodb = config_contents.get( diff --git a/monkey/tests/unit_tests/monkey_island/setup/test_island_config_options.py b/monkey/tests/unit_tests/monkey_island/setup/test_island_config_options.py index 9175bc274..35126a278 100644 --- a/monkey/tests/unit_tests/monkey_island/setup/test_island_config_options.py +++ b/monkey/tests/unit_tests/monkey_island/setup/test_island_config_options.py @@ -1,3 +1,5 @@ +import os + from monkey_island.cc.server_utils.consts import ( DEFAULT_DATA_DIR, DEFAULT_LOG_LEVEL, @@ -16,11 +18,41 @@ TEST_CONFIG_FILE_CONTENTS_UNSPECIFIED = {} TEST_CONFIG_FILE_CONTENTS_NO_STARTMONGO = {"mongodb": {}} -def test_island_config_options__data_dir(): - options = IslandConfigOptions(TEST_CONFIG_FILE_CONTENTS_SPECIFIED) - assert options.data_dir == "/tmp" - options = IslandConfigOptions(TEST_CONFIG_FILE_CONTENTS_UNSPECIFIED) - assert options.data_dir == DEFAULT_DATA_DIR +def test_island_config_options__data_dir_specified(): + assert_island_config_options_data_dir_equals(TEST_CONFIG_FILE_CONTENTS_SPECIFIED, "/tmp") + + +def test_island_config_options__data_dir_uses_default(): + assert_island_config_options_data_dir_equals( + TEST_CONFIG_FILE_CONTENTS_UNSPECIFIED, DEFAULT_DATA_DIR + ) + + +def test_island_config_options__data_dir_expanduser(monkeypatch, tmpdir): + set_home_env(monkeypatch, tmpdir) + DATA_DIR_NAME = "test_data_dir" + + assert_island_config_options_data_dir_equals( + {"data_dir": os.path.join("~", DATA_DIR_NAME)}, os.path.join(tmpdir, DATA_DIR_NAME) + ) + + +def test_island_config_options__data_dir_expandvars(monkeypatch, tmpdir): + set_home_env(monkeypatch, tmpdir) + DATA_DIR_NAME = "test_data_dir" + + assert_island_config_options_data_dir_equals( + {"data_dir": os.path.join("$HOME", DATA_DIR_NAME)}, os.path.join(tmpdir, DATA_DIR_NAME) + ) + + +def set_home_env(monkeypatch, tmpdir): + monkeypatch.setenv("HOME", str(tmpdir)) + + +def assert_island_config_options_data_dir_equals(config_file_contents, expected_data_dir): + options = IslandConfigOptions(config_file_contents) + assert options.data_dir == expected_data_dir def test_island_config_options__log_level():