Concierge-Auth
view release on metacpan or search on metacpan
t/06-io-failures.t view on Meta::CPAN
like( $result->{message}, qr/Cannot open auth file/, 'message reflects open failure' );
};
subtest 'authenticate - flock failure' => sub {
my $file = "$dir/auth_flock.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
local $MockBuiltins::FAIL_FLOCK = 1;
my $result = $auth->authenticate('alice', 'password123');
ok( !$result->{success}, 'authenticate fails when file cannot be locked' );
like( $result->{message}, qr/Cannot lock file for reading/, 'message reflects lock failure' );
};
# ========== is_id_known() ==========
subtest 'is_id_known - open failure' => sub {
my $file = "$dir/known_open.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
t/06-io-failures.t view on Meta::CPAN
like( $result->{message}, qr/Cannot open auth file/, 'message reflects open failure' );
};
subtest 'is_id_known - flock failure' => sub {
my $file = "$dir/known_flock.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
local $MockBuiltins::FAIL_FLOCK = 1;
my $result = $auth->is_id_known('alice');
ok( !$result->{success}, 'is_id_known fails when file cannot be locked' );
like( $result->{message}, qr/Cannot lock file for reading/, 'message reflects lock failure' );
};
subtest 'is_id_known - pfile set but file missing' => sub {
my $file = "$dir/known_missing.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
unlink $file;
my $result = $auth->is_id_known('alice');
ok( $result->{success}, 'still succeeds (no I/O error) when file has vanished' );
t/06-io-failures.t view on Meta::CPAN
like( $result->{message}, qr/Cannot open file/, 'message reflects open failure' );
};
subtest 'change_credentials - flock failure' => sub {
my $file = "$dir/change_flock.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
local $MockBuiltins::FAIL_FLOCK = 1;
my $result = $auth->change_credentials('alice', 'newpassword456');
ok( !$result->{success}, 'change_credentials fails when file cannot be locked' );
like( $result->{message}, qr/Cannot lock file/, 'message reflects lock failure' );
};
# ========== revoke() ==========
subtest 'revoke - pfile set but file missing' => sub {
my $file = "$dir/revoke_missing.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
unlink $file;
t/06-io-failures.t view on Meta::CPAN
like( $result->{message}, qr/Cannot open file/, 'message reflects open failure' );
};
subtest 'revoke - flock failure' => sub {
my $file = "$dir/revoke_flock.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
local $MockBuiltins::FAIL_FLOCK = 1;
my $result = $auth->revoke('alice');
ok( !$result->{success}, 'revoke fails when file cannot be locked' );
like( $result->{message}, qr/Cannot lock file/, 'message reflects lock failure' );
};
subtest 'revoke - preserves unrelated records' => sub {
my $file = "$dir/revoke_preserve.pwd";
my $auth = Concierge::Auth::Pwd->new( file => $file );
$auth->enroll('alice', 'password123');
$auth->enroll('bob', 'password456');
my $result = $auth->revoke('alice');
( run in 0.801 second using v1.01-cache-2.11-cpan-800906f7e73 )