From ed6680897e5087fac2b1b8bd78d83ce8f5ce10ac Mon Sep 17 00:00:00 2001 From: Gurjeet Singh Date: Tue, 10 Oct 2023 02:07:57 -0700 Subject: [PATCH v5 9/9] Added TAP tests to prove that a role can use two passwords to login --- src/test/authentication/t/001_password.pl | 52 +++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/test/authentication/t/001_password.pl b/src/test/authentication/t/001_password.pl index 87e180af3d..25ebcc91e1 100644 --- a/src/test/authentication/t/001_password.pl +++ b/src/test/authentication/t/001_password.pl @@ -694,4 +694,56 @@ test_conn( qr/connection authenticated: identity="regress_not_member" method=scram-sha-256/ ]); +# Create roles, and assign two passwords for password rollover tests +reset_pg_hba($node, 'all', 'all', 'trust'); +$node->safe_psql( + 'postgres', + qq{set password_encryption = 'scram-sha-256'; +CREATE ROLE regress_password_rollover_scram LOGIN PASSWORD 'scram'; +ALTER ROLE regress_password_rollover_scram ADD SECOND PASSWORD 'scram2'; +set password_encryption = 'md5'; +CREATE ROLE regress_password_rollover_md5 LOGIN PASSWORD 'md5'; +ALTER ROLE regress_password_rollover_md5 ADD SECOND PASSWORD 'md5_2'; +}); + +reset_pg_hba($node, 'all', 'all', 'scram-sha-256'); +$ENV{"PGPASSWORD"} = 'scram'; +test_conn( + $node, + 'user=regress_password_rollover_scram', + 'scram-sha-256', + 0, + log_like => [ + qr/connection authenticated: identity="regress_password_rollover_scram" method=scram-sha-256/ + ]); +$ENV{"PGPASSWORD"} = 'scram2'; +test_conn( + $node, + 'user=regress_password_rollover_scram', + 'scram-sha-256', + 0, + log_like => [ + qr/connection authenticated: identity="regress_password_rollover_scram" method=scram-sha-256/ + ]); + +reset_pg_hba($node, 'all', 'all', 'md5'); +$ENV{"PGPASSWORD"} = 'md5'; +test_conn( + $node, + 'user=regress_password_rollover_md5', + 'md5', + 0, + log_like => [ + qr/connection authenticated: identity="regress_password_rollover_md5" method=md5/ + ]); +$ENV{"PGPASSWORD"} = 'md5_2'; +test_conn( + $node, + 'user=regress_password_rollover_md5', + 'md5', + 0, + log_like => [ + qr/connection authenticated: identity="regress_password_rollover_md5" method=md5/ + ]); + done_testing(); -- 2.25.1