Skip to content

Commit dbfdb74

Browse files
committed
add test Provider::ConfigExtended class
This adds create, update, etc to a subclass of Provider::Config so that we can improve code coverage in core.
1 parent d9a3cd4 commit dbfdb74

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

t/lib/Provider/ConfigExtended.pm

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package Provider::ConfigExtended;
2+
3+
use Carp qw(croak);
4+
use DateTime;
5+
use List::Util qw(first);
6+
use Moo;
7+
extends "Dancer2::Plugin::Auth::Extensible::Provider::Config";
8+
use namespace::clean;
9+
10+
sub create_user {
11+
my ( $self, %user ) = @_;
12+
13+
my $username = delete $user{username};
14+
croak "User already exists"
15+
if first { $_->{user} eq $username } @{ $self->users };
16+
17+
push @{ $self->users }, { user => $username };
18+
19+
$self->set_user_details( $username, %user );
20+
}
21+
22+
sub get_user_by_code {
23+
my ( $self, $code ) = @_;
24+
my $user = first { $_->{pw_reset_code} eq $code } @{ $self->users };
25+
return unless $user;
26+
return $user->{user};
27+
}
28+
29+
sub set_user_details {
30+
my ( $self, $username, %update ) = @_;
31+
my $user = first { $_->{user} eq $username } @{ $self->users };
32+
return unless $user;
33+
foreach my $key ( keys %update ) {
34+
$user->{$key} = $update{$key};
35+
}
36+
return $self->get_user_details( $user->{user} );
37+
}
38+
39+
sub set_user_password {
40+
my ( $self, $username, $password ) = @_;
41+
my $encrypted = $self->encrypt_password($password);
42+
$self->set_user_details( $username, pass => $encrypted );
43+
}
44+
45+
sub password_expired {
46+
my ( $self, $user ) = @_;
47+
my $expiry = $self->password_expiry_days or return 0;
48+
my $last_changed = $user->{pwchanged};
49+
return 1 unless $last_changed;
50+
51+
my $duration = $last_changed->delta_days( DateTime->now );
52+
$duration->in_units('days') > $expiry ? 1 : 0;
53+
}
54+
55+
1;

0 commit comments

Comments
 (0)