lemonldap-ng/lemonldap-ng-portal/t/27-AuthProxy-with-choice.t

76 lines
2.4 KiB
Perl

use Test::More;
use strict;
use IO::String;
use LWP::UserAgent;
my $res;
require 't/test-lib.pm';
my $client = LLNG::Manager::Test->new( {
ini => {
logLevel => 'error',
useSafeJail => 1,
cookieName => 'external',
authentication => 'Proxy',
userDB => 'Same',
proxyAuthService => 'http://auth.example.com',
proxyAuthServiceChoiceParam => 'lmAuth',
proxyAuthServiceChoiceValue => '2_Password',
proxyCookieName => 'lemonldap',
proxyAuthServiceImpersonation => 1
}
}
);
ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get menu' );
ok( $res->[2]->[0] =~ m#<input name="spoofId" type="text"#,
'spoofId input found' )
or explain( $res->[2]->[0], 'spoofId' );
ok(
$res = $client->_post(
'/',
IO::String->new('user=dwho&password=dwho&spoofId=rtyler'),
length => 38
),
'Auth query'
);
expectOK($res);
my $id = expectCookie( $res, 'external' );
count(7);
$client->logout( $id, 'external' );
clean_sessions();
done_testing( count() );
# Redefine LWP methods for tests
no warnings 'redefine';
sub LWP::UserAgent::request {
my ( $self, $req ) = @_;
unless ( $req->uri->as_string =~
m%http://auth.example.com(?:/session/my/global|\?logout=1)% )
{
ok( $req->content() =~ m%user=dwho%, 'User found' )
or print STDERR Dumper( $req->content() );
ok( $req->content() =~ m%password=dwho%, 'Password found' )
or print STDERR Dumper( $req->content() );
ok( $req->content() =~ m%lmAuth=2_Password%, 'ChoiceParam found' )
or print STDERR Dumper( $req->content() );
ok( $req->content() =~ m%spoofId=rtyler%, 'SpoofId found' )
or print STDERR Dumper( $req->content() );
}
my $httpResp;
my $s =
'{"error":"0","id":"6e30af4ffa5689b3e49a104d1b160d316db2b2161a0f45776994eed19dbdc101","result":1}';
$httpResp = HTTP::Response->new( 200, 'OK' );
$httpResp->header( 'Content-Type', 'application/json' );
$httpResp->header( 'Content-Length', length($s) );
$httpResp->header( 'Set-Cookie',
'lemonldap=6e30af4ffa5689b3e49a104d1b160d316db2b2161a0f45776994eed19dbdc101'
);
$httpResp->content($s);
return $httpResp;
}