File Coverage

blib/lib/PlugAuth/Plugin/Test.pm
Criterion Covered Total %
statement 77 77 100.0
branch 5 6 83.3
condition n/a
subroutine 30 30 100.0
pod 0 21 0.0
total 112 134 83.5


line stmt bran cond sub pod time code
1             package PlugAuth::Plugin::Test;
2              
3             # ABSTRACT: Test Plugin server
4             our $VERSION = '0.38'; # VERSION
5              
6 6     6   2489 use strict;
  6         20  
  6         213  
7 6     6   41 use warnings;
  6         17  
  6         206  
8 6     6   1208 use PlugAuth::Plugin::FlatAuth;
  6         24  
  6         247  
9 6     6   2080 use PlugAuth::Plugin::FlatAuthz;
  6         20  
  6         203  
10 6     6   39 use Role::Tiny::With;
  6         11  
  6         299  
11 6     6   35 use Log::Log4perl qw( :easy );
  6         13  
  6         63  
12 6     6   5453 use Fcntl qw( :flock );
  6         13  
  6         5554  
13              
14             with 'PlugAuth::Role::Plugin';
15             with 'PlugAuth::Role::Refresh';
16             with 'PlugAuth::Role::Auth';
17             with 'PlugAuth::Role::Authz';
18              
19             sub init
20             {
21 5     5 0 14 my($self) = @_;
22             $self->app->routes->route('/test/setup/reset')->post(sub {
23            
24 1     1   6782 foreach my $filename (map { $self->global_config->{$_} } qw( group_file resource_file user_file ))
  3         12  
25             {
26 3         112 open my $fh, '+<', $filename;
27 3         10 eval { flock $fh, LOCK_EX };
  3         15  
28 3 50       9 WARN "cannot lock $filename - $@" if $@;
29 3         7 seek $fh, 0, 0;
30 3         84 truncate $fh, 0;
31 3         21 close $fh;
32 3         24 PlugAuth::Role::Flat->mark_changed($filename);
33             }
34            
35 1         7 $self->real_auth->refresh;
36 1         5 $self->real_authz->refresh;
37              
38 1         8 shift->render(text => 'ok');
39 5         24 });
40             $self->app->routes->route('/test/setup/basic')->post(sub {
41 2     2   22950 my $auth = $self->real_auth;
42 2         21 $auth->create_user('primus', 'spark');
43 2         20 $auth->create_user('optimus', 'matrix');
44 2         11 $auth->refresh;
45            
46 2         25 my $authz = $self->real_authz;
47 2         18 $authz->create_group('admin', 'primus');
48 2         11 $authz->refresh;
49 2         20 $authz->grant('admin', 'accounts', '/');
50 2         14 $authz->grant('primus', 'accounts', '/');
51            
52 2         45 shift->render(text => 'ok');
53 5         2515 });
54             }
55              
56             sub refresh
57             {
58 33     33 0 113 my($self) = @_;
59 33         183 $self->real_auth->refresh;
60 33         204 $self->real_authz->refresh;
61 33         142 1;
62             }
63              
64 11     11 0 53 sub check_credentials { shift->real_auth->check_credentials(@_) }
65 2     2 0 9 sub create_user { shift->real_auth->create_user(@_) }
66 1     1 0 6 sub change_password { shift->real_auth->change_password(@_) }
67 1     1 0 5 sub delete_user { shift->real_auth->delete_user(@_) }
68             sub all_users { shift->real_auth->all_users }
69 35     35 0 136 sub can_user_action_resource { shift->real_authz->can_user_action_resource(@_) }
70              
71 1     1 0 7 sub match_resources { shift->real_authz->match_resources(@_) }
72 1     1 0 30 sub host_has_tag { shift->real_authz->host_has_tag(@_) }
73 3     3 0 13 sub actions { shift->real_authz->actions(@_) }
74 13     13 0 48 sub groups_for_user { shift->real_authz->groups_for_user(@_) }
75 4     4 0 25 sub all_groups { shift->real_authz->all_groups(@_) }
76 6     6 0 47 sub users_in_group { shift->real_authz->users_in_group(@_) }
77              
78 3     3 0 16 sub create_group { shift->real_authz->create_group(@_) }
79 1     1 0 6 sub delete_group { shift->real_authz->delete_group(@_) }
80 4     4 0 19 sub grant { shift->real_authz->grant(@_) }
81 3     3 0 10 sub revoke { shift->real_authz->revoke(@_) }
82 2     2 0 13 sub granted { shift->real_authz->granted(@_) }
83 1     1 0 6 sub update_group { shift->real_authz->update_group(@_) }
84              
85             sub real_auth
86             {
87 69     69 0 207 my($self) = @_;
88            
89 69 100       374 unless($self->{real_auth})
90             {
91 4         45 my $auth = $self->{real_auth} = new PlugAuth::Plugin::FlatAuth(
92             Clustericious::Config->new({}),
93             Clustericious::Config->new({}),
94             $self->app
95             );
96             }
97            
98 69         915 return $self->{real_auth};
99             }
100              
101             sub real_authz
102             {
103 113     113 0 526 my($self) = @_;
104            
105 113 100       436 unless($self->{real_authz})
106             {
107 4         23 my $auth = $self->real_auth;
108 4         33 my $authz = $self->{real_authz} = new PlugAuth::Plugin::FlatAuthz(
109             Clustericious::Config->new({}),
110             Clustericious::Config->new({}),
111             $self->app
112             );
113             }
114            
115 113         749 return $self->{real_authz};
116             }
117              
118             1;
119              
120             __END__
121              
122             =pod
123              
124             =encoding UTF-8
125              
126             =head1 NAME
127              
128             PlugAuth::Plugin::Test - Test Plugin server
129              
130             =head1 VERSION
131              
132             version 0.38
133              
134             =head1 AUTHOR
135              
136             Graham Ollis <gollis@sesda3.com>
137              
138             =head1 COPYRIGHT AND LICENSE
139              
140             This software is copyright (c) 2012 by NASA GSFC.
141              
142             This is free software; you can redistribute it and/or modify it under
143             the same terms as the Perl 5 programming language system itself.
144              
145             =cut