Skip to content

Commit d596dbc

Browse files
committed
Do not ignore SQL failures and check that we still work with previous data when changing password
Fix also postgresql_cmd function that should not ignore SQL errors (thus using ON_ERROR_STOP option now) and was often called with an interactive input using <<< but podman run is run in non-interactive mode, resulting in the SQL commands to not be printed, so checking them later did not work and errors are not visible. Using -c option solves this. Function test_postgresql was called with a parameter that was not used anywhere. This function used CREATE EXTENSION to test proper PostgreSQL functionality, that only admin have permissions for. So, the parameter of test_postgresql function was changed to have a useful meaning. The meaning is that only if the parameter is "admin", the CREATE EXTENSION statement is run to not see "Not enough permissions" error when the contianer is run as a normal user.
1 parent 62a0e88 commit d596dbc

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

test/run_test

+22-13
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ function get_ip_from_cid() {
107107
}
108108

109109
function postgresql_cmd() {
110-
docker run --rm -e PGPASSWORD="$PASS" "$IMAGE_NAME" psql "postgresql://$PGUSER@$CONTAINER_IP:5432/${DB-db}" "$@"
110+
docker run --rm -e PGPASSWORD="$PASS" "$IMAGE_NAME" psql -v ON_ERROR_STOP=1 "postgresql://$PGUSER@$CONTAINER_IP:5432/${DB-db}" "$@"
111111
}
112112

113113
function test_connection() {
@@ -121,9 +121,9 @@ function test_connection() {
121121
# Don't let the code come here if neither user nor admin is able to
122122
# connect.
123123
if [ -v PGUSER ] && [ -v PASS ]; then
124-
CONTAINER_IP=$ip postgresql_cmd <<< "SELECT 1;"
124+
CONTAINER_IP=$ip postgresql_cmd -At -c "SELECT 1;"
125125
else
126-
PGUSER=postgres PASS=$ADMIN_PASS CONTAINER_IP=$ip DB=postgres postgresql_cmd <<< "SELECT 1;"
126+
PGUSER=postgres PASS=$ADMIN_PASS CONTAINER_IP=$ip DB=postgres postgresql_cmd -At -c "SELECT 1;"
127127
fi
128128
status=$?
129129
if [ $status -eq 0 ]; then
@@ -137,14 +137,19 @@ function test_connection() {
137137

138138
function test_postgresql() {
139139
local ret=0
140+
local user=${1:-user}
140141
echo " Testing PostgreSQL"
141-
postgresql_cmd <<< "CREATE EXTENSION 'uuid-ossp';" || ret=1 # to test contrib package
142-
postgresql_cmd <<< "CREATE TABLE tbl (col1 VARCHAR(20), col2 VARCHAR(20));" || ret=2
143-
postgresql_cmd <<< "INSERT INTO tbl VALUES ('foo1', 'bar1');" || ret=3
144-
postgresql_cmd <<< "INSERT INTO tbl VALUES ('foo2', 'bar2');" || ret=4
145-
postgresql_cmd <<< "INSERT INTO tbl VALUES ('foo3', 'bar3');" || ret=5
146-
postgresql_cmd <<< "SELECT * FROM tbl;" || ret=6
147-
#postgresql_cmd <<< "DROP TABLE tbl;"
142+
# test contrib only when having admin privileges
143+
if [ "$user" == "admin" ] ; then
144+
postgresql_cmd -At -c "CREATE EXTENSION \"uuid-ossp\";" || ret=1 # to test contrib package
145+
fi
146+
postgresql_cmd -At -c "CREATE TABLE tbl (col1 VARCHAR(20), col2 VARCHAR(20));" || ret=2
147+
postgresql_cmd -At -c "INSERT INTO tbl VALUES ('foo1', 'bar1');" || ret=3
148+
postgresql_cmd -At -c "INSERT INTO tbl VALUES ('foo2', 'bar2');" || ret=4
149+
postgresql_cmd -At -c "INSERT INTO tbl VALUES ('foo3', 'bar3');" || ret=5
150+
postgresql_cmd -At -c "SELECT * FROM tbl;" || ret=6
151+
# not droping table, other tests depend on having it created after this function is run
152+
#postgresql_cmd -At -c "DROP TABLE tbl;"
148153
if [ $ret -eq 0 ]; then
149154
echo " Success!"
150155
fi
@@ -195,7 +200,7 @@ function assert_login_access() {
195200

196201
echo "testing login as $PGUSER:$PASS; should_success=$success"
197202

198-
if postgresql_cmd <<<'SELECT 1;' ; then
203+
if postgresql_cmd -At -c 'SELECT 1;' ; then
199204
if $success ; then
200205
echo " $PGUSER($PASS) access granted as expected"
201206
return
@@ -422,11 +427,11 @@ function run_tests() {
422427
run_configuration_tests $name || ret=8
423428

424429
if $user_login; then
425-
test_postgresql $name || ret=9
430+
test_postgresql || ret=9
426431
fi
427432

428433
if $admin_login; then
429-
DB=postgres PGUSER=postgres PASS=$ADMIN_PASS test_postgresql $name || ret=10
434+
DB=postgres PGUSER=postgres PASS=$ADMIN_PASS test_postgresql admin || ret=10
430435
fi
431436
if [ $ret -eq 0 ]; then
432437
echo " Success!"
@@ -631,6 +636,7 @@ $volume_options
631636

632637
assert_login_access ${user} ${password} true || ret=4
633638
assert_login_access 'postgres' ${admin_password} true || ret=5
639+
test_postgresql || ret 5
634640

635641
echo " Changing passwords"
636642

@@ -662,6 +668,9 @@ $volume_options
662668
assert_login_access 'postgres' "NEW_${admin_password}" true || ret=10
663669
assert_login_access 'postgres' ${admin_password} false || ret=11
664670

671+
# check that we still work with the original volume
672+
postgresql_cmd -At -c "SELECT * FROM tbl;" | grep bar3 || ret=12
673+
665674
if [ $ret -eq 0 ]; then
666675
echo " Success!"
667676
fi

0 commit comments

Comments
 (0)