BEGIN {
require
't/test-lib.pm'
;
}
my
$debug
=
'error'
;
my
(
$issuer
,
$sp
,
$res
);
plan
skip_all
=>
"Missing dependencies: $@"
if
($@);
LWP::Protocol::PSGI->register(
sub
{
my
$req
= Plack::Request->new(
@_
);
ok(
$req
->uri =~ m
'SOAP request'
);
my
$host
= $1;
my
$url
= $2;
my
$query
= $3;
my
$res
;
my
$client
= (
$host
eq
'idp'
?
$issuer
:
$sp
);
if
(
$req
->method eq
'POST'
) {
my
$s
=
$req
->content;
ok(
$res
=
$client
->_post(
$url
, IO::String->new(
$s
),
length
=>
length
(
$s
),
query
=>
$query
,
type
=>
'application/xml'
,
),
"Execute POST request to $url"
);
}
else
{
ok(
$res
=
$client
->_get(
$url
,
type
=>
'application/xml'
,
query
=>
$query
,
),
"Execute request to $url"
);
}
expectOK(
$res
);
ok( getHeader(
$res
,
'Content-Type'
) =~ m
or explain(
$res
->[1],
'Content-Type => application/xml'
);
count(3);
return
$res
;
}
);
$issuer
= register(
'issuer'
, \
&issuer
);
$sp
= register(
'sp'
, \
&sp
);
ok(
$res
=
$sp
->_get(
'/'
,
accept
=>
'text/html'
,
),
'Unauth SP request'
);
count(1);
ok(
$res
->[2]->[0] !~
'Cancel button NOT found'
) or
print
STDERR Dumper(
$res
->[2]->[0] );
count(1);
switch (
'issuer'
);
ok(
$res
=
$issuer
->_get(
'/cas/login'
,
accept
=>
'text/html'
),
'Query CAS server'
);
count(1);
expectOK(
$res
);
my
$pdata
=
'lemonldappdata='
. expectCookie(
$res
,
'lemonldappdata'
);
clean_sessions();
done_testing( count() );
sub
issuer {
return
LLNG::Manager::Test->new(
{
ini
=> {
logLevel
=>
$debug
,
domain
=>
'idp.com'
,
authentication
=>
'Demo'
,
userDB
=>
'Same'
,
issuerDBCASActivation
=> 1,
issuerDBCASRule
=>
'$uid eq "french"'
,
casAttr
=>
'uid'
,
casAccessControlPolicy
=>
'error'
,
multiValuesSeparator
=>
';'
,
casAppMetaDataExportedVars
=> {
sp
=> {
cn
=>
'cn'
,
mail
=>
'mail'
,
uid
=>
'uid'
,
}
},
casAppMetaDataOptions
=> {
sp
=> {
},
sp2
=> {
},
},
}
}
);
}
sub
sp {
return
LLNG::Manager::Test->new(
{
ini
=> {
logLevel
=>
$debug
,
domain
=>
'sp.com'
,
authentication
=>
'CAS'
,
userDB
=>
'CAS'
,
compactConf
=> 1,
restSessionServer
=> 1,
issuerDBCASActivation
=> 0,
multiValuesSeparator
=>
';'
,
exportedVars
=> {
cn
=>
'cn'
,
},
casSrvMetaDataExportedVars
=> {
idp
=> {
cn
=>
'cn'
,
mail
=>
'mail'
,
uid
=>
'uid'
,
},
idp2
=> {
cn
=>
'cn'
,
mail
=>
'mail'
,
uid
=>
'uid'
,
}
},
casSrvMetaDataOptions
=> {
idp
=> {
casSrvMetaDataOptionsGateway
=> 0,
},
idp2
=> {
casSrvMetaDataOptionsGateway
=> 0,
}
},
},
}
);
}