package AuthRealmTestApp::Controller::Root; use warnings; use strict; use base qw/Catalyst::Controller/; __PACKAGE__->config(namespace => ''); use Test::More; use Test::Exception; sub moose : Local { my ( $self, $c ) = @_; ok(!$c->user, "no user"); while ( my ($user, $info) = each %$AuthRealmTestApp::members ) { ok( $c->authenticate( { username => $user, password => $info->{password} }, 'members' ), "user $user authentication" ); # check existing realms ok( $c->user_in_realm('members'), "user in members realm"); ok(!$c->user_in_realm('admins'), "user not in admins realm"); # check an invalid realm ok(!$c->user_in_realm('foobar'), "user not in foobar realm"); # check if we've got the right user is( $c->user, $info, "user object is in proper place"); $c->logout; # sanity check ok(!$c->user, "no more user after logout"); } while ( my ($user, $info) = each %$AuthRealmTestApp::admins ) { ok( $c->authenticate( { username => $user, password => $info->{password} }, 'admins' ), "user $user authentication" ); # check existing realms ok(!$c->user_in_realm('members'), "user not in members realm"); ok( $c->user_in_realm('admins'), "user in admins realm"); # check an invalid realm ok(!$c->user_in_realm('foobar'), "user not in foobar realm"); # check if we've got the right user is( $c->user, $info, "user object is in proper place"); $c->logout; # sanity check ok(!$c->user, "no more user after logout"); } $c->res->body( "ok" ); } 1;