]> git.openstreetmap.org Git - nominatim.git/commitdiff
add initial pytest test for Configuration
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 15 Jan 2021 13:42:03 +0000 (14:42 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 15 Jan 2021 13:42:03 +0000 (14:42 +0100)
test/python/conftest.py [new file with mode: 0644]
test/python/test_config.py [new file with mode: 0644]

diff --git a/test/python/conftest.py b/test/python/conftest.py
new file mode 100644 (file)
index 0000000..26bbb39
--- /dev/null
@@ -0,0 +1,6 @@
+import sys
+from pathlib import Path
+
+# always test against the source
+sys.path.insert(0, str((Path(__file__) / '..' / '..' / '..').resolve()))
+
diff --git a/test/python/test_config.py b/test/python/test_config.py
new file mode 100644 (file)
index 0000000..03e4a80
--- /dev/null
@@ -0,0 +1,56 @@
+"""
+Test for loading dotenv configuration.
+"""
+from pathlib import Path
+import tempfile
+import os
+
+import pytest
+
+from nominatim.config import Configuration
+
+DEFCFG_DIR = Path(__file__) / '..' / '..' / '..' / 'settings'
+
+def test_no_project_dir():
+    config = Configuration(None, DEFCFG_DIR)
+
+    assert config.DATABASE_WEBUSER == 'www-data'
+
+def test_prefer_project_setting_over_default():
+    with tempfile.TemporaryDirectory() as project_dir:
+        with open(project_dir + '/.env', 'w') as envfile:
+            envfile.write('NOMINATIM_DATABASE_WEBUSER=apache\n')
+
+        config = Configuration(Path(project_dir), DEFCFG_DIR)
+
+        assert config.DATABASE_WEBUSER == 'apache'
+
+def test_prefer_os_environ_over_project_setting():
+    with tempfile.TemporaryDirectory() as project_dir:
+        with open(project_dir + '/.env', 'w') as envfile:
+            envfile.write('NOMINATIM_DATABASE_WEBUSER=apache\n')
+
+        os.environ['NOMINATIM_DATABASE_WEBUSER'] = 'nobody'
+
+        config = Configuration(Path(project_dir), DEFCFG_DIR)
+
+        assert config.DATABASE_WEBUSER == 'nobody'
+
+        del os.environ['NOMINATIM_DATABASE_WEBUSER']
+
+def test_get_os_env_add_defaults():
+    config = Configuration(None, DEFCFG_DIR)
+
+    if 'NOMINATIM_DATABASE_WEBUSER' in os.environ:
+        del os.environ['NOMINATIM_DATABASE_WEBUSER']
+
+    assert config.get_os_env()['NOMINATIM_DATABASE_WEBUSER'] == 'www-data'
+
+def test_get_os_env_prefer_os_environ():
+    config = Configuration(None, DEFCFG_DIR)
+
+    os.environ['NOMINATIM_DATABASE_WEBUSER'] = 'nobody'
+
+    assert config.get_os_env()['NOMINATIM_DATABASE_WEBUSER'] == 'nobody'
+
+    del os.environ['NOMINATIM_DATABASE_WEBUSER']