From fca77bbc7a7e01c9f66bd661300bf71134cdc9c3 Mon Sep 17 00:00:00 2001 From: Christophe Maudoux Date: Sat, 1 Jun 2019 11:48:29 +0200 Subject: [PATCH] Append unit test (#1769) --- .../t/28-AuthChoice-with-Token.t | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lemonldap-ng-portal/t/28-AuthChoice-with-Token.t diff --git a/lemonldap-ng-portal/t/28-AuthChoice-with-Token.t b/lemonldap-ng-portal/t/28-AuthChoice-with-Token.t new file mode 100644 index 000000000..75d0701b9 --- /dev/null +++ b/lemonldap-ng-portal/t/28-AuthChoice-with-Token.t @@ -0,0 +1,86 @@ +use Test::More; +use IO::String; +use strict; + +require 't/test-lib.pm'; + +my $res; +my $maintests = 6; + +my $client = LLNG::Manager::Test->new( { + ini => { + logLevel => 'error', + useSafeJail => 1, + authentication => 'Choice', + userDB => 'Same', + passwordDB => 'Choice', + portalRequireOldPassword => 1, + requireToken => 1, + authChoiceParam => 'test', + authChoiceModules => { + '1_demo' => 'Demo;Demo;Null', + '2_ssl' => 'SSL;Demo;Null', + }, + } + } +); + +# Try to authenticate with an unknown user +# ------------------- +ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get menu' ); +my ( $host, $url, $query ) = + expectForm( $res, '#', undef, 'user', 'password', 'token' ); +my @form = ( $res->[2]->[0] =~ m##sg ); +ok( @form == 2, 'Display 2 choices' ); +foreach (@form) { + expectForm( [ $res->[0], $res->[1], [$_] ], undef, undef, 'test' ); +} + +$query =~ s/user=/user=dalek/; +$query =~ s/password=/password=dwho/; +$query =~ s/test=\w*\b/test=1_demo/; + +ok( + $res = $client->_post( + '/', IO::String->new($query), + length => length($query), + accept => 'text/html', + ), + 'Auth query with unknown user' +); +( $host, $url, $query ) = + expectForm( $res, '#', undef, 'user', 'password', 'token' ); + +ok( $res->[2]->[0] =~ /<\/span><\/div>/, + 'dalek rejected with PE_BADCREDENTIALS' ) + or print STDERR Dumper( $res->[2]->[0] ); + +# Try to authenticate +# ------------------- +#ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get menu' ); +#my ( $host, $url, $query ) = +# expectForm( $res, '#', undef, 'user', 'password', 'token' ); +@form = ( $res->[2]->[0] =~ m##sg ); +ok( @form == 2, 'Display 2 choices' ); +foreach (@form) { + expectForm( [ $res->[0], $res->[1], [$_] ], undef, undef, 'test' ); +} + +$query =~ s/user=/user=dwho/; +$query =~ s/password=/password=dwho/; +$query =~ s/test=\w*\b/test=1_demo/; + +ok( + $res = $client->_post( + '/', IO::String->new($query), + length => length($query), + accept => 'text/html', + ), + 'Auth query' +); +my $id = expectCookie($res); +$client->logout($id); + +count($maintests); +clean_sessions(); +done_testing( count() );