diff --git a/lemonldap-ng-portal/t/67-CheckUser-with-token.t b/lemonldap-ng-portal/t/67-CheckUser-with-token.t
new file mode 100644
index 000000000..48bcf659e
--- /dev/null
+++ b/lemonldap-ng-portal/t/67-CheckUser-with-token.t
@@ -0,0 +1,160 @@
+use Test::More;
+use strict;
+use IO::String;
+
+BEGIN {
+ require 't/test-lib.pm';
+}
+
+my $res;
+
+my $client = LLNG::Manager::Test->new(
+ { ini => {
+ logLevel => 'error',
+ authentication => 'Demo',
+ userDB => 'Same',
+ loginHistoryEnabled => 0,
+ brutForceProtection => 0,
+ portalMainLogo => 'common/logos/logo_llng_old.png',
+ checkUser => 1,
+ requireToken => 1,
+ formTimeout => 2,
+ checkUserDisplayPersistentInfo => 1,
+ checkUserDisplayEmptyValues => 1,
+ }
+ }
+);
+
+
+## Try to authenticate
+ok( $res = $client->_get( '/', accept => 'text/html' ),
+ 'Get Menu', );
+count(1);
+my ( $host, $url, $query ) =
+ expectForm( $res, '#', undef, 'user', 'password', 'token' );
+
+$query =~ s/user=/user=dwho/;
+$query =~ s/password=/password=dwho/;
+ok( $res = $client->_post(
+ '/',
+ IO::String->new($query),
+ length => length($query),
+ accept => 'text/html',
+ ),
+ 'Auth query'
+);
+count(1);
+
+my $id = expectCookie($res);
+expectRedirection( $res, 'http://auth.example.com/' );
+
+# CheckUser form
+# ------------------------
+ok( $res = $client->_get(
+ '/checkuser',
+ cookie => "lemonldap=$id",
+ accept => 'text/html'
+ ),
+ 'CheckUser form',
+);
+count(1);
+( $host, $url, $query )
+ = expectForm( $res, undef, '/checkuser', 'user', 'url', 'token' );
+ok( $res->[2]->[0] =~ m%%,
+ 'Found trspan="checkUser"' )
+ or explain( $res->[2]->[0], 'trspan="checkUser"' );
+count(1);
+
+# Expired token
+sleep 3;
+$query =~ s/user=dwho/user=rtyler/;
+$query =~ s/url=/url=http%3A%2F%2Ftest1.example.com/;
+
+ok( $res = $client->_post(
+ '/checkuser',
+ IO::String->new($query),
+ cookie => "lemonldap=$id",
+ length => length($query),
+ accept => 'text/html',
+ ),
+ 'POST checkuser'
+);
+ok( $res->[2]->[0] =~ m%%,
+ 'Found PE_TOKENEXPIRED' )
+ or explain( $res->[2]->[0], 'trspan="PE82"' );
+count(2);
+( $host, $url, $query )
+ = expectForm( $res, undef, '/checkuser', 'user', 'url', 'token' );
+
+# Valid token
+$query =~ s/user=/user=rtyler/;
+$query =~ s/url=/url=http%3A%2F%2Ftest1.example.com/;
+
+ok( $res = $client->_post(
+ '/checkuser',
+ IO::String->new($query),
+ cookie => "lemonldap=$id",
+ length => length($query),
+ accept => 'text/html',
+ ),
+ 'POST checkuser'
+);
+count(1);
+
+( $host, $url, $query )
+ = expectForm( $res, undef, '/checkuser', 'user', 'url', 'token' );
+ok( $res->[2]->[0] =~ m%%,
+ 'Found trspan="checkUser"' )
+ or explain( $res->[2]->[0], 'trspan="checkUser"' );
+ok( $res->[2]->[0]
+ =~ m%