2 Test for loading dotenv configuration.
4 from pathlib import Path
9 from nominatim.config import Configuration
11 DEFCFG_DIR = Path(__file__) / '..' / '..' / '..' / 'settings'
13 def test_no_project_dir():
14 config = Configuration(None, DEFCFG_DIR)
16 assert config.DATABASE_WEBUSER == 'www-data'
19 def test_prefer_project_setting_over_default():
20 with tempfile.TemporaryDirectory() as project_dir:
21 with open(project_dir + '/.env', 'w') as envfile:
22 envfile.write('NOMINATIM_DATABASE_WEBUSER=apache\n')
24 config = Configuration(Path(project_dir), DEFCFG_DIR)
26 assert config.DATABASE_WEBUSER == 'apache'
29 def test_prefer_os_environ_over_project_setting(monkeypatch):
30 with tempfile.TemporaryDirectory() as project_dir:
31 with open(project_dir + '/.env', 'w') as envfile:
32 envfile.write('NOMINATIM_DATABASE_WEBUSER=apache\n')
34 monkeypatch.setenv('NOMINATIM_DATABASE_WEBUSER', 'nobody')
36 config = Configuration(Path(project_dir), DEFCFG_DIR)
38 assert config.DATABASE_WEBUSER == 'nobody'
41 def test_get_os_env_add_defaults(monkeypatch):
42 config = Configuration(None, DEFCFG_DIR)
44 monkeypatch.delenv('NOMINATIM_DATABASE_WEBUSER', raising=False)
46 assert config.get_os_env()['NOMINATIM_DATABASE_WEBUSER'] == 'www-data'
49 def test_get_os_env_prefer_os_environ(monkeypatch):
50 config = Configuration(None, DEFCFG_DIR)
52 monkeypatch.setenv('NOMINATIM_DATABASE_WEBUSER', 'nobody')
54 assert config.get_os_env()['NOMINATIM_DATABASE_WEBUSER'] == 'nobody'
57 def test_get_libpq_dsn_convert_default():
58 config = Configuration(None, DEFCFG_DIR)
60 assert config.get_libpq_dsn() == 'dbname=nominatim'
63 def test_get_libpq_dsn_convert_php(monkeypatch):
64 config = Configuration(None, DEFCFG_DIR)
66 monkeypatch.setenv('NOMINATIM_DATABASE_DSN',
67 'pgsql:dbname=gis;password=foo;host=localhost')
69 assert config.get_libpq_dsn() == 'dbname=gis password=foo host=localhost'
72 def test_get_libpq_dsn_convert_libpq(monkeypatch):
73 config = Configuration(None, DEFCFG_DIR)
75 monkeypatch.setenv('NOMINATIM_DATABASE_DSN',
76 'host=localhost dbname=gis password=foo')
78 assert config.get_libpq_dsn() == 'host=localhost dbname=gis password=foo'
81 @pytest.mark.parametrize("value,result",
82 [(x, True) for x in ('1', 'true', 'True', 'yes', 'YES')] +
83 [(x, False) for x in ('0', 'false', 'no', 'NO', 'x')])
84 def test_get_bool(monkeypatch, value, result):
85 config = Configuration(None, DEFCFG_DIR)
87 monkeypatch.setenv('NOMINATIM_FOOBAR', value)
89 assert config.get_bool('FOOBAR') == result
91 def test_get_bool_empty():
92 config = Configuration(None, DEFCFG_DIR)
94 assert config.DATABASE_MODULE_PATH == ''
95 assert config.get_bool('DATABASE_MODULE_PATH') == False