lemonldap-ng/lemonldap-ng-handler/t/test-psgi-lib.pm

126 lines
3.3 KiB
Perl
Raw Normal View History

2016-02-01 12:11:31 +01:00
# Base library for tests
use strict;
use Data::Dumper;
use 5.10.0;
2016-06-09 13:45:10 +02:00
use POSIX 'strftime';
2016-02-01 12:11:31 +01:00
use_ok('Lemonldap::NG::Common::PSGI::Cli::Lib');
our $client;
2016-02-01 13:15:27 +01:00
our $count = 1;
2016-02-01 20:05:14 +01:00
$Data::Dumper::Deparse = 1;
no warnings 'redefine';
2016-02-01 20:05:14 +01:00
my $module;
2016-11-12 09:24:52 +01:00
our $sessionId =
'f5eec18ebb9bc96352595e2d8ce962e8ecf7af7c9a98cb9a43f9cd181cf4b545';
2016-06-09 13:45:10 +02:00
our $file = "t/sessions/$sessionId";
2016-02-01 12:11:31 +01:00
2016-02-01 13:15:27 +01:00
sub init {
my $arg = shift;
2016-04-29 09:27:26 +02:00
if ($arg) {
$module = $arg;
use_ok($module);
}
2016-02-01 20:05:14 +01:00
ok( $client = Lemonldap::NG::Handler::PSGI::Cli::Lib->new(),
'Client object' );
2016-11-12 09:24:52 +01:00
ok( $client->app, 'App object' ) or explain( $client, '->app...' );
count(3);
2016-06-09 13:45:10 +02:00
open F, ">$file"
or die $!;
my $now = time;
my $ts = strftime "%Y%m%d%H%M%S", localtime;
print F '{"updateTime":"'
. $ts
. '","_timezone":"1","_session_kind":"SSO","_passwordDB":"Demo","startTime":"'
. $ts
. '","ipAddr":"127.0.0.1","UA":"Mozilla/5.0 (X11; VAX4000; rv:43.0) Gecko/20100101 Firefox/143.0 Iceweasel/143.0.1","_user":"dwho","_userDB":"Demo","_lastAuthnUTime":'
. $now
. ',"uid":"dwho","_issuerDB":"Null","_session_id":"f5eec18ebb9bc96352595e2d8ce962e8ecf7af7c9a98cb9a43f9cd181cf4b545","authenticationLevel":1,"_whatToTrace":"dwho","_auth":"Demo","_utime":'
. $now
. ',"loginHistory":{"successLogin":[{"ipAddr":"127.0.0.1","_utime":'
. $now
. '}]},"cn":"Doctor Who","mail":"dwho@badwolf.org"}';
close F;
2016-02-01 13:15:27 +01:00
}
2016-02-01 12:11:31 +01:00
sub client {
return $client;
}
sub module {
2016-04-29 09:27:26 +02:00
if ( my $arg = shift ) {
$module = $arg;
}
return $module;
}
2016-02-01 12:11:31 +01:00
sub count {
my $c = shift;
$count += $c if ($c);
return $count;
}
2016-02-01 20:05:14 +01:00
sub explain {
my ( $get, $ref ) = @_;
$get = Dumper($get) if ( ref $get );
print STDERR "Expect $ref, get $get\n";
}
2016-06-09 13:45:10 +02:00
sub clean {
unlink $file;
}
2016-02-01 13:15:27 +01:00
package Lemonldap::NG::Handler::PSGI::Cli::Lib;
use Mouse;
extends 'Lemonldap::NG::Common::PSGI::Cli::Lib';
2016-02-01 20:05:14 +01:00
has app => (
is => 'ro',
isa => 'CodeRef',
builder => sub {
return $module->run(
{
configStorage => { type => 'File', dirName => 't' },
logLevel => 'error',
2016-02-17 11:07:24 +01:00
cookieName => 'lemonldap',
securedCookie => 0,
https => 0,
2016-02-01 20:05:14 +01:00
}
);
}
);
2016-02-01 13:15:27 +01:00
sub _get {
my ( $self, $path, $query, $host, $cookie ) = @_;
$query //= '';
$host ||= 'test1.example.com';
return $self->app->(
{
'HTTP_ACCEPT' => 'text/html',
'SCRIPT_NAME' => 'lmAuth',
'SERVER_NAME' => '127.0.0.1',
'QUERY_STRING' => $query,
'HTTP_CACHE_CONTROL' => 'max-age=0',
'HTTP_ACCEPT_LANGUAGE' => 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'PATH_INFO' => $path,
'REQUEST_METHOD' => 'GET',
2016-02-01 20:05:14 +01:00
'REQUEST_URI' => '/lmauth',
'X_ORIGINAL_URI' => $path . ( $query ? "?$query" : '' ),
'SERVER_PORT' => '80',
2016-02-01 13:15:27 +01:00
'SERVER_PROTOCOL' => 'HTTP/1.1',
'HTTP_USER_AGENT' =>
'Mozilla/5.0 (VAX-4000; rv:36.0) Gecko/20350101 Firefox',
'REMOTE_ADDR' => '127.0.0.1',
2016-02-01 20:05:14 +01:00
'HTTP_HOST' => $host,
2016-02-17 11:07:24 +01:00
( $cookie ? ( HTTP_COOKIE => $cookie ) : ( HTTP_COOKIE => '' ) )
2016-02-01 13:15:27 +01:00
}
);
}
2016-02-01 12:11:31 +01:00
1;