Database-Async-Engine-PostgreSQL
view release on metacpan or search on metacpan
t/password.t view on Meta::CPAN
$dir
});
path($dir.'/.pgpass')->spew_utf8([
"*:*:*:*:home\n"
]);
unless ($^O eq 'MSWin32') {
$log->clear;
$eng->database_password;
$log->contains_ok(qr/permissions should be u=rw \(0600\) or less/, 'permission warning');
chmod 0600, $fh->filename;
}
is($eng->database_password, 'pgpass', 'PGPASSFILE wins over ~/.pgpass');
done_testing;
};
subtest 'parsing' => sub {
my $eng = Database::Async::Engine::PostgreSQL->new(
uri=>'postgresql://USER@HOST:9876/DB'
);
t/password.t view on Meta::CPAN
local $ENV{PGPASSFILE} = '';
my $dir = File::Temp::tempdir(CLEANUP => 1);
my $module = Test::MockModule->new('File::HomeDir');
$module->redefine(my_home => sub {
$dir
});
path($dir.'/.pgpass')->spew_utf8([
"*:*:*:*:val\\id:\n"
]);
chmod 0600, $dir.'/.pgpass' unless $^O eq 'MSWin32';
is($eng->database_password, 'valid', 'backslash');
for (my $i=1; $i<16; $i++) {
path($dir.'/.pgpass')->spew_utf8([
join(':', ($i & 8 ? 'HOST' : '*',
$i & 4 ? '9876' : '*',
$i & 2 ? 'DB' : '*',
$i & 1 ? 'USER' : '*',
"valid\n")),
"HOST:9876:DB:USER:invalid\n",
"*:*:*:*:invalid\n",
]);
chmod 0600, $dir.'/.pgpass' unless $^O eq 'MSWin32';
is($eng->database_password, 'valid', "first match $i wins");
}
done_testing;
};
done_testing;
( run in 0.389 second using v1.01-cache-2.11-cpan-8d75d55dd25 )