diff options
| -rw-r--r-- | perl/lib/Wallet/Report.pm | 38 | ||||
| -rwxr-xr-x | perl/t/general/report.t | 26 | ||||
| -rwxr-xr-x | server/wallet-report | 16 | 
3 files changed, 79 insertions, 1 deletions
| diff --git a/perl/lib/Wallet/Report.pm b/perl/lib/Wallet/Report.pm index 912bc17..4d92d64 100644 --- a/perl/lib/Wallet/Report.pm +++ b/perl/lib/Wallet/Report.pm @@ -285,6 +285,27 @@ sub objects_history {  }  ############################################################################## +# Type reports +############################################################################## + +# Return an alphabetical list of all valid types set up, along with the class +# that they belong to. +sub types { +    my ($self) = @_; + +    my (@types); +    my @types_rs = $self->{schema}->resultset('Type')->all; +    for my $type_rs (@types_rs) { +        my $name  = $type_rs->ty_name; +        my $class = $type_rs->ty_class; +        push(@types, [ $name, $class ]); +    } + +    @types = sort { $a->[0] cmp $b->[0] } @types; +    return @types; +} + +##############################################################################  # ACL reports  ############################################################################## @@ -527,6 +548,23 @@ sub owners {      return @owners;  } +# Return an alphabetical list of all valid types set up, along with the class +# that they belong to. +sub acl_schemes { +    my ($self) = @_; + +    my (@schemes); +    my @acls_rs = $self->{schema}->resultset('AclScheme')->all; +    for my $acl_rs (@acls_rs) { +        my $name  = $acl_rs->as_name; +        my $class = $acl_rs->as_class; +        push(@schemes, [ $name, $class ]); +    } + +    @schemes = sort { $a->[0] cmp $b->[0] } @schemes; +    return @schemes; +} +  ##############################################################################  # Auditing  ############################################################################## diff --git a/perl/t/general/report.t b/perl/t/general/report.t index 8d348ed..a63ab79 100755 --- a/perl/t/general/report.t +++ b/perl/t/general/report.t @@ -11,7 +11,7 @@  use strict;  use warnings; -use Test::More tests => 197; +use Test::More tests => 215;  use Wallet::Admin;  use Wallet::Report; @@ -41,6 +41,30 @@ is (scalar (@acls), 1, 'One ACL in the database');  is ($acls[0][0], 1, ' and that is ACL ID 1');  is ($acls[0][1], 'ADMIN', ' with the right name'); +# Check to see that we have all types that we expect. +my @types = $report->types; +is (scalar (@types), 10, 'There are ten types created'); +is ($types[0][0], 'base', ' and the first member is correct'); +is ($types[1][0], 'duo', ' and the second member is correct'); +is ($types[2][0], 'duo-ldap', ' and the third member is correct'); +is ($types[3][0], 'duo-pam', ' and the fourth member is correct'); +is ($types[4][0], 'duo-radius', ' and the fifth member is correct'); +is ($types[5][0], 'duo-rdp', ' and the sixth member is correct'); +is ($types[6][0], 'file', ' and the seventh member is correct'); +is ($types[7][0], 'keytab', ' and the eighth member is correct'); +is ($types[8][0], 'password', ' and the nineth member is correct'); +is ($types[9][0], 'wa-keyring', ' and the tenth member is correct'); + +# And that we have all schemes that we expect. +my @schemes = $report->acl_schemes; +is (scalar (@schemes), 6, 'There are six acl schemes created'); +is ($schemes[0][0], 'base', ' and the first member is correct'); +is ($schemes[1][0], 'krb5', ' and the second member is correct'); +is ($schemes[2][0], 'krb5-regex', ' and the third member is correct'); +is ($schemes[3][0], 'ldap-attr', ' and the fourth member is correct'); +is ($schemes[4][0], 'netdb', ' and the fifth member is correct'); +is ($schemes[5][0], 'netdb-root', ' and the sixth member is correct'); +  # Create an object.  my $server = eval { Wallet::Server->new ('admin@EXAMPLE.COM', 'localhost') };  is ($@, '', 'Creating a server instance did not die'); diff --git a/server/wallet-report b/server/wallet-report index bc499d4..6d1436c 100755 --- a/server/wallet-report +++ b/server/wallet-report @@ -29,6 +29,8 @@ Wallet reporting help:    objects unused                Objects that have never been gotten    objects unstored              Objects that have never been stored    owners <type> <name>          All ACL entries owning matching objects +  schemes                       All configured ACL schemes +  types                         All configured wallet types  EOH  ############################################################################## @@ -98,6 +100,20 @@ sub command {          for my $entry (@entries) {              print join (' ', @$entry), "\n";          } +    } elsif ($command eq 'schemes') { +        die "too many arguments to schemes\n" if @args > 0; +        my @schemes = $report->acl_schemes; +        for my $entry (@schemes) { +            print join (' ', @$entry), "\n"; +        } + +    } elsif ($command eq 'types') { +        die "too many arguments to types\n" if @args > 0; +        my @types = $report->types; +        for my $entry (@types) { +            print join (' ', @$entry), "\n"; +        } +      } else {          die "unknown command $command\n";      } | 
