Commit 11857d9f authored by Xavier Guimard's avatar Xavier Guimard

make tidy

parent 81a364cc
......@@ -257,7 +257,7 @@ sub getApacheSession {
$self->error( $apacheSession->error );
return undef;
}
$self->logger->debug("Get session $id from Common::Session::REST") if ( $id );
$self->logger->debug("Get session $id from Common::Session::REST") if ($id);
return $apacheSession;
}
......
......@@ -107,7 +107,7 @@ sub statusInit {
exec $perl_exec, '-MLemonldap::NG::Handler::Lib::Status',
# Insert @INC in Perl path
map( {"-I$_"} @INC ),
map( { "-I$_" } @INC ),
# Command to launch
'-e', '&Lemonldap::NG::Handler::Lib::Status::run()',
......
......@@ -44,17 +44,17 @@ sub getStatus {
if ( $ENV{LLNGSTATUSHOST} ) {
require IO::Socket::INET;
foreach ( 64322 .. 64331 ) {
if ( $statusOut
= IO::Socket::INET->new( Proto => 'udp', LocalPort => $_ ) )
if ( $statusOut =
IO::Socket::INET->new( Proto => 'udp', LocalPort => $_ ) )
{
$args = ' host='
. ( $ENV{LLNGSTATUSCLIENT} || 'localhost' ) . ":$_";
$args =
' host=' . ( $ENV{LLNGSTATUSCLIENT} || 'localhost' ) . ":$_";
last;
}
}
return $class->abort( $req,
"$class: status page can not be displayed, unable to open socket"
) unless ($statusOut);
"$class: status page can not be displayed, unable to open socket" )
unless ($statusOut);
}
return $class->abort( $req, "$class: status page can not be displayed" )
unless ( $statusPipe and $statusOut );
......@@ -243,8 +243,8 @@ sub lmLog {
sub checkMaintenanceMode {
my ( $class, $req ) = @_;
my $vhost = $class->resolveAlias($req);
my $_maintenance
= ( defined $class->tsv->{maintenance}->{$vhost} )
my $_maintenance =
( defined $class->tsv->{maintenance}->{$vhost} )
? $class->tsv->{maintenance}->{$vhost}
: $class->tsv->{maintenance}->{_};
......@@ -272,8 +272,8 @@ sub grant {
}
}
for (
my $i = 0;
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 );
my $i = 0 ;
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 ) ;
$i++
)
{
......@@ -405,8 +405,8 @@ sub fetchId {
: $class->tsv->{https}->{_}
);
my $cn = $class->tsv->{cookieName};
my $value
= $lookForHttpCookie
my $value =
$lookForHttpCookie
? ( $t =~ /${cn}http=([^,; ]+)/o ? $1 : 0 )
: ( $t =~ /$cn=([^,; ]+)/o ? $1 : 0 );
......@@ -437,7 +437,8 @@ sub retrieveSession {
# (15 seconds)
if ( defined $class->data->{_session_id}
and $id eq $class->data->{_session_id}
and ( $now - $class->dataUpdate < $class->tsv->{handlerInternalCache} ) )
and ( $now - $class->dataUpdate < $class->tsv->{handlerInternalCache} )
)
{
$class->logger->debug("Get session $id from Handler internal cache");
return $class->data;
......@@ -446,7 +447,8 @@ sub retrieveSession {
# 2. Get the session from cache or backend
my $session = $req->data->{session} = (
Lemonldap::NG::Common::Session->new(
{ storageModule => $class->tsv->{sessionStorageModule},
{
storageModule => $class->tsv->{sessionStorageModule},
storageModuleOptions => $class->tsv->{sessionStorageOptions},
cacheModule => $class->tsv->{sessionCacheModule},
cacheModuleOptions => $class->tsv->{sessionCacheOptions},
......@@ -463,12 +465,11 @@ sub retrieveSession {
# Verify that session is valid
$class->logger->error(
"_utime is not defined. This should not happen. Check if it is well transmitted to handler"
"_utime is not defined. This should not happen. Check if it is well transmitted to handler"
) unless $session->data->{_utime};
$class->logger->debug("Check session validity from Handler");
$class->logger->debug(
"Session timeout -> " . $class->tsv->{timeout} );
$class->logger->debug( "Session timeout -> " . $class->tsv->{timeout} );
$class->logger->debug( "Session timeoutActivity -> "
. $class->tsv->{timeoutActivity}
. "s" )
......@@ -478,7 +479,8 @@ sub retrieveSession {
$class->logger->debug( "now -> " . $now );
$class->logger->debug( "_lastSeen -> " . $session->data->{_lastSeen} )
if ( $session->data->{_lastSeen} );
my $delta = $now - $session->data->{_lastSeen} if ( $session->data->{_lastSeen} );
my $delta = $now - $session->data->{_lastSeen}
if ( $session->data->{_lastSeen} );
$class->logger->debug( "now - _lastSeen = " . $delta )
if ( $session->data->{_lastSeen} );
$class->logger->debug( "Session timeoutActivityInterval -> "
......@@ -487,7 +489,8 @@ sub retrieveSession {
my $ttl = $class->tsv->{timeout} - $now + $session->data->{_utime};
$class->logger->debug( "Session TTL = " . $ttl );
if ($now - $session->data->{_utime} > $class->tsv->{timeout}
if (
$now - $session->data->{_utime} > $class->tsv->{timeout}
or ( $class->tsv->{timeoutActivity}
and $session->data->{_lastSeen}
and $delta > $class->tsv->{timeoutActivity} )
......@@ -501,9 +504,10 @@ sub retrieveSession {
}
# Update the session to notify activity, if necessary
if ($class->tsv->{timeoutActivity}
and ( $now - $session->data->{_lastSeen}
> $class->tsv->{timeoutActivityInterval} )
if (
$class->tsv->{timeoutActivity}
and ( $now - $session->data->{_lastSeen} >
$class->tsv->{timeoutActivityInterval} )
)
{
$req->data->{session}->update( { '_lastSeen' => $now } );
......@@ -542,8 +546,8 @@ sub _buildUrl {
? $class->tsv->{https}->{$vhost}
: $class->tsv->{https}->{_}
);
my $portString
= $class->tsv->{port}->{$vhost}
my $portString =
$class->tsv->{port}->{$vhost}
|| $class->tsv->{port}->{_}
|| $req->{env}->{SERVER_PORT};
$portString = (
......@@ -565,8 +569,8 @@ sub isUnprotected {
my ( $class, $req, $uri ) = @_;
my $vhost = $class->resolveAlias($req);
for (
my $i = 0;
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 );
my $i = 0 ;
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 ) ;
$i++
)
{
......@@ -585,8 +589,8 @@ sub sendHeaders {
if ( defined $class->tsv->{forgeHeaders}->{$vhost} ) {
# Log headers in debug mode
my %headers
= $class->tsv->{forgeHeaders}->{$vhost}->( $req, $session );
my %headers =
$class->tsv->{forgeHeaders}->{$vhost}->( $req, $session );
foreach my $h ( sort keys %headers ) {
if ( defined( my $v = $headers{$h} ) ) {
$class->logger->debug("Send header $h with value $v");
......@@ -691,8 +695,8 @@ sub postOutputFilter {
$class->logger->debug("Filling a html form with fake data");
$class->unset_header_in( $req, "Accept-Encoding" );
my %postdata = $class->tsv->{outputPostData}->{$vhost}->{$uri}
->( $req, $session );
my %postdata =
$class->tsv->{outputPostData}->{$vhost}->{$uri}->( $req, $session );
my $formParams = $class->tsv->{postFormParams}->{$vhost}->{$uri};
my $js = $class->postJavascript( $req, \%postdata, $formParams );
$class->addToHtmlHead( $req, $js );
......@@ -709,8 +713,8 @@ sub postInputFilter {
if ( defined( $class->tsv->{inputPostData}->{$vhost}->{$uri} ) ) {
$class->logger->debug("Replacing fake data with real form data");
my %data = $class->tsv->{inputPostData}->{$vhost}->{$uri}
->( $req, $session );
my %data =
$class->tsv->{inputPostData}->{$vhost}->{$uri}->( $req, $session );
foreach ( keys %data ) {
$data{$_} = uri_escape( $data{$_} );
}
......@@ -730,19 +734,18 @@ sub postJavascript {
foreach my $name ( keys %$data ) {
use bytes;
my $value = "x" x bytes::length( $data->{$name} );
$filler
.= "form.find('input[name=\"$name\"], select[name=\"$name\"], textarea[name=\"$name\"]').val('$value')\n";
$filler .=
"form.find('input[name=\"$name\"], select[name=\"$name\"], textarea[name=\"$name\"]').val('$value')\n";
}
my $submitter
= $formParams->{buttonSelector} eq "none" ? ""
my $submitter =
$formParams->{buttonSelector} eq "none" ? ""
: $formParams->{buttonSelector}
? "form.find('$formParams->{buttonSelector}').click();\n"
: "form.submit();\n";
my $jqueryUrl = $formParams->{jqueryUrl} || "";
$jqueryUrl
= &{ $class->tsv->{portal} } . "skins/common/js/jquery-1.10.2.js"
$jqueryUrl = &{ $class->tsv->{portal} } . "skins/common/js/jquery-1.10.2.js"
if ( $jqueryUrl eq "default" );
$jqueryUrl = "<script type='text/javascript' src='$jqueryUrl'></script>\n"
if ($jqueryUrl);
......
......@@ -69,7 +69,9 @@ sub diff {
}
elsif ( exists $conf[1]->{$key} ) {
if ( $conf[0]->{$key} ne $conf[1]->{$key} ) {
$self->logger->debug( "Key $key has changed : " . $conf[0]->{$key} . " -> " . $conf[1]->{$key} );
$self->logger->debug( "Key $key has changed : "
. $conf[0]->{$key} . " -> "
. $conf[1]->{$key} );
$res[0]->{$key} = $conf[0]->{$key};
$res[1]->{$key} = $conf[1]->{$key};
}
......
......@@ -28,7 +28,7 @@ sub getDisplayType {
{
$self->logger->debug("CustomAuth $logo.png found");
return "logo";
};
}
return "standardform";
}
......
......@@ -63,8 +63,8 @@ sub setAuthSessionInfo {
}
sub getDisplayType {
my ( $self ) = @_;
return ( $self->{conf}->{sslByAjax} ? "sslform" : "logo") ;
my ($self) = @_;
return ( $self->{conf}->{sslByAjax} ? "sslform" : "logo" );
}
1;
......@@ -1540,7 +1540,8 @@ sub _convertOldFormatConsents {
# Update persistent session
$self->p->updatePersistentSession( $req,
{ _oidcConsents => to_json( \@oidcConsents ) } ) if $count;
{ _oidcConsents => to_json( \@oidcConsents ) } )
if $count;
return $count;
}
......
......@@ -39,10 +39,9 @@ sub init {
}
foreach my $name ( keys %{ $self->conf->{authChoiceModules} } ) {
my @mods
= split( /[;\|]/, $self->conf->{authChoiceModules}->{$name} );
my $module
= '::'
my @mods =
split( /[;\|]/, $self->conf->{authChoiceModules}->{$name} );
my $module = '::'
. [ 'Auth', 'UserDB', 'Password' ]->[$type] . '::'
. $mods[$type];
my $over;
......@@ -60,8 +59,7 @@ sub init {
}
else {
$self->logger->error(
"Choice: unable to load $name, disabling it: "
. $self->error );
"Choice: unable to load $name, disabling it: " . $self->error );
$self->error('');
}
......@@ -77,8 +75,8 @@ sub init {
my $cond = $mods[4];
if ( defined $cond and $cond !~ /^$/ ) {
$self->logger->debug("Found rule $cond for $name");
$_choiceRules->{$name}
= $safe->reval("sub{my(\$env)=\@_;return ($cond)}");
$_choiceRules->{$name} =
$safe->reval("sub{my(\$env)=\@_;return ($cond)}");
if ($@) {
$self->logger->error("Bad condition $cond: $@");
return 0;
......@@ -86,7 +84,7 @@ sub init {
}
else {
$self->logger->debug("No rule for $name");
$_choiceRules->{$name} = sub {1};
$_choiceRules->{$name} = sub { 1 };
}
}
unless ( keys %{ $self->modules } ) {
......@@ -125,8 +123,8 @@ sub checkChoice {
unless ($name) {
# Check with other methods
$name
||= $req->param( $self->conf->{authChoiceParam} )
$name ||=
$req->param( $self->conf->{authChoiceParam} )
|| $req->userData->{_choice}
|| $req->sessionInfo->{_choice}
or return 0;
......@@ -186,16 +184,16 @@ sub _buildAuthLoop {
$name =~ s/\_/ /g;
# Find modules associated to authChoice
my ( $auth, $userDB, $passwordDB, $url, $condition )
= split( /[;\|]/, $self->conf->{authChoiceModules}->{$_} );
my ( $auth, $userDB, $passwordDB, $url, $condition ) =
split( /[;\|]/, $self->conf->{authChoiceModules}->{$_} );
unless ( $_choiceRules->{$_} ) {
$self->logger->error("$_ has no rule !!!");
$_choiceRules->{$_} = sub {1};
$_choiceRules->{$_} = sub { 1 };
}
unless ( $_choiceRules->{$_}->( $req->env ) ) {
$self->logger->debug(
"Condition returns false, authentication choice $_ will not be displayed"
"Condition returns false, authentication choice $_ will not be displayed"
);
}
else {
......@@ -204,12 +202,12 @@ sub _buildAuthLoop {
# Default URL
$req->{cspFormAction} ||= '';
if (defined $url
and not $self->checkXSSAttack(
'URI', $req->env->{'REQUEST_URI'}
)
and $url
=~ q%^(https?://)?[^\s/.?#$].[^\s]+$% # URL must be well formatted
if (
defined $url
and not $self->checkXSSAttack( 'URI',
$req->env->{'REQUEST_URI'} )
and $url =~
q%^(https?://)?[^\s/.?#$].[^\s]+$% # URL must be well formatted
)
{
#$url .= $req->env->{'REQUEST_URI'};
......@@ -241,8 +239,8 @@ sub _buildAuthLoop {
$optionsLoop->{$displayType} = 1;
my $logo = $_;
if ( $auth eq 'Custom' ) {
$logo
= ( $self->{conf}->{customAuth} =~ /::(\w+)$/ )[0];
$logo =
( $self->{conf}->{customAuth} =~ /::(\w+)$/ )[0];
}
# If displayType is logo, check if key.png is available
......
......@@ -28,8 +28,8 @@ has stylesheet => (
builder => sub {
my $self = $_[0];
my $xslt = XML::LibXSLT->new();
my $styleFile
= ( $self->conf->{notificationXSLTfile}
my $styleFile =
( $self->conf->{notificationXSLTfile}
and -e $self->conf->{notificationXSLTfile} )
? $self->conf->{notificationXSLTfile}
: $self->conf->{templatesDir} . '/common/notification.xsl';
......@@ -37,8 +37,7 @@ has stylesheet => (
$self->{logger}->error("$styleFile not found, aborting");
die "$styleFile not found";
}
return $xslt->parse_stylesheet(
$self->parser->parse_file($styleFile) );
return $xslt->parse_stylesheet( $self->parser->parse_file($styleFile) );
}
);
......@@ -97,8 +96,7 @@ sub checkForNotifications {
$self->logger->debug("Get condition $condition");
$condition = $self->p->HANDLER->substitute($condition);
unless ( $condition
= $self->p->HANDLER->buildSub($condition) )
unless ( $condition = $self->p->HANDLER->buildSub($condition) )
{
$self->logger->error( 'Notification condition error: '
. $self->p->HANDLER->tsv->{jail}->error );
......@@ -173,8 +171,7 @@ sub getNotifBack {
if (s/^reference//) {
$refs->{$v} = $_;
}
elsif ( s/^check// and /^(\d+x\d+)x(\d+)$/ and $v eq 'accepted' )
{
elsif ( s/^check// and /^(\d+x\d+)x(\d+)$/ and $v eq 'accepted' ) {
push @{ $checks->{$1} }, $2;
}
}
......@@ -223,8 +220,7 @@ sub getNotifBack {
$self->p->updatePersistentSession( $req,
{ "notification_$reference" => time() } );
$self->logger->debug(
"Notification $reference registered in persistent session"
);
"Notification $reference registered in persistent session");
}
# Notifications accepted for this file, delete it unless it's a wildcard
......
......@@ -25,8 +25,7 @@ count(1);
expectReject($res);
ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get Menu' );
ok( $res->[2]->[0] =~ m%<span id="languages"></span>%,
' Language icons found' )
ok( $res->[2]->[0] =~ m%<span id="languages"></span>%, ' Language icons found' )
or print STDERR Dumper( $res->[2]->[0] );
count(2);
......
......@@ -20,7 +20,8 @@ SKIP: {
$dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')");
my $client = LLNG::Manager::Test->new(
{ ini => {
{
ini => {
logLevel => 'error',
useSafeJail => 1,
portalMainLogo => 'common/logos/logo_llng_old.png',
......@@ -32,9 +33,9 @@ SKIP: {
'1_demo' => 'Demo;Demo;Null;;0',
'2_sql' => 'DBI;DBI;DBI;;1',
'3_demo' =>
'Demo;Demo;Null;https://test.example.com;$env->{ipAddr} =~ /127.0.0.1/',
'Demo;Demo;Null;https://test.example.com;$env->{ipAddr} =~ /127.0.0.1/',
'4_demo' =>
'Demo;Demo;Null;https://test.example.com;$env->{ipAddr} =~ /1.2.3.4/',
'Demo;Demo;Null;https://test.example.com;$env->{ipAddr} =~ /1.2.3.4/',
'5_ssl' => 'SSL;LDAP;LDAP',
'6_FakeCustom' => 'Custom;Demo;Demo',
},
......@@ -66,21 +67,23 @@ SKIP: {
ok( $res->[2]->[0] =~ m%<form action="https://test.example.com"%,
' Redirect URL found' )
or print STDERR Dumper( $res->[2]->[0] );
my $header = getHeader($res, 'Content-Security-Policy');
my $header = getHeader( $res, 'Content-Security-Policy' );
ok( $header =~ m%;form-action \'self\' https://test.example.com;%,
' CSP URL found' )
or print STDERR Dumper( $res->[1] );
ok( $res->[2]->[0] !~ /4_demo/, '4_Demo not displayed' );
ok( $res->[2]->[0] =~ qr%<img src="/static/common/logos/logo_llng_old.png"%,
'Found custom Main Logo' )
or print STDERR Dumper( $res->[2]->[0] );
ok(
$res->[2]->[0] =~ qr%<img src="/static/common/logos/logo_llng_old.png"%,
'Found custom Main Logo'
) or print STDERR Dumper( $res->[2]->[0] );
# Test SQL
my $postString = 'user=dwho&password=dwho&test=2_sql';
# Try yo authenticate
# -------------------
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/', IO::String->new($postString),
length => length($postString)
),
......
......@@ -173,6 +173,7 @@ ok(
);
count(1);
$idpId = expectCookie($res);
# expectRedirection( $res,
# qr#^http://auth.rp.com/?\?openidconnectcallback=1\#(.*)$# );
......
......@@ -22,7 +22,8 @@ print F '[
close F;
my $client = LLNG::Manager::Test->new(
{ ini => {
{
ini => {
logLevel => 'error',
useSafeJail => 1,
notification => 1,
......@@ -37,11 +38,11 @@ my $client = LLNG::Manager::Test->new(
# Try yo authenticate
# -------------------
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/',
IO::String->new(
'user=dwho&password=dwho&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw=='
),
'user=dwho&password=dwho&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw=='),
accept => 'text/html',
length => 64,
),
......@@ -53,7 +54,8 @@ my $id = expectCookie($res);
expectForm( $res, undef, '/notifback', 'reference1x1', 'url' );
# Verify that cookie is ciphered (session unvalid)
ok( $res = $client->_get(
ok(
$res = $client->_get(
'/',
query => 'url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==',
cookie => "lemonldap=$id",
......@@ -65,7 +67,8 @@ expectReject($res);
# Try to validate notification without accepting it
my $str = 'reference1x1=testref&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -86,7 +89,8 @@ count(1);
# Try to validate notification without accepting it
$str = 'reference1x1=testref&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -102,7 +106,8 @@ count(2);
# Try to validate notification without accepting it
$str = 'reference1x1=testref&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -117,9 +122,10 @@ ok( $res->[2]->[0] =~ qr%<h2 class="notifText">Test title</h2>%,
count(2);
# Try to validate notification with accepting just one checkbox
$str
= 'reference1x1=testref&check1x1x1=accepted&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
$str =
'reference1x1=testref&check1x1x1=accepted&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -134,9 +140,10 @@ ok( $res->[2]->[0] =~ qr%<h2 class="notifText">Test title</h2>%,
count(2);
# Try to validate notification with accepting all checkboxes
$str
= 'reference1x1=testref&check1x1x1=accepted&check1x1x2=accepted&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
$str =
'reference1x1=testref&check1x1x1=accepted&check1x1x2=accepted&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -152,7 +159,8 @@ count(2);
$id = expectCookie($res);
ok( $res = $client->_get(
ok(
$res = $client->_get(
'/',
cookie => "lemonldap=$id",
length => 64,
......
......@@ -26,7 +26,8 @@ SKIP: {
close F;
my $client = LLNG::Manager::Test->new(
{ ini => {
{
ini => {
logLevel => 'error',
useSafeJail => 1,
notification => 1,
......@@ -41,10 +42,11 @@ SKIP: {
# Try yo authenticate
# -------------------
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/',
IO::String->new(
'user=dwho&password=dwho&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw=='
'user=dwho&password=dwho&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw=='
),
accept => 'text/html',
length => 64,
......@@ -56,7 +58,8 @@ SKIP: {
expectForm( $res, undef, '/notifback', 'reference1x1', 'url' );
# Verify that cookie is ciphered (session unvalid)
ok( $res = $client->_get(
ok(
$res = $client->_get(
'/',
query => 'url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==',
cookie => "lemonldap=$id",
......@@ -67,7 +70,8 @@ SKIP: {
# Try to validate notification without accepting it
my $str = 'reference1x1=testref&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
ok(
$res = $client->_post(
'/notifback',
IO::String->new($str),
cookie => "lemonldap=$id",
......@@ -79,13 +83,15 @@ SKIP: {
ok( $res->[2]->[0] =~ qr%<h2 class="notifText">Test title</h2>%,
'Notification displayed' )
or print STDERR Dumper( $res->[2]->[0] );
ok( $res->[2]->[0] =~ qr%<img src="/static/common/logos/logo_llng_old.png"%,
'Found custom Main Logo' )
or print STDERR Dumper( $res->[2]->[0] );
ok(
$res->[2]->[0] =~ qr%<img src="/static/common/logos/logo_llng_old.png"%,
'Found custom Main Logo'
) or print STDERR Dumper( $res->[2]->[0] );
# Try to validate notification without accepting it
$str = 'reference1x1=testref&url=aHR0cDovL3Rlc3QxLmV4YW1wbGUuY29tLw==';
ok( $res = $client->_post(
ok(
$res = $client->_post(