def test_default(os_env): os_env.setdefault('ENV', 'production') env = EnvWrapper(ENV=EnvVar(default='testing')) assert env.ENV == 'production' os_env.clear() assert env.ENV == 'testing' os_env['ENV'] = 'integration' assert env.ENV == 'integration' assert env.get('YADA') is None assert env.get('YADA', 'some_value') == 'some_value'
def test_inc_exc_bundle(os_env): env = EnvWrapper(FLAG=EnvVar(convert=bool, bundle='SETTINGS'), VAR_1=EnvVar(include_if='FLAG', bundle='SETTINGS', default='foo'), VAR_2=EnvVar(exclude_if='FLAG', bundle='SETTINGS', default='bar')) os_env['FLAG'] = 'on' assert 'SETTINGS' in dir(env) assert 'FLAG' in dir(env) assert 'VAR_1' in dir(env) assert 'VAR_2' not in dir(env) assert 'flag' in env.get('SETTINGS') assert 'var_1' in env.get('SETTINGS') assert 'var_2' not in env.get('SETTINGS') os_env['FLAG'] = 'off' assert 'SETTINGS' in dir(env) assert 'FLAG' in dir(env) assert 'VAR_1' not in dir(env) assert 'VAR_2' in dir(env) assert 'flag' in env.get('SETTINGS') assert 'var_1' not in env.get('SETTINGS') assert 'var_2' in env.get('SETTINGS')
def test_var_nocast(os_env): os_env['VAR1'] = 'some_value' env = EnvWrapper(VAR1=EnvVar()) assert env.VAR1 == 'some_value' assert env['VAR1'] == 'some_value' assert env.get('VAR1') == 'some_value'
def test_cast_to_bytes(os_env): env = EnvWrapper(DATA=EnvVar(convert=EnvVar.to_bytes, default='foo')) data = env.get('DATA') assert isinstance(data, bytes) assert data == bytes('foo', encoding='utf-8')
def test_import_error_no_class(os_env): os_env['FACTORY'] = str(__name__) + '.SomeClass' env = EnvWrapper(FACTORY=EnvVar(postprocessor=EnvVar.import_class)) with pytest.raises(ImportError) as e: _ = env.get('FACTORY') assert str(e.value) == f"No class named 'SomeClass' in module '{__name__}'"
def test_import_error_module_not_found(os_env): os_env['FACTORY'] = 'tests.yada.SomeClass' env = EnvWrapper(FACTORY=EnvVar(postprocessor=EnvVar.import_class)) with pytest.raises(ImportError) as e: _ = env.get('FACTORY') assert str(e.value) == "No module named 'tests.yada'"
def test_import_class(os_env): os_env['FACTORY'] = __name__ + '.Factory' env = EnvWrapper(FACTORY=EnvVar(postprocessor=EnvVar.import_class)) cls = env.get('FACTORY') assert cls assert isinstance(cls, type)