@@ -299,6 +299,48 @@ def test_certs_falsy_lan(self):
299
299
with self .assertRaises (ProcessExecutionError ):
300
300
self ._check_password_auth ("example.localdomain" )
301
301
302
+ def test_hba_extra_rules_added (self ):
303
+ """Test that HBA_EXTRA_RULES lines are added to pg_hba.conf."""
304
+ if "9.6" in self .image :
305
+ self .skipTest ("HBA_EXTRA_RULES not supported in PostgreSQL 9.6" )
306
+ # Define custom HBA rules
307
+ hba_extra_rules = [
308
+ "host test_db custom_user 0.0.0.0/0 trust" ,
309
+ "hostssl all all 192.168.0.0/16 md5" ,
310
+ ]
311
+
312
+ # Start the Postgres container with HBA_EXTRA_RULES
313
+ self .postgres_container = docker (
314
+ "run" ,
315
+ "-d" ,
316
+ "--name" ,
317
+ "postgres_test_hba_extra_rules" ,
318
+ "--network" ,
319
+ "lan" ,
320
+ "-e" ,
321
+ "POSTGRES_DB=test_db" ,
322
+ "-e" ,
323
+ "POSTGRES_USER=test_user" ,
324
+ "-e" ,
325
+ "POSTGRES_PASSWORD=test_password" ,
326
+ "-e" ,
327
+ "HBA_EXTRA_RULES=" + json .dumps (hba_extra_rules ),
328
+ CONF_EXTRA ,
329
+ self .image ,
330
+ ).strip ()
331
+
332
+ # Give the container some time to initialize
333
+ time .sleep (10 )
334
+
335
+ # Read the pg_hba.conf file content from the container
336
+ hba_conf = docker (
337
+ "exec" , self .postgres_container , "cat" , "/etc/postgres/pg_hba.conf"
338
+ ).strip ()
339
+
340
+ # Check that each rule in hba_extra_rules is present in the file
341
+ for rule in hba_extra_rules :
342
+ self .assertIn (rule , hba_conf )
343
+
302
344
303
345
if __name__ == "__main__" :
304
346
unittest .main ()
0 commit comments