79b92e764e
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
"""Test config loader"""
|
|
from os import chmod, environ, unlink, write
|
|
from tempfile import mkstemp
|
|
|
|
from django.conf import ImproperlyConfigured
|
|
from django.test import TestCase
|
|
|
|
from authentik.lib.config import ENV_PREFIX, ConfigLoader
|
|
|
|
|
|
class TestConfig(TestCase):
|
|
"""Test config loader"""
|
|
|
|
def test_env(self):
|
|
"""Test simple instance"""
|
|
config = ConfigLoader()
|
|
environ[ENV_PREFIX + "_test__test"] = "bar"
|
|
config.update_from_env()
|
|
self.assertEqual(config.y("test.test"), "bar")
|
|
|
|
def test_patch(self):
|
|
"""Test patch decorator"""
|
|
config = ConfigLoader()
|
|
config.y_set("foo.bar", "bar")
|
|
self.assertEqual(config.y("foo.bar"), "bar")
|
|
with config.patch("foo.bar", "baz"):
|
|
self.assertEqual(config.y("foo.bar"), "baz")
|
|
self.assertEqual(config.y("foo.bar"), "bar")
|
|
|
|
def test_uri_env(self):
|
|
"""Test URI parsing (environment)"""
|
|
config = ConfigLoader()
|
|
environ["foo"] = "bar"
|
|
self.assertEqual(config.parse_uri("env://foo"), "bar")
|
|
self.assertEqual(config.parse_uri("env://foo?bar"), "bar")
|
|
|
|
def test_uri_file(self):
|
|
"""Test URI parsing (file load)"""
|
|
config = ConfigLoader()
|
|
file, file_name = mkstemp()
|
|
write(file, "foo".encode())
|
|
_, file2_name = mkstemp()
|
|
chmod(file2_name, 0o000) # Remove all permissions so we can't read the file
|
|
self.assertEqual(config.parse_uri(f"file://{file_name}"), "foo")
|
|
self.assertEqual(config.parse_uri(f"file://{file2_name}?def"), "def")
|
|
unlink(file_name)
|
|
unlink(file2_name)
|
|
|
|
def test_file_update(self):
|
|
"""Test update_from_file"""
|
|
config = ConfigLoader()
|
|
file, file_name = mkstemp()
|
|
write(file, "{".encode())
|
|
file2, file2_name = mkstemp()
|
|
write(file2, "{".encode())
|
|
chmod(file2_name, 0o000) # Remove all permissions so we can't read the file
|
|
with self.assertRaises(ImproperlyConfigured):
|
|
config.update_from_file(file_name)
|
|
config.update_from_file(file2_name)
|
|
unlink(file_name)
|
|
unlink(file2_name)
|