def test_load_with_existing_env_vars_from_args(self): env = Env('ABC') os.environ['ABC'] = '456' env.load() assert env.data['ABC'] == '456' del os.environ['ABC']
def test_load_with_existing_env_vars(self): env = Env(keys=['ABC']) os.environ['ABC'] = '456' env.load() assert env.data['ABC'] == '456' del os.environ['ABC']
def test_load_with_existing_env_vars_from_kwargs(self): env = Env(**{'src_abc': 'dest_abc'}) os.environ['SRC_ABC'] = '456' env.load() assert 'SRC_ABC' not in env.data assert 'DEST_ABC' in env.data assert env.data['DEST_ABC'] == '456' del os.environ['SRC_ABC']
def test_load_with_non_existing_env_vars(self): env = Env(keys=["abc", "easy as"]) os.environ["ABC"] = "123" env.load() assert "ABC" in env.data assert "EASY_AS" not in env.data assert env.data["ABC"] == "123" del os.environ['ABC']
def test_load_with_provided_overriding_keys(self): env = Env(keys=["abc"]) os.environ["ABC"] = "123" os.environ["EASY_AS"] = "do re mi" env.load(keys=["easy as"]) assert "ABC" in env.data assert "EASY_AS" in env.data assert env.data["ABC"] == "123" assert env.data["EASY_AS"] == "do re mi"
def test_load_with_non_existing_env_vars_from_args(self): env = Env(**{"src_abc": "dest_abc", "src_easy_as": "dest_easy_as"}) os.environ["SRC_ABC"] = "123" env.load() assert "SRC_ABC" not in env.data assert "DEST_ABC" in env.data assert env.data["DEST_ABC"] == "123" assert "SRC_EASY_AS" not in env.data assert "DEST_EASY_AS" not in env.data del os.environ['SRC_ABC']
def test_init_with_kwargs_sets_mapping_attribute(self): env = Env(**{"src_abc": "dest_abc", "src_easy_as": "dest_easy_as"}) assert env.mapping == { "SRC_ABC": "DEST_ABC", "SRC_EASY_AS": "DEST_EASY_AS" }
def test_register_a_non_special_adapter_with_empty_adapters(self): env_adapter = Env() config = Config() config.register(env_adapter) assert len(config.adapters) == 1 assert config.adapters[0] == env_adapter
def test_adapters_setter_raises_if_defaults_is_not_first(self): defaults_adapter = Defaults({"abc": "123"}) env_adapter = Env() config = Config() with pytest.raises(ValueError): # defaults_adapter should always be first config.adapters = [env_adapter, defaults_adapter]
def test_adapters_setter_raises_if_overrides_is_not_last(self): overrides_adapter = Overrides({"abc": "123"}) env_adapter = Env() config = Config() with pytest.raises(ValueError): # overrides_adapter should always be last config.adapters = [overrides_adapter, env_adapter]
def test_register_a_second_defaults_overrides_existing_one(self): env_adapter = Env() defaults_adapter = Defaults({"abc": "123"}) config = Config() config.adapters = [defaults_adapter, env_adapter] new_defaults = Defaults({"easy as": "do re mi"}) config.register(new_defaults) assert config.defaults == new_defaults
def test_register_a_second_defaults_raises(self): env_adapter = Env() defaults_adapter = Defaults({"abc": "123"}) config = Config() config.adapters = [defaults_adapter, env_adapter] with pytest.raises(ValueError): config.register(defaults_adapter)
def test_register_a_second_overrides_replaces_existing_one(self): env_adapter = Env() overrides_adapter = Overrides({"abc": "123"}) config = Config() config.adapters = [env_adapter, overrides_adapter] new_overrides = Overrides({"easy as": "do re mi"}) config.register(new_overrides) assert config.overrides == new_overrides
def test_register_a_second_overrides_raises(self): env_adapter = Env() overrides_adapter = Overrides({"abc": "123"}) config = Config() config.adapters = [env_adapter] config.register(overrides_adapter) with pytest.raises(ValueError): config.register(overrides_adapter)
def test_register_sets_defaults_adapter_as_first_with_existing_adapters( self): env_adapter = Env() defaults_adapter = Defaults({"abc": "123"}) config = Config() config.adapters = [env_adapter] config.register(defaults_adapter) assert config.adapters[0] == defaults_adapter assert config.adapters[1] == env_adapter
def test_load_passes_its_keys_to_env_loading(self): env = Env("USER", "PATH") config = Config({"PATH": None}) config.register(env) config.load() assert "USER" in config assert "PATH" in config assert config["USER"] == os.environ["USER"] assert config["PATH"] == os.environ["PATH"]
def test_register_non_special_adapters_protects_order(self): env_adapter = Env() file_adapter = File('/tmp/test') config = Config() config.register(env_adapter) config.register(file_adapter) assert len(config.adapters) == 2 assert config.adapters[0] == env_adapter assert config.adapters[1] == file_adapter
def test_register_sets_overrides_adapter_as_last_with_existing_adapters( self): env_adapter = Env() overrides_adapter = Overrides({"abc": "123"}) config = Config() config.adapters = [env_adapter] config.register(overrides_adapter) assert config.adapters[0] == env_adapter assert config.adapters[1] == overrides_adapter
def test_register_multiple_adapters(self): config = Config() defaults_adapter = Defaults() env_adapter = Env() file_adapter = File('/tmp/test') config.register(defaults_adapter, env_adapter, file_adapter) assert len(config.adapters) == 3 assert config.adapters[0] == defaults_adapter assert config.adapters[1] == env_adapter assert config.adapters[2] == file_adapter
def test_register_non_special_adapters_with_overrides(self): env_adapter = Env() overrides_adapter = Overrides() file_adapter = File('/tmp/test') config = Config() config.adapters = [overrides_adapter] config.register(env_adapter) config.register(file_adapter) assert len(config.adapters) == 3 assert config.adapters[0] == env_adapter assert config.adapters[1] == file_adapter assert config.adapters[2] == overrides_adapter
def test_load_method_forces_subconfig_adapters_loading(self): main_config = Config() subconfig = Config() subconfig_env_adapter = Env("TEST") subconfig.register(subconfig_env_adapter) main_config.add_subconfig('test_subconfig', subconfig) os.environ["TEST"] = "test" assert hasattr(main_config, 'test_subconfig') assert main_config.test_subconfig == subconfig assert not main_config.test_subconfig main_config.load() assert 'TEST' in main_config.test_subconfig assert main_config.test_subconfig['TEST'] == 'test' del os.environ["TEST"]
def test_init_formats_input_keys(self): env = Env(keys=["abc"]) assert env.keys == ["ABC"]
def test_init_with_args_sets_keys_attribute(self): env = Env("abc", "123", "easy_as") assert env.keys == ['ABC', '123', 'EASY_AS'] assert env.mapping == {}
def test_adapters_setter_raises_if_a_member_has_invalid_type(self): config = Config() with pytest.raises(TypeError): config.adapters = [Env(), "abc 123"]