@@ -27,7 +27,7 @@ def conditional_mock_open(*args, **kwargs):
2727
2828def test_valid_config (mocker ):
2929 mock_config = """
30- name: "some app"
30+ name: "some- app"
3131 language: "python"
3232 runtimeConfig:
3333 start:
@@ -51,7 +51,7 @@ def test_valid_config(mocker):
5151 )
5252
5353 configFile = load_config (mock_filename )
54- assert configFile ["name" ] == "some app"
54+ assert configFile ["name" ] == "some- app"
5555 assert configFile ["language" ] == "python"
5656 assert configFile ["database" ]["hostname" ] == "some host"
5757 assert configFile ["database" ]["port" ] == 1234
@@ -68,11 +68,34 @@ def test_valid_config(mocker):
6868 assert "bob" not in os .environ
6969
7070
71- def test_config_missing_params (mocker ):
71+ def test_valid_config_without_appdbname (mocker ):
7272 mock_config = """
73- name: "some app"
73+ name: "some-app"
74+ language: "python"
75+ runtimeConfig:
76+ start:
77+ - "python3 main.py"
78+ admin_port: 8001
7479 database:
7580 hostname: 'some host'
81+ port: 1234
82+ username: 'some user'
83+ password: ${PGPASSWORD}
84+ connectionTimeoutMillis: 3000
85+ """
86+ os .environ ["BARBAR" ] = "FOOFOO"
87+ mocker .patch (
88+ "builtins.open" , side_effect = generate_mock_open (mock_filename , mock_config )
89+ )
90+
91+ configFile = load_config (mock_filename )
92+ assert configFile ["database" ]["app_db_name" ] == "some_app"
93+
94+
95+ def test_config_missing_params (mocker ):
96+ mock_config = """
97+ name: "some-app"
98+ database:
7699 port: 1234
77100 username: 'some user'
78101 password: abc123
@@ -85,12 +108,12 @@ def test_config_missing_params(mocker):
85108 with pytest .raises (DBOSInitializationError ) as exc_info :
86109 load_config (mock_filename )
87110
88- assert "'app_db_name ' is a required property" in str (exc_info .value )
111+ assert "'hostname ' is a required property" in str (exc_info .value )
89112
90113
91114def test_config_extra_params (mocker ):
92115 mock_config = """
93- name: "some app"
116+ name: "some- app"
94117 database:
95118 hostname: 'some host'
96119 port: 1234
@@ -136,7 +159,7 @@ def test_config_missing_name(mocker):
136159
137160def test_config_missing_language (mocker ):
138161 mock_config = """
139- name: "some app"
162+ name: "some- app"
140163 database:
141164 hostname: 'some host'
142165 port: 1234
@@ -157,7 +180,7 @@ def test_config_missing_language(mocker):
157180
158181def test_config_bad_language (mocker ):
159182 mock_config = """
160- name: "some app"
183+ name: "some- app"
161184 language: typescript
162185 database:
163186 hostname: 'some host'
@@ -177,10 +200,35 @@ def test_config_bad_language(mocker):
177200 assert "invalid language" in str (exc_info .value )
178201
179202
180- def test_config_no_start (mocker ):
203+ def test_config_bad_name (mocker ):
181204 mock_config = """
182205 name: "some app"
183206 language: python
207+ runtimeConfig:
208+ start:
209+ - "python3 main.py"
210+ database:
211+ hostname: 'some host'
212+ port: 1234
213+ username: 'some user'
214+ password: abc123
215+ app_db_name: 'some db'
216+ connectionTimeoutMillis: 3000
217+ """
218+ mocker .patch (
219+ "builtins.open" , side_effect = generate_mock_open (mock_filename , mock_config )
220+ )
221+
222+ with pytest .raises (DBOSInitializationError ) as exc_info :
223+ load_config (mock_filename )
224+
225+ assert "Invalid app name" in str (exc_info .value )
226+
227+
228+ def test_config_no_start (mocker ):
229+ mock_config = """
230+ name: "some-app"
231+ language: python
184232 database:
185233 hostname: 'some host'
186234 port: 1234
@@ -201,7 +249,7 @@ def test_config_no_start(mocker):
201249
202250def test_local_config (mocker ):
203251 mock_config = """
204- name: "some app"
252+ name: "some- app"
205253 language: "python"
206254 runtimeConfig:
207255 start:
@@ -222,7 +270,7 @@ def test_local_config(mocker):
222270 )
223271
224272 configFile = load_config (mock_filename )
225- assert configFile ["name" ] == "some app"
273+ assert configFile ["name" ] == "some- app"
226274 assert configFile ["database" ]["local_suffix" ] == True
227275 assert configFile ["language" ] == "python"
228276 assert configFile ["database" ]["hostname" ] == "some host"
@@ -231,3 +279,36 @@ def test_local_config(mocker):
231279 assert configFile ["database" ]["password" ] == os .environ ["PGPASSWORD" ]
232280 assert configFile ["database" ]["app_db_name" ] == "some_db_local"
233281 assert configFile ["database" ]["connectionTimeoutMillis" ] == 3000
282+
283+
284+ def test_local_config_without_name (mocker ):
285+ mock_config = """
286+ name: "some-app"
287+ language: "python"
288+ runtimeConfig:
289+ start:
290+ - "python3 main.py"
291+ admin_port: 8001
292+ database:
293+ hostname: 'some host'
294+ port: 1234
295+ username: 'some user'
296+ password: ${PGPASSWORD}
297+ connectionTimeoutMillis: 3000
298+ local_suffix: true
299+ """
300+ os .environ ["BARBAR" ] = "FOOFOO"
301+ mocker .patch (
302+ "builtins.open" , side_effect = generate_mock_open (mock_filename , mock_config )
303+ )
304+
305+ configFile = load_config (mock_filename )
306+ assert configFile ["name" ] == "some-app"
307+ assert configFile ["database" ]["local_suffix" ] == True
308+ assert configFile ["language" ] == "python"
309+ assert configFile ["database" ]["hostname" ] == "some host"
310+ assert configFile ["database" ]["port" ] == 1234
311+ assert configFile ["database" ]["username" ] == "some user"
312+ assert configFile ["database" ]["password" ] == os .environ ["PGPASSWORD" ]
313+ assert configFile ["database" ]["app_db_name" ] == "some_app_local"
314+ assert configFile ["database" ]["connectionTimeoutMillis" ] == 3000
0 commit comments