|
|
@ -101,6 +101,32 @@ my $res = $node->safe_psql('postgres', |
|
|
|
WHERE rolname = 'scram_role_iter'"); |
|
|
|
WHERE rolname = 'scram_role_iter'"); |
|
|
|
is($res, 'SCRAM-SHA-256$1024:', 'scram_iterations in server side ROLE'); |
|
|
|
is($res, 'SCRAM-SHA-256$1024:', 'scram_iterations in server side ROLE'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# If we don't have IO::Pty, forget it, because IPC::Run depends on that |
|
|
|
|
|
|
|
# to support pty connections |
|
|
|
|
|
|
|
SKIP: |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
skip "IO::Pty required", 1 unless eval { require IO::Pty; }; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Alter the password on the created role using \password in psql to ensure |
|
|
|
|
|
|
|
# that clientside password changes use the scram_iterations value when |
|
|
|
|
|
|
|
# calculating SCRAM secrets. |
|
|
|
|
|
|
|
my $session = $node->interactive_psql('postgres'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$session->set_query_timer_restart(); |
|
|
|
|
|
|
|
$session->query("SET password_encryption='scram-sha-256';"); |
|
|
|
|
|
|
|
$session->query("SET scram_iterations=42;"); |
|
|
|
|
|
|
|
$session->query_until(qr/Enter new password/, "\\password scram_role_iter\n"); |
|
|
|
|
|
|
|
$session->query_until(qr/Enter it again/, "pass\n"); |
|
|
|
|
|
|
|
$session->query_until(qr/postgres=# /, "pass\n"); |
|
|
|
|
|
|
|
$session->quit; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$res = $node->safe_psql('postgres', |
|
|
|
|
|
|
|
"SELECT substr(rolpassword,1,17) |
|
|
|
|
|
|
|
FROM pg_authid |
|
|
|
|
|
|
|
WHERE rolname = 'scram_role_iter'"); |
|
|
|
|
|
|
|
is($res, 'SCRAM-SHA-256$42:', 'scram_iterations in psql \password command'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# Create a database to test regular expression. |
|
|
|
# Create a database to test regular expression. |
|
|
|
$node->safe_psql('postgres', "CREATE database regex_testdb;"); |
|
|
|
$node->safe_psql('postgres', "CREATE database regex_testdb;"); |
|
|
|
|
|
|
|
|
|
|
|