diff --git a/_example/conf/lmConf-1.json b/_example/conf/lmConf-1.json
index f9738e4f7..8f31fd436 100644
--- a/_example/conf/lmConf-1.json
+++ b/_example/conf/lmConf-1.json
@@ -119,10 +119,6 @@
"namespace" : "lemonldap-ng-sessions"
},
"locationRules" : {
- "auth.__DNSDOMAIN__" : {
- "(?#checkUser)/checkuser" : "$uid eq \"dwho\"",
- "default" : "deny"
- },
"manager.__DNSDOMAIN__" : {
"(?#Configuration)^/(manager\\.html|conf/)" : "$uid eq \"dwho\"",
"(?#Notifications)/notifications" : "$uid eq \"dwho\" or $uid eq \"rtyler\"",
diff --git a/lemonldap-ng-portal/t/67-CheckUser.t b/lemonldap-ng-portal/t/67-CheckUser.t
new file mode 100644
index 000000000..929c845ca
--- /dev/null
+++ b/lemonldap-ng-portal/t/67-CheckUser.t
@@ -0,0 +1,164 @@
+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,
+ checkUserDisplayPersistentInfo => 1,
+ checkUserDisplayEmptyValues => 1,
+ }
+ }
+);
+
+## Try to authenticate
+ok( $res = $client->_post(
+ '/',
+ IO::String->new('user=rtyler&password=rtyler'),
+ length => 27,
+ accept => 'text/html',
+ ),
+ 'Auth query'
+);
+count(1);
+
+my $id = expectCookie($res);
+expectRedirection( $res, 'http://auth.example.com/' );
+
+ok( $res = $client->_get(
+ '/checkuser',
+ cookie => "lemonldap=$id",
+ accept => 'text/html'
+ ),
+ 'Try to access /checkuser'
+);
+count(1);
+
+ok( $res->[2]->[0] =~ m%[2]->[0], 'custom Main logo not found"' );
+ok( $res->[2]->[0] =~ m%%,
+ 'Found trspan="accessDenied"' )
+ or explain( $res->[2]->[0], 'trspan="accessDenied"' );
+count(2);
+$client->logout($id);
+
+## Try to authenticate
+ok( $res = $client->_post(
+ '/',
+ IO::String->new('user=dwho&password=dwho'),
+ length => 23,
+ accept => 'text/html',
+ ),
+ 'Auth query'
+);
+count(1);
+
+$id = expectCookie($res);
+expectRedirection( $res, 'http://auth.example.com/' );
+
+# CheckUser form -> granted
+# ------------------------
+ok( $res = $client->_get(
+ '/checkuser',
+ cookie => "lemonldap=$id",
+ accept => 'text/html'
+ ),
+ 'CheckUser form',
+);
+count(1);
+my ( $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);
+
+$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'
+);
+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);
+
+ok( $res->[2]->[0] =~ m%%,
+ 'Found trspan="checkUser"' )
+ or explain( $res->[2]->[0], 'trspan="checkUser"' );
+ok( $res->[2]->[0]
+ =~ m%