Make SSL tests more robust
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 29 Jan 2019 09:29:07 +0000 (10:29 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 29 Jan 2019 12:04:35 +0000 (13:04 +0100)
Someone running these test could have key or certificate files in
their ~/.postgresql/, which would interfere with the tests.  The way
to override that is to specify sslcert=invalid and/or
sslrootcert=invalid if no actual certificate is used for a particular
test.  Document that and fix up one test that had a risk of failing in
these circumstances.

Discussion: https://www.postgresql.org/message-id/flat/398754d8-6bb5-c5cf-e7b8-22e5f0983caf@2ndquadrant.com/

src/test/ssl/ServerSetup.pm
src/test/ssl/t/002_scram.pl

index 3b451a360ad3998cebe35bdda89da1f3dbc7fe9d..5acba52310f104febb4fe5722d8fcf7b6218931b 100644 (file)
 # The server is configured to only accept connections from localhost. If you
 # want to run the client from another host, you'll have to configure that
 # manually.
+#
+# Note: Someone running these test could have key or certificate files
+# in their ~/.postgresql/, which would interfere with the tests.  The
+# way to override that is to specify sslcert=invalid and/or
+# sslrootcert=invalid if no actual certificate is used for a
+# particular test.  libpq will ignore specifications that name
+# nonexisting files.  (sslkey and sslcrl do not need to specified
+# explicitly because an invalid sslcert or sslrootcert, respectively,
+# causes those to be ignored.)
+
 package ServerSetup;
 
 use strict;
index b460a7fa8ae5aa4f314c702fa376696819a797d1..d45b9c5db3ad8d45452c99241fb94795d9df5629 100644 (file)
@@ -39,7 +39,7 @@ configure_test_server_for_ssl($node, $SERVERHOSTADDR, "scram-sha-256",
 switch_server_cert($node, 'server-cn-only');
 $ENV{PGPASSWORD} = "pass";
 $common_connstr =
-  "user=ssltestuser dbname=trustdb sslmode=require hostaddr=$SERVERHOSTADDR";
+  "user=ssltestuser dbname=trustdb sslmode=require sslcert=invalid sslrootcert=invalid hostaddr=$SERVERHOSTADDR";
 
 # Default settings
 test_connect_ok($common_connstr, '',