def test_positional_args(): with pytest.raises(ValueError): config_manager = config42.ConfigManager( handler=ArgParse, schema=[ dict(name="positional", description="positional long description", key="positional", required=False, source=dict(argv=['positional'])) ], argv=['positional']) config_manager = config42.ConfigManager( handler=ArgParse, schema=[ dict(name="positional", description="positional long description", key="positional", required=False, source=dict(argv=['positional'], argv_options=dict(dest=False))) ], argv=['positional']) assert config_manager.handler.load() is not None
def test_handler_keyspace(): keyspace = 'no_slash' + uuid1().hex config_manager = config42.ConfigManager(handler=Etcd, keyspace=keyspace) config_manager.set('key', 'value') config_manager.set('key2.key', 'value') config_manager = config42.ConfigManager(handler=Etcd, keyspace=keyspace) assert config_manager.get('key') == 'value' assert config_manager.get('key2.key') == 'value'
def test_load_empty_config(): with pytest.raises(TypeError): _ = config42.ConfigManager(handler=ArgParse) config_manager = config42.ConfigManager(handler=ArgParse, schema=[], argv=[]) assert config_manager.handler.load() is not None
def test_ini_content(tmp_path, sample_config_ini_with_sections): file_path = str(tmp_path) + "/test.config.ini" config_manager = config42.ConfigManager(handler=FileHandler, path=file_path) config_manager.set_many(sample_config_ini_with_sections) assert sample_config_ini_with_sections['section1'][ 'key1'] == config_manager.get('section1.key1') assert sample_config_ini_with_sections['section2'][ 'key2'] == config_manager.get('section2.key2')
def test_generic_init_without_explicit_handler(tmp_path): file_path_base = str(tmp_path) + "/test.config." for extension in ['yml', 'yaml', 'ini', 'json']: file_path = file_path_base + extension config_manager = config42.ConfigManager(path=file_path) config_manager.set("key.sub", "value") assert os.path.exists(file_path) is True config_manager.handler.destroy() assert os.path.exists(file_path) is False
def test_load_content(sample_config): keyspace = '/new_key_' + uuid1().hex config_manager = config42.ConfigManager(handler=Etcd, keyspace=keyspace) assert len(config_manager.handler.load()) == 0 config_manager.set_many(sample_config, trigger_commit=False) config_manager.handler.dump() config_manager = config42.ConfigManager(handler=Etcd, keyspace=keyspace) assert sample_config['simple'] == config_manager.get('simple') assert sample_config['bool'] != config_manager.get('bool') assert sample_config['bool'] == bool(config_manager.get('bool')) assert sample_config['simple_dict']['key'] == config_manager.get( 'simple_dict.key') assert sample_config['nested_dict']['nested']['key'] == config_manager.get( 'nested_dict.nested.key') assert sample_config['nested_list'][0][0] == config_manager.get( 'nested_list.0.0') assert sample_config['nested_list'][1][0] == config_manager.get( 'nested_list.1.0') assert config_manager.get('notindict') is None
def test_handler_with_extension_override(tmp_path, null_config): handlers = [('yml', YamlHandler), ('yaml', YamlHandler), ('YaMl', YamlHandler), ('ini', IniHandler), ('InI', IniHandler), ('json', JsonHandler), ('txt', RawHandler), ('', RawHandler), ('.', RawHandler), (None, RawHandler)] for handler in handlers: extension, handler_class = handler conf = config42.ConfigManager(handler=FileHandler, path=str(tmp_path), extension=extension) assert isinstance(conf.handler, handler_class) is True
def test_load_configuration(): argv = "-k value1 --keytwo value2 -o value3 --optional-key2 value1" \ " --key_source_omitted=value".split(" ") config_manager = config42.ConfigManager(handler=ArgParse, schema=SCHEMA, argv=argv) assert config_manager.get('keyone') == "value1" assert config_manager.get('key.two') == "value2" assert config_manager.get('optional_key') == "value3" assert config_manager.get('nested.absent_key_default') == "default" assert config_manager.get('absent_key1') is None assert config_manager.get('nested.optional_key') == "value1" assert config_manager.get('key_source_omitted') == "value"
def test_raw_handler_destroy(tmp_path): dir = tmp_path / "raw" dir.mkdir() key_file = dir / "key" key2_file = dir / "key2" key_file.write_text("value") key2_file.write_text("value2") config_manager_dir = config42.ConfigManager(path=str(dir)) assert config_manager_dir.get('key') == 'value' assert config_manager_dir.get('key2') == 'value2' config_manager_file = config42.ConfigManager(path=str(key_file)) assert config_manager_file.get('key') == 'value' config_manager_file.handler.destroy() config_manager_dir = config42.ConfigManager(path=str(dir)) assert config_manager_dir.get('key') is None assert config_manager_dir.get('key2') == 'value2' config_manager_dir.handler.destroy() config_manager_dir = config42.ConfigManager(path=str(dir)) assert config_manager_dir.get('key2') is None
def test_load_configuration(): import os env_vars = {"BARBEROUSSE_WORKER_CONFIG_HOST": "TEST1"} env_vars["BARBEROUSSE_WORKER_CONFIG_VERY_LONG_KEY_WITH_66_ENVIRONMENT_LENGTH"] = "66" env_vars["BARBEROUSSE2_NOKEY"] = "NOKEY" os.environ.update(env_vars) config_manager = config42.ConfigManager(prefix='BARBEROUSSE') for key, value in env_vars.items(): if "BARBEROUSSE2" in key: assert config_manager.get( key.replace("BARBEROUSSE2_", "").replace("_", ".").lower()) is None else: assert value == config_manager.get( key.replace("BARBEROUSSE_", "").replace("_", ".").lower())
def test_load_and_dump_flush(sample_config): config_manager = config42.ConfigManager(handler=Etcd, keyspace='/absent_key_' + uuid1().hex) config_manager.set_many(sample_config, trigger_commit=False) assert len(config_manager.handler.load()) == 0 assert config_manager.handler.updated is True config_manager.handler.dump() assert config_manager.handler.updated is False assert len(config_manager.handler.load()) > 0 config_manager.handler.flush() assert len(config_manager.handler.load()) >= 0 assert config_manager.handler.updated is True config_manager.handler.destroy() assert len(config_manager.handler.load()) == 0
def test_yaml_configuration_content(tmp_path, sample_config): file_path = str(tmp_path) + "/test.config.yml" config_manager = config42.ConfigManager(handler=FileHandler, path=file_path) config_manager.set_many(sample_config) assert_configuration_content(config_manager, sample_config)
def test_load_empty_config(): config_manager = config42.ConfigManager(handler=Etcd, keyspace='/absent_key_' + uuid1().hex) assert config_manager.handler.load() is not None
def test_ini_not_supported_nesting(sample_config): file_path = ".test.config.ini" config_manager = config42.ConfigManager(handler=FileHandler, path=file_path) with pytest.raises(AttributeError): config_manager.set_many(sample_config)
def test_flask_configuration_init_app(cwd): config_manager = config42.ConfigManager(path=cwd + "/files/flask-app.yml") app = Flask(__name__) config_manager.init_app(app) assert config_manager.get('NAME') is not None assert config_manager.get('NAME') == app.config.get('NAME')
def test_raw_handler_directory_configmanager(cwd): config_manager = config42.ConfigManager(path=cwd + "/files/raw") assert config_manager.get('foo') == 'bar' assert config_manager.get('bar') == 'foo' assert config_manager.get('foobar') == 'foobar'
def test_not_implemented_extension(): app = BestFramework() with pytest.raises(NotImplementedError): _ = config42.ConfigManager(app, path="files/flask-app.yml")
def test_flush_db(): config_manager = config42.ConfigManager(handler=Etcd) assert config_manager.handler.load() is not None
def test_implicit_handler(): config_manager = config42.ConfigManager(prefix='BARBEROUSSE') assert config_manager.handler.load() is not None
def test_default_handler(): config_manager = config42.ConfigManager() assert isinstance(config_manager.handler, config42.handlers.memory.Memory)
def test_load_empty_config(): config_manager = config42.ConfigManager(handler=Environment, prefix='BARBEROUSSE' + uuid1().hex) assert config_manager.handler.load() is not None
def test_default_handler_destroy(): config_manager = config42.ConfigManager() assert config_manager.handler.destroy()
def test_default_handler_flush(): config_manager = config42.ConfigManager() assert config_manager.handler.flush() assert config_manager.handler.updated is True
def test_ini_init_without_file_path(): with pytest.raises(TypeError): _ = config42.ConfigManager(handler=FileHandler)
def test_flask_configuration(cwd): app = Flask(__name__) config_manager = config42.ConfigManager(app, path=cwd + "/files/flask-app.yml") assert config_manager.get('NAME') == app.config.get('NAME')
def test_no_explicit_handler(): config_manager = config42.ConfigManager(keyspace='/absent_key_' + uuid1().hex) assert config_manager.handler.load() is not None