Files
Nominatim/test/python/test_config.py
Sarah Hoffmann b79c79fa73 add function to get a DSN for psycopg
Converts the PHP DSN syntax into psycopg syntax when necessary.
2021-01-18 15:43:27 +01:00

76 lines
2.3 KiB
Python

"""
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']
def test_get_libpq_dsn_convert_default():
config = Configuration(None, DEFCFG_DIR)
assert config.get_libpq_dsn() == 'dbname=nominatim'
def test_get_libpq_dsn_convert_php():
config = Configuration(None, DEFCFG_DIR)
os.environ['NOMINATIM_DATABASE_DSN'] = 'pgsql:dbname=gis;password=foo;host=localhost'
assert config.get_libpq_dsn() == 'dbname=gis password=foo host=localhost'
def test_get_libpq_dsn_convert_libpq():
config = Configuration(None, DEFCFG_DIR)
os.environ['NOMINATIM_DATABASE_DSN'] = 'host=localhost dbname=gis password=foo'
assert config.get_libpq_dsn() == 'host=localhost dbname=gis password=foo'