@@ -33,10 +33,10 @@ def teardown_method(self):
3333 [
3434 ("" , "user" , "pass" , "" , "" , "no_admin" ),
3535 ("" , "user1" , "pass1" , "" , "r00t" , "admin" ),
36- # ("", "", "", "postgres", "r00t", "only_admin"),
36+ ("" , "" , "" , "postgres" , "r00t" , "only_admin" ),
3737 ("-u 12345" , "user2" , "pass" , "" , "" , "no_admin_altuid" ),
3838 ("-u 12345" , "user3" , "pass1" , "" , "r00t" , "admin_altuid" ),
39- # ("-u 12345", "", "", "postgres", "r00t", "only_admin_altuid"),
39+ ("-u 12345" , "" , "" , "postgres" , "r00t" , "only_admin_altuid" ),
4040 ],
4141 )
4242 def test_run (
@@ -60,28 +60,24 @@ def test_run(
6060 POSTGRESQL_SHARED_BUFFERS = "64MB"
6161 expected_success = False
6262 expected_admin_success = False
63+ psql_user_arg = ""
64+ psql_pwd_arg = ""
65+ db_name_arg = ""
66+ admin_root_password_arg = ""
6367 if psql_user != "" :
6468 psql_user_arg = f"-e POSTGRESQL_USER={ psql_user } "
6569 expected_success = True
66- else :
67- psql_user_arg = ""
6870 if psql_password : # empty password is allowed
6971 psql_pwd_arg = f"-e POSTGRESQL_PASSWORD={ psql_password } "
70- else :
71- psql_pwd_arg = ""
72- if psql_database :
73- db_name = psql_database
74- else :
75- db_name = "db"
72+ if psql_user and psql_password :
73+ db_name_arg = "-e POSTGRESQL_DATABASE=db"
7674 if root_password == "r00t" :
7775 admin_root_password_arg = f"-e POSTGRESQL_ADMIN_PASSWORD={ root_password } "
7876 expected_admin_success = True
79- else :
80- admin_root_password_arg = ""
8177 docker_all_args = [
8278 psql_user_arg ,
8379 psql_pwd_arg ,
84- f"-e POSTGRESQL_DATABASE= { db_name } " ,
80+ db_name_arg ,
8581 admin_root_password_arg ,
8682 f"-e POSTGRESQL_MAX_CONNECTIONS={ POSTGRESQL_MAX_CONNECTIONS } " ,
8783 f"-e POSTGRESQL_MAX_PREPARED_TRANSACTIONS={ POSTGRESQL_MAX_PREPARED_TRANSACTIONS } " ,
@@ -115,30 +111,29 @@ def test_run(
115111 cmd = "psql --version" ,
116112 )
117113 assert VARS .VERSION in output
118- self .db_image .db_lib .assert_login_access (
119- container_ip = cip ,
120- username = psql_user ,
121- password = psql_password ,
122- expected_success = expected_success ,
123- )
124- self .db_image .db_lib .assert_login_access (
125- container_ip = cip ,
126- username = psql_user ,
127- password = f"{ psql_password } _foo" ,
128- expected_success = False ,
129- )
130- self .db_image .db_lib .assert_login_access (
131- container_ip = cip ,
132- username = "postgres" ,
133- password = root_password ,
134- expected_success = expected_admin_success ,
135- )
136- self .db_image .db_lib .assert_login_access (
137- container_ip = cip ,
138- username = "postgres" ,
139- password = f"{ root_password } _foo" ,
140- expected_success = False ,
141- )
114+ access_output = True
115+ if psql_database == "" :
116+ psql_database = "db"
117+ for user , pwd , ret_value in [
118+ (psql_user , psql_password , expected_success ),
119+ (psql_user , f"{ psql_password } _foo" , False ),
120+ ("postgres" , root_password , expected_admin_success ),
121+ ("postgres" , f"{ root_password } _foo" , False ),
122+ ]:
123+ test_assert = self .db_image .db_lib .assert_login_access (
124+ container_ip = cip ,
125+ username = user ,
126+ password = pwd ,
127+ expected_success = ret_value ,
128+ database = psql_database ,
129+ )
130+ if not test_assert :
131+ print (
132+ f"Login access failed for { user } :{ pwd } with expected success { ret_value } "
133+ )
134+ access_output = False
135+ break
136+ assert access_output , "Login access failed for above results"
142137 assert self .db_image .db_lib .assert_local_access (container_id = cid )
143138 output = PodmanCLIWrapper .podman_exec_shell_command (
144139 cid_file_name = cid ,
@@ -154,24 +149,30 @@ def test_run(
154149 assert re .search (word , output ), f"Word { word } not found in { output } "
155150 # test_postgresql
156151 if test_name == "admin" :
157- psql_user = "postgres"
158- psql_password = root_password
159- psql_database = "postgres"
160152 output = self .db_api .run_sql_command (
161153 container_ip = cip ,
162- username = psql_user ,
163- password = psql_password ,
154+ username = "postgres" ,
155+ password = root_password ,
164156 container_id = VARS .IMAGE_NAME ,
165- database = db_name ,
157+ database = "postgres" ,
166158 sql_cmd = "-At -c 'CREATE EXTENSION \" uuid-ossp\" ;'" ,
167159 expected_output = "CREATE EXTENSION" ,
168160 )
161+ if psql_password == "" :
162+ psql_password = root_password
163+
164+ self .database_test (cip , psql_user , psql_password , psql_database )
165+
166+ def database_test (self , cip , psql_user , psql_password , psql_database ):
167+ """
168+ Test PostgreSQL database creation.
169+ """
169170 output = self .db_api .run_sql_command (
170171 container_ip = cip ,
171172 username = psql_user ,
172173 password = psql_password ,
173174 container_id = VARS .IMAGE_NAME ,
174- database = db_name ,
175+ database = psql_database ,
175176 sql_cmd = '-At -c "CREATE TABLE tbl (a integer, b integer);"' ,
176177 expected_output = "CREATE TABLE" ,
177178 )
@@ -181,7 +182,7 @@ def test_run(
181182 username = psql_user ,
182183 password = psql_password ,
183184 container_id = VARS .IMAGE_NAME ,
184- database = db_name ,
185+ database = psql_database ,
185186 sql_cmd = [
186187 '-At -c "INSERT INTO tbl VALUES (1, 2);"' ,
187188 '-At -c "INSERT INTO tbl VALUES (3, 4);"' ,
@@ -194,7 +195,7 @@ def test_run(
194195 username = psql_user ,
195196 password = psql_password ,
196197 container_id = VARS .IMAGE_NAME ,
197- database = db_name ,
198+ database = psql_database ,
198199 sql_cmd = '-At -c "SELECT * FROM tbl;"' ,
199200 )
200201 words = [
@@ -209,7 +210,7 @@ def test_run(
209210 username = psql_user ,
210211 password = psql_password ,
211212 container_id = VARS .IMAGE_NAME ,
212- database = db_name ,
213+ database = psql_database ,
213214 sql_cmd = '-At -c "DROP TABLE tbl;"' ,
214215 expected_output = "DROP TABLE" ,
215216 )
0 commit comments