From eb3b78985596a351ad98d09afeee960055bb53eb Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Fri, 15 Jan 2021 14:42:03 +0100 Subject: [PATCH] add initial pytest test for Configuration --- test/python/conftest.py | 6 ++++ test/python/test_config.py | 56 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 test/python/conftest.py create mode 100644 test/python/test_config.py diff --git a/test/python/conftest.py b/test/python/conftest.py new file mode 100644 index 00000000..26bbb397 --- /dev/null +++ b/test/python/conftest.py @@ -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 index 00000000..03e4a800 --- /dev/null +++ b/test/python/test_config.py @@ -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']