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"
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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)
Ejemplo n.º 15
0
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')
Ejemplo n.º 16
0
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'
Ejemplo n.º 17
0
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
Ejemplo n.º 19
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 25
0
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