lemonldap-ng/lemonldap-ng-portal/t
Maxime Besson 8f5fbb077e When logout-initiating SP has no known SLO endpoint, fallback to portal
In some federations, SLO endpoints are not published, yet SP are still
able to initiate logouts.

This used to cause an error on the portal, this commit changes the error
into a warning in logs. The user remains on the portal and sees a normal
logout message.
2019-03-12 17:58:41 +01:00
..
gpghome Add minimal Auth::GPG 2018-12-21 16:07:28 +01:00
lib/Lemonldap/NG/Portal/Auth Materialize failure #1639 2019-02-09 20:59:03 +01:00
sessions SAML in progress (#595) 2016-11-22 20:55:10 +00:00
sessions2 Rename _loginHistory (#1169) 2017-03-21 21:00:37 +00:00
testslapd Use a DSA account to test ppolicy (#1639) 2019-02-12 09:23:09 +01:00
01-AuthDemo.t make tidy 2018-11-26 14:40:21 +01:00
01-pdata.t tidy with new conf 2019-02-07 09:27:56 +01:00
02-Password-Demo.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
03-XSS-protection.t tidy with new conf 2019-02-07 09:27:56 +01:00
19-Auth-Null.t tidy with new conf 2019-02-07 09:27:56 +01:00
20-Auth-and-password-DBI-dynamic-hash.t tidy with new conf 2019-02-07 09:27:56 +01:00
20-Auth-and-password-DBI.t tidy with new conf 2019-02-07 09:27:56 +01:00
20-Auth-DBI-utf8.t tidy with new conf 2019-02-07 09:27:56 +01:00
21-Auth-and-password-LDAP.t tidy with new conf 2019-02-07 09:27:56 +01:00
21-Auth-LDAP-Policy.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
21-Auth-LDAP-utf8.t tidy with new conf 2019-02-07 09:27:56 +01:00
22-Auth-and-password-AD.t tidy with new conf 2019-02-07 09:27:56 +01:00
23-Auth-and-password-REST.t tidy with new conf 2019-02-07 09:27:56 +01:00
24-AuthApache.t tidy with new conf 2019-02-07 09:27:56 +01:00
24-AuthKerberos.t tidy with new conf 2019-02-07 09:27:56 +01:00
25-AuthSlave.t tidy with new conf 2019-02-07 09:27:56 +01:00
26-AuthRemote.t tidy with new conf 2019-02-07 09:27:56 +01:00
27-AuthProxy.t tidy with new conf 2019-02-07 09:27:56 +01:00
28-AuthChoice-and-password.t tidy with new conf 2019-02-07 09:27:56 +01:00
28-AuthChoice-with-rules.t tidy with new conf 2019-02-07 09:27:56 +01:00
29-AuthGPG.t Skip GPG test if gpg install fails. Fixes debci 2019-02-14 16:39:27 +01:00
29-AuthSSL.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-and-issuer-SAML-Artifact-with-SOAP-SLO-IdP-initiated.t Fix display of ok/nok image during multi-sp saml logout 2019-03-11 18:13:06 +01:00
30-Auth-and-issuer-SAML-Artifact-with-SOAP-SLO.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-and-issuer-SAML-Metadata.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-and-issuer-SAML-POST-IdP-initiated.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-and-issuer-SAML-POST-Missing-SLO.t When logout-initiating SP has no known SLO endpoint, fallback to portal 2019-03-12 17:58:41 +01:00
30-Auth-and-issuer-SAML-POST.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-and-issuer-SAML-Redirect.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-Auth-SAML-with-choice.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-CDC.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-SAML-Head-to-Tail-POST.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-SAML-ReAuth-with-choice.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-SAML-ReAuth.t tidy with new conf 2019-02-07 09:27:56 +01:00
30-SAML-SP-rule.t tidy with new conf 2019-02-07 09:27:56 +01:00
31-Auth-and-issuer-CAS-declared-app.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
31-Auth-and-issuer-CAS-default.t tidy with new conf 2019-02-07 09:27:56 +01:00
31-Auth-and-issuer-CAS-gateway.t tidy with new conf 2019-02-07 09:27:56 +01:00
31-Auth-and-issuer-CAS-proxied.t tidy with new conf 2019-02-07 09:27:56 +01:00
31-Auth-and-issuer-CAS-with-choice-and-cancel.t tidy with new conf 2019-02-07 09:27:56 +01:00
31-Auth-and-issuer-CAS-with-choice.t tidy with new conf 2019-02-07 09:27:56 +01:00
32-Auth-and-issuer-OIDC-authorization_code-OP-logout.t tidy with new conf 2019-02-07 09:27:56 +01:00
32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t Full test for #1639 2019-02-09 20:53:24 +01:00
32-Auth-and-issuer-OIDC-authorization_code.t add test to fix 'id_token validity not correctly evaluated' #1662 2019-02-28 10:37:51 +01:00
32-Auth-and-issuer-OIDC-hybrid.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
32-Auth-and-issuer-OIDC-implicit.t tidy with new conf 2019-02-07 09:27:56 +01:00
32-OIDC-RP-rule.t tidy with new conf 2019-02-07 09:27:56 +01:00
33-Auth-and-issuer-OpenID2.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
34-Auth-Proxy-and-REST-Server.t tidy with new conf 2019-02-07 09:27:56 +01:00
34-Auth-Proxy-and-SOAP-Server.t tidy with new conf 2019-02-07 09:27:56 +01:00
35-My-session.t Verify "mysession" (#970) 2017-03-06 16:43:06 +00:00
35-REST-config-backend.t tidy with new conf 2019-02-07 09:27:56 +01:00
35-REST-sessions-with-REST-server.t tidy with new conf 2019-02-07 09:27:56 +01:00
35-SOAP-config-backend.t tidy with new conf 2019-02-07 09:27:56 +01:00
35-SOAP-sessions-with-SOAP-server.t tidy with new conf 2019-02-07 09:27:56 +01:00
36-Combination-Kerberos-or-Demo.t tidy with new conf 2019-02-07 09:27:56 +01:00
36-Combination-with-over.t tidy with new conf 2019-02-07 09:27:56 +01:00
36-Combination-with-token.t tidy with new conf 2019-02-07 09:27:56 +01:00
36-Combination.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-CAS-App-to-SAML-IdP-POST.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-Logout-from-OIDC-RP-to-SAML-SP.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-OIDC-RP-to-SAML-IdP-GET.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-OIDC-RP-to-SAML-IdP-POST.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-SAML-SP-GET-to-OIDC-OP.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-SAML-SP-POST-to-CAS-server-with-Choice.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-SAML-SP-POST-to-CAS-server.t tidy with new conf 2019-02-07 09:27:56 +01:00
37-SAML-SP-POST-to-OIDC-OP.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-JSON-DBI.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-JSON-File-with-token.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-JSON-File.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-JSON-Server.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-XML-DBI.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-XML-File.t tidy with new conf 2019-02-07 09:27:56 +01:00
40-Notifications-XML-Server.t tidy with new conf 2019-02-07 09:27:56 +01:00
41-Captcha.t tidy with new conf 2019-02-07 09:27:56 +01:00
41-Token.t tidy with new conf 2019-02-07 09:27:56 +01:00
42-Register-Demo-with-captcha.t tidy with new conf 2019-02-07 09:27:56 +01:00
42-Register-Demo-with-token.t tidy with new conf 2019-02-07 09:27:56 +01:00
42-Register-Demo.t tidy with new conf 2019-02-07 09:27:56 +01:00
42-Register-LDAP.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset-Choice.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset-DBI.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset-LDAP.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset-with-captcha.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset-with-token.t tidy with new conf 2019-02-07 09:27:56 +01:00
43-MailPasswordReset.t tidy with new conf 2019-02-07 09:27:56 +01:00
50-IssuerGet.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
60-Status.t tidy with new conf 2019-02-07 09:27:56 +01:00
61-BruteForceProtection.t tidy with new conf 2019-02-07 09:27:56 +01:00
61-ForceAuthn.t tidy with new conf 2019-02-07 09:27:56 +01:00
61-GrantSession.t tidy with new conf 2019-02-07 09:27:56 +01:00
61-Session-ActivityTimeout.t tidy with new conf 2019-02-07 09:27:56 +01:00
61-Session-Timeout.t tidy with new conf 2019-02-07 09:27:56 +01:00
62-SingleSession.t tidy with new conf 2019-02-07 09:27:56 +01:00
63-History.t tidy with new conf 2019-02-07 09:27:56 +01:00
64-StayConnected.t tidy with new conf 2019-02-07 09:27:56 +01:00
65-AutoSignin.t tidy with new conf 2019-02-07 09:27:56 +01:00
66-CDA-already-auth.t tidy with new conf 2019-02-07 09:27:56 +01:00
66-CDA-with-REST.t tidy with new conf 2019-02-07 09:27:56 +01:00
66-CDA-with-SOAP.t tidy with new conf 2019-02-07 09:27:56 +01:00
66-CDA.t tidy with new conf 2019-02-07 09:27:56 +01:00
67-CheckUser-with-token.t Improve unit tests (#1658) 2019-03-10 22:02:19 +01:00
67-CheckUser.t Typo 2019-03-12 16:29:38 +01:00
68-Impersonation-with-merge.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
68-Impersonation.t Improve unit test (#1664) 2019-03-11 22:53:58 +01:00
70-2F-TOTP_8.t tidy with new conf 2019-02-07 09:27:56 +01:00
70-2F-TOTP-with-History.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
70-2F-TOTP.t tidy with new conf 2019-02-07 09:27:56 +01:00
71-2F-U2F-with-History.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
71-2F-U2F.t tidy with new conf 2019-02-07 09:27:56 +01:00
72-2F-REST-with-HISTORY.t tidy with new conf 2019-02-07 09:27:56 +01:00
73-2F-UTOTP-TOTP-and-U2F-with-History.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
73-2F-UTOTP-TOTP-and-U2F.t tidy with new conf 2019-02-07 09:27:56 +01:00
73-2F-UTOTP-TOTP-only-with-History.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
73-2F-UTOTP-TOTP-only.t tidy with new conf 2019-02-07 09:27:56 +01:00
74-2F-Required.t tidy with new conf 2019-02-07 09:27:56 +01:00
75-2F-Registers.t tidy with new conf 2019-02-07 09:27:56 +01:00
76-2F-Ext-with-BruteForce.t Improve unit test (#1632) 2019-02-14 22:09:59 +01:00
76-2F-Ext-with-CodeActivation.t Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
76-2F-Ext-with-GrantSession.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
76-2F-Ext-with-History.t Append unit test (#1632) 2019-02-16 22:00:25 +01:00
77-2F-Mail.t tidy with new conf 2019-02-07 09:27:56 +01:00
90-Translations.t Normalize test names (#595) 2017-03-06 15:56:47 +00:00
99-pod.t Reorganize files - work in progress (#444) 2012-02-28 22:52:36 +00:00
lmConf-1.json Improve unit test (#1664) 2019-03-11 22:53:58 +01:00
pdata.pm make tidy 2018-07-05 23:00:40 +02:00
README.md Add test framework doc 2018-09-06 11:23:49 +02:00
saml-lib.pm Group SAML tests (#595) 2017-03-15 06:29:44 +00:00
sendCode.pl Please use our .perltidyrc 2019-03-07 18:22:58 +01:00
sendOTP.pl make tidy 2018-10-12 10:04:03 +02:00
smtp.pm Replace MIME::Lite by Email::Sender/MIME::Entity (#1206) 2017-03-27 05:22:08 +00:00
test-ldap.pm Clean repo 2017-03-03 17:25:03 +00:00
test-lib.pm Full test for #1639 2019-02-09 20:53:24 +01:00
test-psgi.pm tidy with new conf 2019-02-07 09:27:56 +01:00
vrfyOTP.pl make tidy 2018-10-12 10:04:03 +02:00

NAME

test-lib.pm - Test framework for LLNG portal

SYNOPSIS

use Test::More;
use strict;
use IO::String;

require 't/test-lib.pm';

my $res;

my $client = LLNG::Manager::Test->new( {
    ini => {
        logLevel => 'error',
        #...
    }
  }
);

ok(
    $res = $client->_post(
        '/',
        IO::String->new('user=dwho&password=dwho'),
        length => 23
    ),
    'Auth query'
);
count(1);
expectOK($res);
my $id = expectCookie($res);

clean_sessions();
done_testing( count() );

DESCRIPTION

This test library permits to simulate browser navigation.

Functions

In these functions, $res is the result of a LLNG::Manager::Test::_get() or LLNG::Manager::Test::_post() call (see below).

count($inc)

Returns number of tests done. Increment test number if an argument is given

explain( $result, $expected_result )

Used to display error if test fails:

ok( $res->[0] == 302, 'Get redirection' ) or
  explain( $res->[0], 302 );

clean_sessions()

Clean sessions created during tests

expectRedirection( $res, $location )

Verify that request result is a redirection to $location. $location can be:

  • a string: location must match exactly

  • a regexp: location must match this regexp. In this case, the list of matching strings are returned. Example:

      my( $uri, $query ) = expectRedirection( $res, qr#http://host(/[^\?]*)?(.*)$# );
    

expectAutoPost(@args)

Same behaviour as expectForm() but verify also that form method is post.

TODO: verify javascript

expectForm( $res, $hostRe, $uriRe, @requiredFields )

Verify form in HTML result and return ( $host, $uri, $query, $method ):

  • verify that a GET/POST form exists
  • if a $hostRe regexp is given, verify that form target matches and populates $host. Skipped if $hostRe eq "#"
  • if a $uriRe regexp is given, verify that form target matches and populates $uri
  • if @requiredFields exists, verify that each element is an input name
  • build form-url-encoded string looking at parameters/values and store it in $query

expectAuthenticatedAs($user)

Verify that result has a Lm-Remote-User header and value is $user

expectOK($res)

Verify that returned code is 200

expectBadRequest($res)

Verify that returned code is 400. Note that it works only for Ajax request (see below).

expectReject( $res, $code )

Verify that returned code is 401 and JSON result contains error:"$code". Note that it works only for Ajax request (see below).

expectCookie( $res, $cookieName )

Check if a Set-Cookie exists and set a cookie named $cookieName. Return its value.

exceptCspFormOK( $res, $host )

Verify that Content-Security-Policy header allows to connect to $host.

getCookies($res)

Returns an hash ref with names => values of cookies set by server.

getHeader( $res, $hname )

Returns value of first header named $hname in $res response.

getRedirection($res)

Returns value of Location header.

getUser($res)

Returns value of Lm-Remote-User header.

LLNG::Manager::Test Class

Accessors

  • app: built application
  • class: class to test (default Lemonldap::NG::Portal::Main)
  • p: portal object
  • ini: initialization parameters ($defaultIni values + given parameters)

Methods

logout($id)

Launch a /?logout=1 request an test:

  • if response is 200
  • if cookie 'lemonldap' and 'lemonldappdata' have no value
  • if a GET request with previous cookie value ($i) is rejected

_get( $path, %args )

Simulates a GET requests to $path. Accepted arguments:

  • accept: accepted content, default to Ajax request. Use 'text/html' to test content (to launch a expectForm() for example).
  • cookie: full cookie string
  • custom: additional headers (hash ref only)
  • ip: remote address. Default to 127.0.0.1
  • method: default to GET. Only GET/DELETE values are acceptable (use _post() if you want to launch a POST/PUT request)
  • query: query string
  • referer
  • remote_user: REMOTE_USER header value

_post( $path, $body, %args )

Same as _get except that a body is required. $body must be a file handle. Example with IO::String:

ok( 
    $res = $client->_post(
        '/',
        IO::String->new('user=dwho&password=dwho'),
        length => 23
    ),
    'Auth query'
);

_delete( $path, %args )

Call _get() with method set to DELETE.

_put( $path, $body, %args )

Call _post() with method set to PUT