def test_using_env(tmpdir): load(settings, filename=TOML) assert settings.HOST == "prodserver.com" tmpfile = tmpdir.mkdir("sub").join("test_using_env.toml") tmpfile.write(TOML) with settings.using_env("DEVELOPMENT", filename=str(tmpfile)): assert settings.HOST == "devserver.com" assert settings.HOST == "prodserver.com"
def test_envless(): settings = LazySettings() ini = """ a = "a,b" colors__white__code = '#FFFFFF' COLORS__white__name = 'white' """ load(settings, filename=ini) assert settings.a == "a,b" assert settings.COLORS.white.code == "#FFFFFF" assert settings.COLORS.white.name == "white"
def test_load_dunder(): """Test load with dunder settings""" toml = """ a = "a,b" [foo] colors__gray__code = '#CCCCCC' COLORS__gray__name = 'Gray' """ load(settings, filename=toml, env="FOO") assert settings.COLORS.gray.code == "#CCCCCC" assert settings.COLORS.gray.name == "Gray"
def test_load_single_key(): """Test loading a single key""" toml = """ [foo] bar = "blaz" zaz = "naz" """ load(settings, filename=toml, namespace='FOO', key='bar') assert settings.BAR == 'blaz' assert settings.exists('BAR') is True assert settings.exists('ZAZ') is False
def test_prefix(): settings = LazySettings(filter_strategy=PrefixFilter("prefix")) ini = """ prefix_a = "a,b" prefix_colors__white__code = '#FFFFFF' COLORS__white__name = 'white' """ load(settings, filename=ini) assert settings.a == "a,b" assert settings.COLORS.white.code == "#FFFFFF" with pytest.raises(AttributeError): settings.COLORS.white.name
def test_load_from_multiple_toml(): """Assert loads from TOML string""" load(settings, filename=TOMLS) assert settings.HOST == "othertoml.com" assert settings.PASSWORD == 123456 assert settings.SECRET == 42.0 assert settings.PORT == 8080 assert settings.SERVICE["url"] == "service.com" assert settings.SERVICE.url == "service.com" assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == "qwerty" assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOMLS, env="DEVELOPMENT") assert settings.PORT == 8080 assert settings.HOST == "othertoml.com" load(settings, filename=TOMLS) assert settings.HOST == "othertoml.com" assert settings.PASSWORD == 123456 load(settings, filename=TOML, env="DEVELOPMENT") assert settings.PORT == 8080 assert settings.HOST == "devserver.com" load(settings, filename=TOML) assert settings.HOST == "prodserver.com" assert settings.PASSWORD == 11111
def test_load_from_multiple_toml(): """Assert loads from TOML string""" load(settings, filename=TOMLS) assert settings.HOST == 'othertoml.com' assert settings.PASSWORD == 123456 assert settings.SECRET == 42.0 assert settings.PORT == 8080 assert settings.SERVICE['url'] == 'service.com' assert settings.SERVICE.url == 'service.com' assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == 'qwerty' assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOMLS, env='DEVELOPMENT') assert settings.PORT == 8080 assert settings.HOST == 'othertoml.com' load(settings, filename=TOMLS) assert settings.HOST == 'othertoml.com' assert settings.PASSWORD == 123456 load(settings, filename=TOML, env='DEVELOPMENT') assert settings.PORT == 8080 assert settings.HOST == 'devserver.com' load(settings, filename=TOML) assert settings.HOST == 'prodserver.com' assert settings.PASSWORD == 11111
def test_load_single_key(): """Test loading a single key""" toml = """ a = "a,b" [foo] bar = "blaz" ZAZ = "naz" lowerkey = 'hello' UPPERKEY = 'world' """ load(settings, filename=toml, env="FOO", key="bar") assert settings.BAR == "blaz" assert settings.exists("BAR") is True assert settings.exists("ZAZ") is False load(settings, filename=toml, env="FOO", key="ZAZ") assert settings.ZAZ == "naz" load(settings, filename=toml, env="FOO", key="LOWERKEY") assert settings.LOWERKEY == "hello" load(settings, filename=toml, env="FOO", key="upperkey") assert settings.UPPERKEY == "world"
def test_load_from_toml(): """Assert loads from TOML string""" load(settings, filename=TOML) assert settings.HOST == 'server.com' assert settings.PORT == 8080 assert settings.SERVICE['url'] == 'service.com' assert settings.SERVICE.url == 'service.com' assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == 'qwerty' assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, namespace='DEVELOPMENT') assert settings.HOST == 'dev_server.com' load(settings, filename=TOML) assert settings.HOST == 'server.com'
def test_cleaner(): load(settings, filename=TOML) assert settings.HOST == 'server.com' assert settings.PORT == 8080 assert settings.SERVICE['url'] == 'service.com' assert settings.SERVICE.url == 'service.com' assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == 'qwerty' assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, namespace='DEVELOPMENT') assert settings.HOST == 'dev_server.com' load(settings, filename=TOML) assert settings.HOST == 'server.com' clean(settings, settings.namespace)
def test_load_from_toml(): """Assert loads from TOML string""" load(settings, filename=TOML) assert settings.HOST == 'prodserver.com' assert settings.PORT == 8080 assert settings.ALIST == ['item1', 'item2', 23] assert settings.SERVICE['url'] == 'service.com' assert settings.SERVICE.url == 'service.com' assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == 'qwerty' assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, env='DEVELOPMENT') assert settings.HOST == 'devserver.com' load(settings, filename=TOML) assert settings.HOST == 'prodserver.com'
def test_load_from_toml(): """Assert loads from TOML string""" load(settings, filename=TOML) assert settings.HOST == "prodserver.com" assert settings.PORT == 8080 assert settings.ALIST == ["item1", "item2", 23] assert settings.SERVICE["url"] == "service.com" assert settings.SERVICE.url == "service.com" assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == "qwerty" assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, env="DEVELOPMENT") assert settings.HOST == "devserver.com" load(settings, filename=TOML) assert settings.HOST == "prodserver.com"
def test_cleaner(): load(settings, filename=TOML) assert settings.HOST == "prodserver.com" assert settings.PORT == 8080 assert settings.ALIST == ["item1", "item2", 23] assert settings.SERVICE["url"] == "service.com" assert settings.SERVICE.url == "service.com" assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == "qwerty" assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, env="DEVELOPMENT") assert settings.HOST == "devserver.com" load(settings, filename=TOML) assert settings.HOST == "prodserver.com" settings.clean() with pytest.raises(AttributeError): assert settings.HOST == "prodserver.com"
def test_cleaner(): load(settings, filename=TOML) assert settings.HOST == 'prodserver.com' assert settings.PORT == 8080 assert settings.ALIST == ['item1', 'item2', 23] assert settings.SERVICE['url'] == 'service.com' assert settings.SERVICE.url == 'service.com' assert settings.SERVICE.port == 80 assert settings.SERVICE.auth.password == 'qwerty' assert settings.SERVICE.auth.test == 1234 load(settings, filename=TOML, env='DEVELOPMENT') assert settings.HOST == 'devserver.com' load(settings, filename=TOML) assert settings.HOST == 'prodserver.com' settings.clean() with pytest.raises(AttributeError): assert settings.HOST == 'prodserver.com'
def test_no_filename_is_none(): """Assert if passed no filename return is None""" assert load(settings) is None
def test_key_error_on_invalid_namespace(): """Assert error raised if namespace is not found in TOML""" with pytest.raises(KeyError): load(settings, filename=TOML, namespace='FOOBAR', silent=False)
def test_no_key_error_on_invalid_namespace(): """Assert error raised if namespace is not found in TOML""" load(settings, filename=TOML, namespace='FOOBAR', silent=True)
def test_no_key_error_on_invalid_env(): """Assert error raised if env is not found in TOML""" load(settings, filename=TOML, env="FOOBAR", silent=True)
def test_key_error_on_invalid_env(): """Assert error raised if env is not found in TOML""" with pytest.raises(KeyError): load(settings, filename=TOML, env="FOOBAR", silent=False)
def test_multiple_filenames(): load(settings, filename="a.toml,b.tml,c.toml,d.tml")
def test_prefix_is_not_str_raises(): with pytest.raises(TypeError): toml_loader.load(LazySettings(filter_strategy=PrefixFilter(int))) with pytest.raises(TypeError): toml_loader.load(LazySettings(filter_strategy=PrefixFilter(True)))
def test_empty_value(): load(settings, filename="")