File Coverage

File:/home/mik/work/module/Tivoli/AccessManager/Admin.pm
Coverage:98.6%

linestmtbrancondsubpodtimecode
1package Tivoli::AccessManager::Admin;
2
15
15
15
269
89
332
use Tivoli::AccessManager::Admin::ACL;
3
15
15
15
348
86
327
use Tivoli::AccessManager::Admin::Action;
4
15
15
15
324
101
342
use Tivoli::AccessManager::Admin::AuthzRule;
5
15
15
15
351
99
370
use Tivoli::AccessManager::Admin::Context;
6
15
15
15
390
96
515
use Tivoli::AccessManager::Admin::Domain;
7
15
15
15
343
88
351
use Tivoli::AccessManager::Admin::Group;
8
15
15
15
345
106
328
use Tivoli::AccessManager::Admin::Objectspace;
9
15
15
15
352
96
375
use Tivoli::AccessManager::Admin::POP;
10
15
15
15
325
65
252
use Tivoli::AccessManager::Admin::ProtObject;
11
15
15
15
341
115
362
use Tivoli::AccessManager::Admin::Server;
12
15
15
15
387
108
437
use Tivoli::AccessManager::Admin::User;
13
15
15
15
379
96
388
use Tivoli::AccessManager::Admin::SSO::Web;
14
15
15
15
404
94
319
use Tivoli::AccessManager::Admin::SSO::Group;
15
15
15
15
366
89
336
use Tivoli::AccessManager::Admin::SSO::Cred;
16
17$Tivoli::AccessManager::Admin::VERSION = '0.01';
18
15
225
use Inline( C => 'DATA',
19
15
15
287
63
                 NAME => 'Tivoli::AccessManager::Admin' );
20
21my %dispatch = (
22    acl => 'Tivoli::AccessManager::Admin::ACL',
23    action => 'Tivoli::AccessManager::Admin::Action',
24    authzrule => 'Tivoli::AccessManager::Admin::AuthzRule',
25    context => 'Tivoli::AccessManager::Admin::Context',
26    group => 'Tivoli::AccessManager::Admin::Group',
27    objectspace => 'Tivoli::AccessManager::Admin::Objectspace',
28    'pop' => 'Tivoli::AccessManager::Admin::POP',
29    protobject => 'Tivoli::AccessManager::Admin::ProtObject',
30    server => 'Tivoli::AccessManager::Admin::Server',
31    user => 'Tivoli::AccessManager::Admin::User; ',
32    ssoweb => 'Tivoli::AccessManager::Admin::SSO::Web',
33    ssocred => 'Tivoli::AccessManager::Admin::SSO::Cred',
34);
35
36
37sub new {
38
17
0
117
    my $class = shift; # Ignore this.
39
17
109
    my $desired = lc shift;
40
17
203
    if ( defined $dispatch{ $desired } ) {
41
2
43
        return $dispatch{$desired}->new( @_ );
42    }
43    else {
44
15
305
        return Tivoli::AccessManager::Admin::Context->new( $desired, @_ );
45    }
46}
47
481;
49
50 - 171
=head1 NAME

Tivoli::AccessManager::Admin

=head1 SYNOPSIS

    use Tivoli::AccessManager::Admin

    # Do cool and wicked TAM things

=head1 DESCRIPTION

B<Tivoli::AccessManager::Admin> is a convenience module.  You can simply B<use> it and have access to:

=over 4

=item L<Tivoli::AccessManager::Admin::Context|Tivoli::AccessManager::Admin::Context>

=item L<Tivoli::AccessManager::Admin::Response|Tivoli::AccessManager::Admin::Response>

=item L<Tivoli::AccessManager::Admin::ACL|Tivoli::AccessManager::Admin::ACL>

=item L<Tivoli::AccessManager::Admin::Action|Tivoli::AccessManager::Admin::Action>

=item L<Tivoli::AccessManager::Admin::Authzrule|Tivoli::AccessManager::Admin::Authzrule>

=item L<Tivoli::AccessManager::Admin::Group|Tivoli::AccessManager::Admin::Group>

=item L<Tivoli::AccessManager::Admin::Objectspace|Tivoli::AccessManager::Admin::Objectspace>

=item L<Tivoli::AccessManager::Admin::POP|Tivoli::AccessManager::Admin::POP>

