File Coverage

blib/lib/Net/OATH/Server/Lite/Model/User.pm
Criterion Covered Total %
statement 21 22 95.4
branch 5 6 83.3
condition 5 6 83.3
subroutine 6 6 100.0
pod 1 2 50.0
total 38 42 90.4


line stmt bran cond sub pod time code
1             package Net::OATH::Server::Lite::Model::User;
2 5     5   51374 use strict;
  5         9  
  5         157  
3 5     5   20 use warnings;
  5         7  
  5         125  
4              
5 5     5   392 use parent 'Class::Accessor::Fast';
  5         271  
  5         19  
6 5     5   16679 use Params::Validate qw(SCALAR);
  5         27311  
  5         1347  
7              
8             __PACKAGE__->mk_accessors(qw(
9             id
10             type
11             secret
12             algorithm
13             digits
14             counter
15             period
16             ));
17              
18             sub new {
19 9     9 1 12819 my $class = shift;
20 9 50       39 my @args = @_ == 1 ? %{$_[0]} : @_;
  0         0  
21 9         393 my %params = Params::Validate::validate_with(
22             params => \@args,
23             spec => {
24             id => {
25             type => SCALAR,
26             },
27             type => {
28             type => SCALAR,
29             default => q{totp},
30             optional => 1,
31             },
32             secret => {
33             type => SCALAR,
34             },
35             algorithm => {
36             type => SCALAR,
37             default => q{SHA1},
38             optional => 1,
39             },
40             digits => {
41             type => SCALAR,
42             default => 6,
43             optional => 1,
44             },
45             counter => {
46             type => SCALAR,
47             default => 0,
48             optional => 1,
49             },
50             period => {
51             type => SCALAR,
52             default => 30,
53             optional => 1,
54             },
55             },
56             allow_extra => 0,
57             );
58              
59 9         81 my $self = bless \%params, $class;
60            
61 9         26 return $self;
62             }
63              
64             sub is_valid {
65 9     9 0 343 my $self = shift;
66              
67 9 100 100     21 return unless ($self->type eq q{totp} || $self->type eq q{hotp});
68              
69             # TODO: Support SHA256, SHA512
70 6 100 66     82 return unless ($self->algorithm eq q{SHA1} || $self->algorithm eq q{MD5});
71              
72             # TODO: Validation other params
73              
74 5         41 return 1;
75             }
76              
77             1;