Mojolicious-Plugin-RoutesAuthDBI

 view release on metacpan or  search on metacpan

t/04-admin.t  view on Meta::CPAN

use Mojo::Base 'Mojolicious';
use Test::More;
use Test::Mojo;
use DBI;

plan skip_all => 'set env TEST_CONN_PG="DBI:Pg:dbname=<db>/<pg_user>/<passwd>" to enable this test'
  unless $ENV{TEST_CONN_PG};

has dbh => sub { DBI->connect(split m|[/]|, $ENV{TEST_CONN_PG}) };

my $config = do 't/config.pm';

sub startup {
  my $app = shift;
  $app->plugin('RoutesAuthDBI',
    auth=>{current_user_fn=>'auth_user'},
    admin=>{prefix=>$config->{prefix}, trust=>$config->{trust}, role_admin=>$config->{role_admin},},
    template=>$config,
  );
}

my $t = Test::Mojo->new(__PACKAGE__);

subtest 'routes' => sub {
  #~ my $stdout;
  #~ local *STDOUT;
  #~ open(STDOUT, ">", \$stdout);
  #~ $t->app->commands->run('routes');
  my $stdout = $config->{app_routes}($t);
  warn $stdout;
  like $stdout, qr/\/$config->{prefix}\/$config->{trust}\/$config->{role_admin}\/new\/:login\/:pass/, 'routes';
  like $stdout, qr/signin stash/, 'sign in route';
};


$t->get_ok("/$config->{prefix}")->status_is(401)
  ->content_like(qr/Please sign in/i);

$t->get_ok("/$config->{prefix}/$config->{trust}/$config->{role_admin}/new/$config->{admin_user}/$config->{admin_pass}")->status_is(200)
  ->content_like(qr/Success sign up new trust-admin-user/i);
  #~ ->content_like(qr/$config->{role_admin}-000/i);

$t->get_ok("/$config->{prefix}/sign/in/$config->{admin_user}/$config->{admin_pass}")->status_is(302)
  ->${ \$config->{location_is} }("/$config->{prefix}");

$t->get_ok("/$config->{prefix}")->status_is(200)
  ->content_like(qr/You are signed as/i);

$t->get_ok("/$config->{prefix}/users")->status_is(200)
  ->content_like(qr/Profiles\(1\)/i);

$t->get_ok("/$config->{prefix}/user/new/$config->{user1}/$config->{pass1}")->status_is(200)
  ->content_like(qr/Success sign up new profile/i);

$t->get_ok("/$config->{prefix}/user/new?login=$config->{user2}&pass=$config->{pass2}")->status_is(200)
  ->content_like(qr/Success sign up new profile/i);

$t->get_ok("/$config->{prefix}/users")->status_is(200)
  ->content_like(qr/Profiles\(3\)/i);

$t->get_ok("/$config->{prefix}/users/$config->{role_admin}")->status_is(200)
  ->content_like(qr/Profile\/users\(1\) by role \[$config->{role_admin}\]/i);

$t->get_ok("/$config->{prefix}/role/new/$config->{role}")->status_is(200)
  ->content_like(qr/Success created role/i);

$t->get_ok("/$config->{prefix}/role/user/$config->{role}/$config->{user1}")->status_is(200)
  ->content_like(qr/Success assign ROLE\[$config->{role}\] -> USER \[bless/i);



( run in 1.331 second using v1.01-cache-2.11-cpan-71847e10f99 )