lemonldap-ng/lemonldap-ng-portal/t/02-Password-Demo-Hook.t

92 lines
1.9 KiB
Perl

use Test::More;
use strict;
use IO::String;
use JSON;
use Lemonldap::NG::Portal::Main::Constants
qw(PE_BADOLDPASSWORD PE_PASSWORD_MISMATCH PE_PP_MUST_SUPPLY_OLD_PASSWORD);
require 't/test-lib.pm';
my $res;
my $client = LLNG::Manager::Test->new( {
ini => {
logLevel => 'error',
passwordDB => 'Demo',
portalRequireOldPassword => 1,
customPlugins => 't::PasswordHookPlugin',
}
}
);
ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get Menu' );
count(1);
# Try to authenticate
# -------------------
ok(
$res = $client->_post(
'/',
IO::String->new('user=dwho&password=dwho'),
length => 23
),
'Auth query'
);
count(1);
expectOK($res);
my $id = expectCookie($res);
# Test bad new password
my $s = buildForm( {
oldpassword => "dwho",
newpassword => "12345",
confirmpassword => "12345",
}
);
ok(
$res = $client->_post(
'/',
IO::String->new($s),
cookie => "lemonldap=$id",
accept => 'application/json',
length => length($s),
),
'Bad new password'
);
count(1);
expectReject( $res, 400, 28 );
# Test good new password
$s = buildForm( {
oldpassword => "dwho",
newpassword => "12346",
confirmpassword => "12346",
}
);
ok(
$res = $client->_post(
'/',
IO::String->new($s),
cookie => "lemonldap=$id",
accept => 'application/json',
length => length($s),
),
'Correct new password'
);
count(1);
expectReject( $res, 200, 35, "Expect PE_PASSWORD_OK" );
my $pdata = expectPdata($res);
is( $pdata->{afterHook}, "dwho-dwho-12346",
"passwordAfterChange hook worked as expected" );
count(1);
# Test $client->logout
$client->logout($id);
#print STDERR Dumper($res);
clean_sessions();
done_testing( count() );