# Base library for tests use strict; use 5.10.0; use POSIX 'strftime'; use_ok('Lemonldap::NG::Common::PSGI::Cli::Lib'); our $client; our $count = 1; no warnings 'redefine'; my $module; our $sessionId = 'f5eec18ebb9bc96352595e2d8ce962e8ecf7af7c9a98cb9a43f9cd181cf4b545'; our $file = "t/sessions/$sessionId"; sub init { my ( $arg, $prms ) = @_; if ($arg) { $module = $arg; use_ok($module); } $prms ||= {}; %$prms = ( configStorage => { type => 'File', dirName => 't' }, localSessionStorage => '', logLevel => 'error', cookieName => 'lemonldap', securedCookie => 0, https => 0, logger => 'Lemonldap::NG::Common::Logger::Std', %$prms ); ok( $client = Lemonldap::NG::Handler::PSGI::Cli::Lib->new( { ini => $prms } ), 'Client object' ); ok( $client->app, 'App object' ) or explain( $client, '->app...' ); count(3); 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; } sub client { return $client; } sub module { if ( my $arg = shift ) { $module = $arg; } return $module; } sub count { my $c = shift; $count += $c if ($c); return $count; } sub explain { my ( $get, $ref ) = @_; $get = Dumper($get) if ( ref $get ); print STDERR "Expect $ref, get $get\n"; } sub clean { unlink $file; } package Lemonldap::NG::Handler::PSGI::Cli::Lib; use Mouse; extends 'Lemonldap::NG::Common::PSGI::Cli::Lib'; has ini => ( is => 'rw' ); has app => ( is => 'ro', isa => 'CodeRef', builder => sub { return $module->run( $_[0]->{ini} ); } ); sub _get { my ( $self, $path, $query, $host, $cookie, %custom ) = @_; $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', 'REQUEST_URI' => '/lmauth', 'X_ORIGINAL_URI' => $path . ( $query ? "?$query" : '' ), 'SERVER_PORT' => '80', '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', 'HTTP_HOST' => $host, ( $cookie ? ( HTTP_COOKIE => $cookie ) : ( HTTP_COOKIE => '' ) ), %custom, } ); } 1;