=item L<Tivoli::AccessManager::Admin::ProtObject|Tivoli::AccessManager::Admin::ProtObject>

=item L<Tivoli::AccessManager::Admin::Server|Tivoli::AccessManager::Admin::Server>

=item L<Tivoli::AccessManager::Admin::User|Tivoli::AccessManager::Admin::User>

=item L<Tivoli::AccessManager::Admin::SSO::Web|Tivoli::AccessManager::Admin::SSO::Web>

=item L<Tivoli::AccessManager::Admin::SSO::Cred|Tivoli::AccessManager::Admin::SSO::Cred>

Each of these objects provide access to the equivalent calls in the TAM API.
See the documentation for each of these modules for more information.

=over 4

=head1 Unimplemented

You may have noticed from the previous list that I have not yet implemented
the full API.  I still need to write:

=over 4

=item B<Tivoli::AccessManager::Admin::Config>

This module will be written, but I just haven't gotten there yet.

=item B<Tivoli::AccessManager::Admin::AccessOutdata>

=item B<Tivoli::AccessManager::Admin::Context::cleardelcred>

=item B<Tivoli::AccessManager::Admin::Context::hasdelcred>

=item B<Tivoli::AccessManager::Admin::ProtObject::access>

=item B<Tivoli::AccessManager::Admin::ProtObject::multiaccess>

The first is a class and the following are methods.  They are not implemented
due to my own ignorance.  I vaguely understand what they are supposed to do,
but I just cannot figure out how to implement them.

=back

=head1 TODO

=over 4

=item *

Implement the missing objects

=item *

Basic clean up.  Most of this code was written as I was learning.  I think you
can see my style evolve from B<Tivoli::AccessManager::Admin::Context> to
B<Tivoli::AccessManager::Admin::User>.  I would like to make it consistent.

=head1 SEE ALSO

L<Tivoli::AccessManager::Admin::Context|Tivoli::AccessManager::Admin::Context>, L<Tivoli::AccessManager::Admin::Response|Tivoli::AccessManager::Admin::Response>, L<Tivoli::AccessManager::Admin::ACL|Tivoli::AccessManager::Admin::ACL>, L<Tivoli::AccessManager::Admin::Action|Tivoli::AccessManager::Admin::Action>, L<Tivoli::AccessManager::Admin::Authzrule|Tivoli::AccessManager::Admin::Authzrule>, L<Tivoli::AccessManager::Admin::Group|Tivoli::AccessManager::Admin::Group>, L<Tivoli::AccessManager::Admin::Objectspace|Tivoli::AccessManager::Admin::Objectspace>, L<Tivoli::AccessManager::Admin::POP|Tivoli::AccessManager::Admin::POP>, L<Tivoli::AccessManager::Admin::ProtObject|Tivoli::AccessManager::Admin::ProtObject>, L<Tivoli::AccessManager::Admin::Server|Tivoli::AccessManager::Admin::Server>, L<Tivoli::AccessManager::Admin::User|Tivoli::AccessManager::Admin::User>, L<Tivoli::AccessManager::Admin::SSO::Web|Tivoli::AccessManager::Admin::SSO::Web>, L<Tivoli::AccessManager::Admin::SSO::Cred|Tivoli::AccessManager::Admin::SSO::Cred>

=head1 ACKNOWLEDGEMENTS

None of this would have been possible if not for Brian Ingerson's B<Inline::C>.

Major thanks to Michael G Schwern's B<Test::More> -- the code would have been
a lot buggier without running everything through Test::More.

An equal share of thanks and curses goes to Paul Johnson for B<Devel::Cover>.
I cannot count the number of bugs this module helped me find or the number of
times I cursed it for keeping me up to 3:00 am saying "I will go to bed after
I get just one more percent branch coverage".  Those who use it know what I mean.

=head1 BUGS

None known yet.

=head1 AUTHOR

Mik Firestone E<lt>mikfire@gmail.comE<gt>

=head1 COPYRIGHT

Copyright (c) 2004-2011 Mik Firestone.  All rights reserved.  This program is
free software; you can redistibute it and/or modify it under the same terms as
Perl itself.

All references to TAM, Tivoli Access Manager, etc are copyrighted, trademarked
and otherwise patented by IBM.

=cut
172