use Test::More; use strict; use IO::String; use Data::Dumper; use JSON; use Lemonldap::NG::Portal::Main::Constants 'PE_TOKENEXPIRED'; BEGIN { require 't/test-lib.pm'; } my $res; my $client = LLNG::Manager::Test->new( { ini => { logLevel => 'error', authentication => 'Demo', userDB => 'Same', loginHistoryEnabled => 0, bruteForceProtection => 0, requireToken => 0, securedCookie => 2, restSessionServer => 1, globalLogoutRule => 1, } } ); ## First successful connection for 'dwho' ok( $res = $client->_post( '/', IO::String->new('user=dwho&password=dwho'), length => 23, accept => 'text/html', ), '1st "dwho" Auth query' ); count(1); expectCookie($res); my $id = expectCookie( $res, 'lemonldaphttp' ); expectRedirection( $res, 'http://auth.example.com/' ); ## Second successful connection for "dwho" ok( $res = $client->_post( '/', IO::String->new('user=dwho&password=dwho'), length => 23, accept => 'text/html', ), '2nd "dwho" Auth query' ); count(1); expectCookie($res); expectCookie( $res, 'lemonldaphttp' ); expectRedirection( $res, 'http://auth.example.com/' ); ## Third successful connection for 'dwho' ok( $res = $client->_post( '/', IO::String->new('user=dwho&password=dwho'), length => 23, accept => 'text/html', ), '3rd "dwho" Auth query' ); count(1); expectCookie($res); expectCookie( $res, 'lemonldaphttp' ); expectRedirection( $res, 'http://auth.example.com/' ); ## Logout request for 'dwho' ok( $res = $client->_get( '/', query => 'logout', cookie => "lemonldaphttp=$id", accept => 'text/html' ), 'Logout request for "dwho"' ); count(1); my ( $host, $url, $query ) = expectForm( $res, undef, '/globallogout?all=1', 'token' ); ok( $res->[2]->[0] =~ m%%, 'Found trspan="globalLogout"' ) or explain( $res->[2]->[0], 'trspan="globalLogout"' ); my @c = ( $res->[2]->[0] =~ m%