Authen-Pluggable

 view release on metacpan or  search on metacpan

t/60-json.t  view on Meta::CPAN

my $pass = 'foo';

my $log  = $ENV{DEBUG} ? Mojo::Log->new( color => 1 ) : undef;
my $auth = new Authen::Pluggable( log => $log );

subtest 'authentication' => sub {
    isa_ok( $auth->provider($provider), 'Authen::Pluggable::' . $provider );
    $auth->provider($provider)->_cfg->{url}->path('/auth')
        ->port( $t->ua->server->url->port );
    my $loop = Mojo::IOLoop->singleton;
    $loop->timer( 20 => sub { fail('Timeout'); $loop->stop } );
    $loop->subprocess->run(
        sub {
            my $uinfo = $auth->authen( $user, '' );
            is( $uinfo, undef, 'User no authenticated (missing pass)' );
            $uinfo = $auth->authen( $user, $pass . $pass );
            is( $uinfo, undef, 'User no authenticated (wrong pass)' );

            $uinfo = $auth->authen( $user, $pass );

            isnt( $uinfo->{user}, undef, 'User authenticated' );

t/70-subset_providers.t  view on Meta::CPAN

                }
            }
        ),
        'Authen::Pluggable'
    );
};

subtest 'not authenticated' => sub {
    my $loop = Mojo::IOLoop->singleton;
    foreach my $p (qw/users1 users2 json/) {
        my $timer
            = $loop->timer( 20 => sub { fail('Timeout'); $loop->stop } );
        my @providers = grep !/^$p/, keys %users;
        $loop->subprocess->run_p(
            sub {
                my $uinfo = $auth->authen( $users{$p}->[0], $users{$p}->[1],
                    \@providers );
                return $uinfo;
            }
        )->then(
            sub {
                is( shift, undef,
                    "$p: user not authenticated for providers: "
                        . join( ',', @providers ) );
                $loop->stop;
            }
        )->catch( sub { fail(shift); $loop->stop } );
        $loop->start;
        $loop->remove($timer);
    }
};

subtest 'authenticated single provider' => sub {
    my $loop = Mojo::IOLoop->singleton;
    foreach my $p (qw/users1 users2 json/) {
        my $timer
            = $loop->timer( 20 => sub { fail('Timeout'); $loop->stop } );
        my @providers = ($p);
        $loop->subprocess->run_p(
            sub {
                return $auth->authen( $users{$p}->[0], $users{$p}->[1],
                    \@providers );
            }
        )->then(
            sub {
                my $uinfo = shift;
                ok( $uinfo,
                    "$p: user authenticated for providers: "
                        . join( ',', @providers ) );
                is( $uinfo->{provider}, $p, "$p: correct provider" );
                $loop->stop;
            }
        )->catch( sub { fail(shift); $loop->stop } );
        $loop->start;
        $loop->remove($timer);
    }
};

subtest 'authenticated multiple provider' => sub {
    my $loop = Mojo::IOLoop->singleton;
    foreach my $p (qw/users1 users2 json/) {
        my $timer
            = $loop->timer( 20 => sub { fail('Timeout'); $loop->stop } );
        my @providers = keys %users;
        $loop->subprocess->run_p(
            sub {
                return $auth->authen( $users{$p}->[0], $users{$p}->[1],
                    \@providers );
            }
        )->then(
            sub {
                my $uinfo = shift;
                ok( $uinfo,
                    "$p: user authenticated for providers: "
                        . join( ',', @providers ) );
                is( $uinfo->{provider}, $p, "$p: correct provider" );
                $loop->stop;
            }
        )->catch( sub { fail(shift); $loop->stop } );
        $loop->start;
        $loop->remove($timer);
    }
};

done_testing();



( run in 1.062 second using v1.01-cache-2.11-cpan-49f99fa48dc )