From: Japin Li Date: Fri, 9 Jan 2026 15:04:45 +0800 Subject: [PATCH v10 2/2] Add TAP test for password_expire_warning --- .../authentication/t/008_password_expire.pl | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/test/authentication/t/008_password_expire.pl diff --git a/src/test/authentication/t/008_password_expire.pl b/src/test/authentication/t/008_password_expire.pl new file mode 100644 index 00000000000..fdeae1b84d1 --- /dev/null +++ b/src/test/authentication/t/008_password_expire.pl @@ -0,0 +1,50 @@ +# Copyright (c) 2026, PostgreSQL Global Development Group + +# Test for authentication password expiration warning message. + +use strict; +use warnings FATAL => 'all'; +use Time::Piece; +use Time::Seconds; +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +use Test::More; + +my $node = PostgreSQL::Test::Cluster->new('main'); +$node->init; +$node->append_conf('postgresql.conf', "password_expire_warning = '1d'"); +$node->start; + +my $dt = localtime; # Current datetime +$dt += ONE_DAY; # Add 1 day +my $valid_until = $dt->strftime("%Y-%m-%d %H:%M:%S"); +$node->safe_psql('postgres', + "CREATE USER test_user1 WITH VALID UNTIL '$valid_until' PASSWORD '12345678'"); + +$dt += ONE_DAY; +$valid_until = $dt->strftime("%Y-%m-%d %H:%M:%S"); +$node->safe_psql('postgres', + "CREATE USER test_user2 WITH VALID UNTIL '$valid_until' PASSWORD '12345678'"); + +# Ensure subsequent connections authenticate with the password. +unlink($node->data_dir . '/pg_hba.conf'); +$node->append_conf('pg_hba.conf', "local all all scram-sha-256"); +$node->reload; + +$ENV{"PGPASSWORD"} = '12345678'; + +$node->connect_ok('user=test_user1 dbname=postgres', + qq(emit password expiration warning), + expected_stderr => + qr/your password will expire in 0 day\(s\)/); + +$node->connect_ok('user=test_user2 dbname=postgres', + qq(no password expiration warning is emitted)); + +$node->append_conf('postgresql.conf', "password_expire_warning = '0'"); +$node->reload; + +$node->connect_ok('user=test_user1 dbname=postgres', + qq(disable password expire warning)); + +done_testing(); -- 2.43.0 --=-=-=--