From 6eda19c1124f4a1df4477c11ea5f4eb17e06e513 Mon Sep 17 00:00:00 2001 From: Christophe Maudoux Date: Thu, 1 Apr 2021 14:38:31 +0200 Subject: [PATCH] Fix test (#2501) --- .../t/78-2F-UpgradeOnly-without-2F.t | 159 +++++++++--------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/lemonldap-ng-portal/t/78-2F-UpgradeOnly-without-2F.t b/lemonldap-ng-portal/t/78-2F-UpgradeOnly-without-2F.t index 376a7b9d3..40ed69840 100644 --- a/lemonldap-ng-portal/t/78-2F-UpgradeOnly-without-2F.t +++ b/lemonldap-ng-portal/t/78-2F-UpgradeOnly-without-2F.t @@ -4,96 +4,99 @@ use IO::String; use Data::Dumper; require 't/test-lib.pm'; -require 't/smtp.pm'; +my $maintests = 5; -use_ok('Lemonldap::NG::Common::FormEncode'); -count(1); -my $res; - -my $client = LLNG::Manager::Test->new( { - ini => { - logLevel => 'debug', - sfOnlyUpgrade => 1, - u2fActivation => 1, - u2fAuthnLevel => 5, - authentication => 'Demo', - userDB => 'Same', - 'vhostOptions' => { - 'test1.example.com' => { - 'vhostAuthnLevel' => 3 - }, - }, - } +SKIP: { + eval { require Crypt::U2F::Server; require Authen::U2F::Tester }; + if ( $@ or $Crypt::U2F::Server::VERSION < 0.42 ) { + skip 'Missing libraries', $maintests; } -); -# CASE 1: no 2F available -# ----------------------- -my $query = 'user=rtyler&password=rtyler'; -ok( - $res = $client->_post( - '/', - IO::String->new($query), - length => length($query), - accept => 'text/html', - ), - 'Auth query' -); -count(1); + use_ok('Lemonldap::NG::Common::FormEncode'); + my $res; -my $id = expectCookie($res); + my $client = LLNG::Manager::Test->new( { + ini => { + logLevel => 'error', + sfOnlyUpgrade => 1, + u2fActivation => 1, + u2fAuthnLevel => 5, + authentication => 'Demo', + userDB => 'Same', + 'vhostOptions' => { + 'test1.example.com' => { + 'vhostAuthnLevel' => 3 + }, + }, + } + } + ); -# After attempting to access test1, -# the handler sends up back to /upgradesession -# -------------------------------------------- + # CASE 1: no 2F available + # ----------------------- + my $query = 'user=rtyler&password=rtyler'; + ok( + $res = $client->_post( + '/', + IO::String->new($query), + length => length($query), + accept => 'text/html', + ), + 'Auth query' + ); + my $id = expectCookie($res); -ok( - $res = $client->_get( - '/upgradesession', - query => 'url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29t', - accept => 'text/html', - cookie => "lemonldap=$id", - ), - 'Upgrade session query' -); -count(1); + # After attempting to access test1, + # the handler sends up back to /upgradesession + # -------------------------------------------- + ok( + $res = $client->_get( + '/upgradesession', + query => 'url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29t', + accept => 'text/html', + cookie => "lemonldap=$id", + ), + 'Upgrade session query' + ); -( my $host, my $url, $query ) = - expectForm( $res, undef, '/upgradesession', 'confirm', 'url' ); + ( my $host, my $url, $query ) = + expectForm( $res, undef, '/upgradesession', 'confirm', 'url' ); -# Accept session upgrade -# ---------------------- + # Accept session upgrade + # ---------------------- -ok( - $res = $client->_post( - '/upgradesession', - IO::String->new($query), - length => length($query), - accept => 'text/html', - cookie => "lemonldap=$id", - ), - 'Accept session upgrade query' -); -count(1); + ok( + $res = $client->_post( + '/upgradesession', + IO::String->new($query), + length => length($query), + accept => 'text/html', + cookie => "lemonldap=$id", + ), + 'Accept session upgrade query' + ); -my $pdata = expectCookie( $res, 'lemonldappdata' ); + expectCookie( $res, 'lemonldappdata' ); -# A message warns the user that they do not have any 2FA available -expectPortalError( $res, 83 ); + # A message warns the user that they do not have any 2FA available + expectPortalError( $res, 83 ); -$query = 'user=rtyler&password=rtyler'; -ok( - $res = $client->_post( - '/upgradesession', - IO::String->new($query), - length => length($query), - accept => 'text/html', - cookie => "lemonldap=$id", - ), - 'Accept session upgrade query' -); -count(1); -expectRedirection( $res, 'http://auth.example.com/' ); + $query = 'user=rtyler&password=rtyler'; + ok( + $res = $client->_post( + '/upgradesession', + IO::String->new($query), + length => length($query), + accept => 'text/html', + cookie => "lemonldap=$id", + ), + 'Accept session upgrade query' + ); + expectRedirection( $res, 'http://auth.example.com/' ); + $client->logout($id); +} + +count($maintests); clean_sessions(); done_testing( count() );