diff --git a/Makefile b/Makefile index 7e0b1bdf9..fa2538f07 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ DESTDIR= USEDEBIANLIBS=no PROD=$(USEDEBIANLIBS) USEEXTERNALLIBS=no +PARA=$(shell perl -000 -e 'print ( "$(MAKEFLAGS)" =~ /-j(\d+)/ ? "j$1:c" : "")') # Perl options #PERLOPTIONS="INSTALLDIRS=vendor" @@ -379,13 +380,13 @@ manager: manager_conf handler test: all common_test handler_test portal_test manager_test common_test: common - @$(MAKE) -C ${SRCCOMMONDIR} test + @HARNESS_OPTIONS=$(PARA) $(MAKE) -C ${SRCCOMMONDIR} test handler_test: handler @$(MAKE) -C ${SRCHANDLERDIR} test portal_test: portal - @$(MAKE) -C ${SRCPORTALDIR} test + @HARNESS_OPTIONS=$(PARA) $(MAKE) -C ${SRCPORTALDIR} test manager_test: manager @$(MAKE) -C ${SRCMANAGERDIR} test diff --git a/debian/tests/pkg-perl/lemonldap-ng-common.smoke-files b/debian/tests/pkg-perl/lemonldap-ng-common.smoke-files index 4696334bd..3230a3779 100644 --- a/debian/tests/pkg-perl/lemonldap-ng-common.smoke-files +++ b/debian/tests/pkg-perl/lemonldap-ng-common.smoke-files @@ -1,2 +1,3 @@ +.proverc t lemonldap-ng.ini diff --git a/debian/tests/pkg-perl/lemonldap-ng-portal.smoke-files b/debian/tests/pkg-perl/lemonldap-ng-portal.smoke-files index 93694a7c0..16ce7a627 100644 --- a/debian/tests/pkg-perl/lemonldap-ng-portal.smoke-files +++ b/debian/tests/pkg-perl/lemonldap-ng-portal.smoke-files @@ -1,3 +1,5 @@ +.prove +.proverc t site/templates site/htdocs/static/common/icons/ok.png diff --git a/debian/tests/runner b/debian/tests/runner index b703da33f..809ee35bb 100755 --- a/debian/tests/runner +++ b/debian/tests/runner @@ -24,6 +24,9 @@ for LLLIB in $LIST; do fi done cd $LLSOURCEDIR/$LLLIB + cp .proverc .proverc.$$ + echo '--state=slow' >> $LLSOURCEDIR/$LLLIB/.proverc + echo '--j 8' >> $LLSOURCEDIR/$LLLIB/.proverc SKIPLIST=debian/tests/pkg-perl/SKIP SKIPTMP=$(mktemp) @@ -44,6 +47,9 @@ for LLLIB in $LIST; do if [ $EXITCODE = 0 ]; then EXITCODE=$RET; fi fi done + cd $LLSOURCEDIR/$LLLIB + pwd + mv -f .proverc.$$ .proverc cd $LLSOURCEDIR rm -rf $LLSOURCEDIR/$LLLIB/debian diff --git a/lemonldap-ng-common/t/03-Common-Conf-CDBI.t b/lemonldap-ng-common/t/03-Common-Conf-CDBI.t index b72c034d9..3520284ac 100644 --- a/lemonldap-ng-common/t/03-Common-Conf-CDBI.t +++ b/lemonldap-ng-common/t/03-Common-Conf-CDBI.t @@ -19,7 +19,7 @@ BEGIN { my $h; @ARGV = ("help=groups"); -unlink 't/lmConf.sql'; +unlink 't/cdbiConf.sql'; SKIP: { eval { require DBI; }; @@ -29,7 +29,7 @@ SKIP: { ok( $h = new Lemonldap::NG::Common::Conf( { type => 'CDBI', - dbiChain => "DBI:SQLite:dbname=t/lmConf.sql", + dbiChain => "DBI:SQLite:dbname=t/cdbiConf.sql", dbiUser => '', dbiPassword => '', } @@ -69,6 +69,6 @@ SKIP: { ok( $cfg->{test} eq $test[$i]->{test}, "Test $i is restored" ); } - unlink 't/lmConf.sql'; + unlink 't/cdbiConf.sql'; } diff --git a/lemonldap-ng-common/t/03-Common-Conf-RDBI.t b/lemonldap-ng-common/t/03-Common-Conf-RDBI.t index f81ec64b6..c7158caf2 100644 --- a/lemonldap-ng-common/t/03-Common-Conf-RDBI.t +++ b/lemonldap-ng-common/t/03-Common-Conf-RDBI.t @@ -19,7 +19,7 @@ BEGIN { my $h; @ARGV = ("help=groups"); -unlink 't/lmConf.sql'; +unlink 't/rdbiConf.sql'; SKIP: { eval { require DBI; }; @@ -29,7 +29,7 @@ SKIP: { ok( $h = new Lemonldap::NG::Common::Conf( { type => 'RDBI', - dbiChain => "DBI:SQLite:dbname=t/lmConf.sql", + dbiChain => "DBI:SQLite:dbname=t/rdbiConf.sql", dbiUser => '', dbiPassword => '', } @@ -70,6 +70,6 @@ SKIP: { ok( $cfg->{test} eq $test[$i]->{test}, "Test $i is restored" ); } - unlink 't/lmConf.sql'; + unlink 't/rdbiConf.sql'; } diff --git a/lemonldap-ng-handler/t/test-psgi-lib.pm b/lemonldap-ng-handler/t/test-psgi-lib.pm index c69e34fbe..39af14f73 100644 --- a/lemonldap-ng-handler/t/test-psgi-lib.pm +++ b/lemonldap-ng-handler/t/test-psgi-lib.pm @@ -3,6 +3,7 @@ use strict; use 5.10.0; use POSIX 'strftime'; +use Data::Dumper; use_ok('Lemonldap::NG::Common::PSGI::Cli::Lib'); our $client; diff --git a/lemonldap-ng-manager/t/17-extra2f.t b/lemonldap-ng-manager/t/17-extra2f.t index f90202636..506772fc4 100644 --- a/lemonldap-ng-manager/t/17-extra2f.t +++ b/lemonldap-ng-manager/t/17-extra2f.t @@ -26,9 +26,6 @@ ok( $res = &client->_get( '/confs/2/sfExtra', 'application/json' ), 'Get combModules' ); ok( $resBody = from_json( $res->[2]->[0] ), "Result body contains JSON text" ); -use Data::Dumper; -print Dumper($resBody); - count(6); done_testing( count() ); diff --git a/lemonldap-ng-portal/.prove b/lemonldap-ng-portal/.prove new file mode 100644 index 000000000..251f016ee --- /dev/null +++ b/lemonldap-ng-portal/.prove @@ -0,0 +1,1766 @@ +--- +generation: 3 +last_run_time: 1566327301.05636 +tests: + t/01-AuthDemo.t: + elapsed: 0.392001867294312 + gen: 3 + last_pass_time: 1566327299.10043 + last_result: 0 + last_run_time: 1566327299.10043 + last_todo: 0 + mtime: 1566161691 + seq: 482 + total_passes: 3 + t/01-CSP-and-CORS-headers.t: + elapsed: 0.294459104537964 + gen: 3 + last_pass_time: 1566327299.24321 + last_result: 0 + last_run_time: 1566327299.24321 + last_todo: 0 + mtime: 1566161683 + seq: 486 + total_passes: 3 + t/01-pdata.t: + elapsed: 0.187825918197632 + gen: 3 + last_pass_time: 1566327300.16862 + last_result: 0 + last_run_time: 1566327300.16862 + last_todo: 0 + mtime: 1566161705 + seq: 503 + total_passes: 3 + t/02-Password-Demo.t: + elapsed: 0.308248996734619 + gen: 3 + last_pass_time: 1566327299.9525 + last_result: 0 + last_run_time: 1566327299.9525 + last_todo: 0 + mtime: 1566161694 + seq: 496 + total_passes: 3 + t/03-XSS-protection.t: + elapsed: 0.506947040557861 + gen: 3 + last_pass_time: 1566327297.82901 + last_result: 0 + last_run_time: 1566327297.82901 + last_todo: 0 + mtime: 1566326760 + seq: 460 + total_passes: 3 + t/04-language-selection.t: + elapsed: 0.235898971557617 + gen: 3 + last_pass_time: 1566327299.27685 + last_result: 0 + last_run_time: 1566327299.27685 + last_todo: 0 + mtime: 1566161676 + seq: 487 + total_passes: 3 + t/19-Auth-Null.t: + elapsed: 0.169616937637329 + gen: 3 + last_pass_time: 1566327300.20999 + last_result: 0 + last_run_time: 1566327300.20999 + last_todo: 0 + mtime: 1566161699 + seq: 505 + total_passes: 3 + t/20-Auth-DBI-utf8.t: + elapsed: 0.344451189041138 + gen: 3 + last_pass_time: 1566327298.83822 + last_result: 0 + last_run_time: 1566327298.83822 + last_todo: 0 + mtime: 1566326749 + seq: 476 + total_passes: 3 + t/20-Auth-and-password-DBI-dynamic-hash.t: + elapsed: 0.479628086090088 + gen: 3 + last_pass_time: 1566327297.87073 + last_result: 0 + last_run_time: 1566327297.87073 + last_todo: 0 + mtime: 1566326749 + seq: 461 + total_passes: 3 + t/20-Auth-and-password-DBI.t: + elapsed: 0.316281080245972 + gen: 3 + last_pass_time: 1566327297.69419 + last_result: 0 + last_run_time: 1566327297.69419 + last_todo: 0 + mtime: 1566326749 + seq: 456 + total_passes: 3 + t/21-Auth-LDAP-Policy.t: + elapsed: 0.0136840343475342 + gen: 3 + last_pass_time: 1566327300.74858 + last_result: 0 + last_run_time: 1566327300.74858 + last_todo: 0 + mtime: 1566161698 + seq: 515 + total_passes: 3 + t/21-Auth-LDAP-utf8.t: + elapsed: 0.0272371768951416 + gen: 3 + last_pass_time: 1566327300.84054 + last_result: 0 + last_run_time: 1566327300.84054 + last_todo: 0 + mtime: 1566161697 + seq: 516 + total_passes: 3 + t/21-Auth-and-password-LDAP.t: + elapsed: 0.0128788948059082 + gen: 3 + last_pass_time: 1566327300.86179 + last_result: 0 + last_run_time: 1566327300.86179 + last_todo: 0 + mtime: 1566161703 + seq: 517 + total_passes: 3 + t/22-Auth-and-password-AD.t: + elapsed: 0.0119221210479736 + gen: 3 + last_pass_time: 1566327300.9184 + last_result: 0 + last_run_time: 1566327300.9184 + last_todo: 0 + mtime: 1566161686 + seq: 520 + total_passes: 3 + t/23-Auth-and-password-REST.t: + elapsed: 0.518589973449707 + gen: 3 + last_pass_time: 1566327297.73087 + last_result: 0 + last_run_time: 1566327297.73087 + last_todo: 0 + mtime: 1566161697 + seq: 458 + total_passes: 3 + t/24-AuthApache.t: + elapsed: 0.193931102752686 + gen: 3 + last_pass_time: 1566327300.535 + last_result: 0 + last_run_time: 1566327300.535 + last_todo: 0 + mtime: 1566161679 + seq: 511 + total_passes: 3 + t/24-AuthKerberos.t: + elapsed: 0.265526056289673 + gen: 3 + last_pass_time: 1566327299.67922 + last_result: 0 + last_run_time: 1566327299.67922 + last_todo: 0 + mtime: 1566161710 + seq: 492 + total_passes: 3 + t/25-AuthSlave.t: + elapsed: 0.104701042175293 + gen: 3 + last_pass_time: 1566327300.31333 + last_result: 0 + last_run_time: 1566327300.31333 + last_todo: 0 + mtime: 1566161682 + seq: 509 + total_passes: 3 + t/26-AuthRemote.t: + elapsed: 0.251462936401367 + gen: 3 + last_pass_time: 1566327300.2327 + last_result: 0 + last_run_time: 1566327300.2327 + last_todo: 0 + mtime: 1566161695 + seq: 506 + total_passes: 3 + t/27-AuthProxy.t: + elapsed: 0.0121052265167236 + gen: 3 + last_pass_time: 1566327300.95704 + last_result: 0 + last_run_time: 1566327300.95704 + last_todo: 0 + mtime: 1566161694 + seq: 523 + total_passes: 3 + t/28-AuthChoice-and-password.t: + elapsed: 0.0600540637969971 + gen: 3 + last_pass_time: 1566327300.7168 + last_result: 0 + last_run_time: 1566327300.7168 + last_todo: 0 + mtime: 1566326749 + seq: 514 + total_passes: 3 + t/28-AuthChoice-with-captcha.t: + elapsed: 1.12277579307556 + gen: 3 + last_pass_time: 1566327292.90283 + last_result: 0 + last_run_time: 1566327292.90283 + last_todo: 0 + mtime: 1566326749 + seq: 395 + total_passes: 3 + t/28-AuthChoice-with-rules.t: + elapsed: 0.472162008285522 + gen: 3 + last_pass_time: 1566327298.01837 + last_result: 0 + last_run_time: 1566327298.01837 + last_todo: 0 + mtime: 1566326749 + seq: 462 + total_passes: 3 + t/28-AuthChoice-with-token.t: + elapsed: 0.335257053375244 + gen: 3 + last_pass_time: 1566327299.05944 + last_result: 0 + last_run_time: 1566327299.05944 + last_todo: 0 + mtime: 1566326749 + seq: 481 + total_passes: 3 + t/29-AuthGPG.t: + elapsed: 0.466294050216675 + gen: 3 + last_pass_time: 1566327297.08143 + last_result: 0 + last_run_time: 1566327297.08143 + last_todo: 0 + mtime: 1566161680 + seq: 451 + total_passes: 3 + t/29-AuthSSL.t: + elapsed: 0.259130001068115 + gen: 3 + last_pass_time: 1566327300.09408 + last_result: 0 + last_run_time: 1566327300.09408 + last_todo: 0 + mtime: 1566326760 + seq: 501 + total_passes: 3 + t/30-Auth-SAML-with-choice.t: + elapsed: 0.916493892669678 + gen: 3 + last_pass_time: 1566327295.62733 + last_result: 0 + last_run_time: 1566327295.62733 + last_todo: 0 + mtime: 1566161688 + seq: 432 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Artifact-with-SOAP-SLO-IdP-initiated.t: + elapsed: 1.09337091445923 + gen: 3 + last_pass_time: 1566327295.15423 + last_result: 0 + last_run_time: 1566327295.15423 + last_todo: 0 + mtime: 1566161699 + seq: 424 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Artifact-with-SOAP-SLO.t: + elapsed: 0.845731019973755 + gen: 3 + last_pass_time: 1566327293.49752 + last_result: 0 + last_run_time: 1566327293.49752 + last_todo: 0 + mtime: 1566161705 + seq: 407 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Metadata.t: + elapsed: 0.476730108261108 + gen: 3 + last_pass_time: 1566327298.27251 + last_result: 0 + last_run_time: 1566327298.27251 + last_todo: 0 + mtime: 1566326739 + seq: 469 + total_passes: 3 + t/30-Auth-and-issuer-SAML-POST-IdP-initiated.t: + elapsed: 0.978227138519287 + gen: 3 + last_pass_time: 1566327295.13482 + last_result: 0 + last_run_time: 1566327295.13482 + last_todo: 0 + mtime: 1566161687 + seq: 423 + total_passes: 3 + t/30-Auth-and-issuer-SAML-POST-Missing-SLO.t: + elapsed: 0.99794602394104 + gen: 3 + last_pass_time: 1566327293.71334 + last_result: 0 + last_run_time: 1566327293.71334 + last_todo: 0 + mtime: 1566326749 + seq: 409 + total_passes: 3 + t/30-Auth-and-issuer-SAML-POST.t: + elapsed: 1.04451203346252 + gen: 3 + last_pass_time: 1566327293.75373 + last_result: 0 + last_run_time: 1566327293.75373 + last_todo: 0 + mtime: 1566161677 + seq: 410 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t: + elapsed: 0.977572917938232 + gen: 3 + last_pass_time: 1566327295.31427 + last_result: 0 + last_run_time: 1566327295.31427 + last_todo: 0 + mtime: 1566161687 + seq: 427 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Redirect-MultipleSP-Missing-SLO.t: + elapsed: 1.16870093345642 + gen: 3 + last_pass_time: 1566327293.40209 + last_result: 0 + last_run_time: 1566327293.40209 + last_todo: 0 + mtime: 1566326749 + seq: 404 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Redirect-MultipleSP.t: + elapsed: 1.24253106117249 + gen: 3 + last_pass_time: 1566327293.33228 + last_result: 0 + last_run_time: 1566327293.33228 + last_todo: 0 + mtime: 1566161708 + seq: 401 + total_passes: 3 + t/30-Auth-and-issuer-SAML-Redirect.t: + elapsed: 0.916826963424683 + gen: 3 + last_pass_time: 1566327294.73199 + last_result: 0 + last_run_time: 1566327294.73199 + last_todo: 0 + mtime: 1566161676 + seq: 417 + total_passes: 3 + t/30-CDC.t: + elapsed: 1.03154802322388 + gen: 3 + last_pass_time: 1566327293.87255 + last_result: 0 + last_run_time: 1566327293.87255 + last_todo: 0 + mtime: 1566161684 + seq: 411 + total_passes: 3 + t/30-SAML-Head-to-Tail-POST.t: + elapsed: 0.232720136642456 + gen: 3 + last_pass_time: 1566327287.63193 + last_result: 0 + last_run_time: 1566327287.63193 + last_todo: 0 + mtime: 1566161715 + seq: 368 + total_passes: 3 + t/30-SAML-POST-Logout-when-expired.t: + elapsed: 0.259699821472168 + gen: 3 + last_pass_time: 1566327287.65925 + last_result: 0 + last_run_time: 1566327287.65925 + last_todo: 0 + mtime: 1566161690 + seq: 369 + total_passes: 3 + t/30-SAML-POST-with-Notification.t: + elapsed: 0.293528079986572 + gen: 3 + last_pass_time: 1566327287.6924 + last_result: 0 + last_run_time: 1566327287.6924 + last_todo: 0 + mtime: 1566326760 + seq: 371 + total_passes: 3 + t/30-SAML-ReAuth-with-choice.t: + elapsed: 0.174981832504272 + gen: 3 + last_pass_time: 1566327287.5755 + last_result: 0 + last_run_time: 1566327287.5755 + last_todo: 0 + mtime: 1566326749 + seq: 365 + total_passes: 3 + t/30-SAML-ReAuth.t: + elapsed: 0.191865921020508 + gen: 3 + last_pass_time: 1566327287.59269 + last_result: 0 + last_run_time: 1566327287.59269 + last_todo: 0 + mtime: 1566161708 + seq: 366 + total_passes: 3 + t/30-SAML-SP-rule.t: + elapsed: 11.1634941101074 + gen: 3 + last_pass_time: 1566327287.42381 + last_result: 0 + last_run_time: 1566327287.42381 + last_todo: 0 + mtime: 1566161696 + seq: 356 + total_passes: 3 + t/31-Auth-and-issuer-CAS-Logout-20.t: + elapsed: 0.0539090633392334 + gen: 3 + last_pass_time: 1566327291.23197 + last_result: 0 + last_run_time: 1566327291.23197 + last_todo: 0 + mtime: 1566161678 + seq: 377 + total_passes: 3 + t/31-Auth-and-issuer-CAS-Logout-30.t: + elapsed: 0.620761871337891 + gen: 3 + last_pass_time: 1566327296.69104 + last_result: 0 + last_run_time: 1566327296.69104 + last_todo: 0 + mtime: 1566161702 + seq: 444 + total_passes: 3 + t/31-Auth-and-issuer-CAS-XSS-on-logout.t: + elapsed: 3.36709094047546 + gen: 3 + last_pass_time: 1566327291.19554 + last_result: 0 + last_run_time: 1566327291.19554 + last_todo: 0 + mtime: 1566161684 + seq: 373 + total_passes: 3 + t/31-Auth-and-issuer-CAS-declared-app-userattr.t: + elapsed: 0.913640975952148 + gen: 3 + last_pass_time: 1566327296.56861 + last_result: 0 + last_run_time: 1566327296.56861 + last_todo: 0 + mtime: 1566161683 + seq: 442 + total_passes: 3 + t/31-Auth-and-issuer-CAS-declared-app.t: + elapsed: 0.723327875137329 + gen: 3 + last_pass_time: 1566327296.63981 + last_result: 0 + last_run_time: 1566327296.63981 + last_todo: 0 + mtime: 1566161684 + seq: 443 + total_passes: 3 + t/31-Auth-and-issuer-CAS-declared-apps.t: + elapsed: 11.1433479785919 + gen: 3 + last_pass_time: 1566327287.41173 + last_result: 0 + last_run_time: 1566327287.41173 + last_todo: 0 + mtime: 1566161713 + seq: 353 + total_passes: 3 + t/31-Auth-and-issuer-CAS-default.t: + elapsed: 0.714180946350098 + gen: 3 + last_pass_time: 1566327296.19451 + last_result: 0 + last_run_time: 1566327296.19451 + last_todo: 0 + mtime: 1566161711 + seq: 434 + total_passes: 3 + t/31-Auth-and-issuer-CAS-gateway.t: + elapsed: 0.519260883331299 + gen: 3 + last_pass_time: 1566327298.3292 + last_result: 0 + last_run_time: 1566327298.3292 + last_todo: 0 + mtime: 1566161679 + seq: 471 + total_passes: 3 + t/31-Auth-and-issuer-CAS-proxied.t: + elapsed: 0.862547159194946 + gen: 3 + last_pass_time: 1566327296.46841 + last_result: 0 + last_run_time: 1566327296.46841 + last_todo: 0 + mtime: 1566161676 + seq: 439 + total_passes: 3 + t/31-Auth-and-issuer-CAS-with-choice-and-cancel.t: + elapsed: 0.60164999961853 + gen: 3 + last_pass_time: 1566327296.74038 + last_result: 0 + last_run_time: 1566327296.74038 + last_todo: 0 + mtime: 1566326749 + seq: 446 + total_passes: 3 + t/31-Auth-and-issuer-CAS-with-choice.t: + elapsed: 0.868088960647583 + gen: 3 + last_pass_time: 1566327294.77119 + last_result: 0 + last_run_time: 1566327294.77119 + last_todo: 0 + mtime: 1566326749 + seq: 418 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-authorization_code-OP-logout.t: + elapsed: 0.0763850212097168 + gen: 3 + last_pass_time: 1566327291.25191 + last_result: 0 + last_run_time: 1566327291.25191 + last_todo: 0 + mtime: 1566161685 + seq: 380 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-authorization_code-public_client.t: + elapsed: 0.695075988769531 + gen: 3 + last_pass_time: 1566327296.22073 + last_result: 0 + last_run_time: 1566327296.22073 + last_todo: 0 + mtime: 1566161690 + seq: 435 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t: + elapsed: 0.904077053070068 + gen: 3 + last_pass_time: 1566327295.45362 + last_result: 0 + last_run_time: 1566327295.45362 + last_todo: 0 + mtime: 1566326749 + seq: 429 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-authorization_code-with-none-alg.t: + elapsed: 0.858850955963135 + gen: 3 + last_pass_time: 1566327296.51339 + last_result: 0 + last_run_time: 1566327296.51339 + last_todo: 0 + mtime: 1566161710 + seq: 440 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-authorization_code.t: + elapsed: 0.673908948898315 + gen: 3 + last_pass_time: 1566327296.15482 + last_result: 0 + last_run_time: 1566327296.15482 + last_todo: 0 + mtime: 1566161712 + seq: 433 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-hybrid.t: + elapsed: 0.741499900817871 + gen: 3 + last_pass_time: 1566327296.91301 + last_result: 0 + last_run_time: 1566327296.91301 + last_todo: 0 + mtime: 1566326739 + seq: 448 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-implicit-no-token.t: + elapsed: 0.700356006622314 + gen: 3 + last_pass_time: 1566327297.10022 + last_result: 0 + last_run_time: 1566327297.10022 + last_todo: 0 + mtime: 1566326739 + seq: 452 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-implicit.t: + elapsed: 0.636889934539795 + gen: 3 + last_pass_time: 1566327296.95372 + last_result: 0 + last_run_time: 1566327296.95372 + last_todo: 0 + mtime: 1566326739 + seq: 449 + total_passes: 3 + t/32-Auth-and-issuer-OIDC-sorted.t: + elapsed: 0.484026908874512 + gen: 3 + last_pass_time: 1566327298.29715 + last_result: 0 + last_run_time: 1566327298.29715 + last_todo: 0 + mtime: 1566161679 + seq: 470 + total_passes: 3 + t/32-CAS-10.t: + elapsed: 0.284047842025757 + gen: 3 + last_pass_time: 1566327299.32542 + last_result: 0 + last_run_time: 1566327299.32542 + last_todo: 0 + mtime: 1566161691 + seq: 489 + total_passes: 3 + t/32-OIDC-RP-rule.t: + elapsed: 0.558186054229736 + gen: 3 + last_pass_time: 1566327298.16841 + last_result: 0 + last_run_time: 1566327298.16841 + last_todo: 0 + mtime: 1566161711 + seq: 467 + total_passes: 3 + t/32-OIDC-Token-Spoof.t: + elapsed: 0.185344934463501 + gen: 3 + last_pass_time: 1566327299.31366 + last_result: 0 + last_run_time: 1566327299.31366 + last_todo: 0 + mtime: 1566326760 + seq: 488 + total_passes: 3 + t/33-Auth-and-issuer-OpenID2.t: + elapsed: 0.894211053848267 + gen: 3 + last_pass_time: 1566327294.69601 + last_result: 0 + last_run_time: 1566327294.69601 + last_todo: 0 + mtime: 1566161681 + seq: 416 + total_passes: 3 + t/34-Auth-Proxy-and-REST-Server.t: + elapsed: 0.314558982849121 + gen: 3 + last_pass_time: 1566327291.49427 + last_result: 0 + last_run_time: 1566327291.49427 + last_todo: 0 + mtime: 1566326739 + seq: 385 + total_passes: 3 + t/34-Auth-Proxy-and-SOAP-Server.t: + elapsed: 3.28497314453125 + gen: 3 + last_pass_time: 1566327291.22441 + last_result: 0 + last_run_time: 1566327291.22441 + last_todo: 0 + mtime: 1566161702 + seq: 375 + total_passes: 3 + t/35-My-session.t: + elapsed: 0.276721954345703 + gen: 3 + last_pass_time: 1566327300.18438 + last_result: 0 + last_run_time: 1566327300.18438 + last_todo: 0 + mtime: 1566161715 + seq: 504 + total_passes: 3 + t/35-REST-config-backend.t: + elapsed: 0.477972030639648 + gen: 3 + last_pass_time: 1566327297.62659 + last_result: 0 + last_run_time: 1566327297.62659 + last_todo: 0 + mtime: 1566326760 + seq: 455 + total_passes: 3 + t/35-REST-export-password.t: + elapsed: 0.597575902938843 + gen: 3 + last_pass_time: 1566327298.09318 + last_result: 0 + last_run_time: 1566327298.09318 + last_todo: 0 + mtime: 1566161714 + seq: 465 + total_passes: 3 + t/35-REST-sessions-with-AuthBasic-handler.t: + elapsed: 0.225189924240112 + gen: 3 + last_pass_time: 1566327299.17315 + last_result: 0 + last_run_time: 1566327299.17315 + last_todo: 0 + mtime: 1566326749 + seq: 484 + total_passes: 3 + t/35-REST-sessions-with-REST-server.t: + elapsed: 0.593553066253662 + gen: 3 + last_pass_time: 1566327297.43548 + last_result: 0 + last_run_time: 1566327297.43548 + last_todo: 0 + mtime: 1566161714 + seq: 453 + total_passes: 3 + t/35-SOAP-config-backend.t: + elapsed: 0.897230863571167 + gen: 3 + last_pass_time: 1566327295.25287 + last_result: 0 + last_run_time: 1566327295.25287 + last_todo: 0 + mtime: 1566326739 + seq: 425 + total_passes: 3 + t/35-SOAP-sessions-with-SOAP-server.t: + elapsed: 0.763724088668823 + gen: 3 + last_pass_time: 1566327296.41731 + last_result: 0 + last_run_time: 1566327296.41731 + last_todo: 0 + mtime: 1566161692 + seq: 438 + total_passes: 3 + t/36-Combination-Kerberos-or-Demo.t: + elapsed: 0.235553979873657 + gen: 3 + last_pass_time: 1566327300.24446 + last_result: 0 + last_run_time: 1566327300.24446 + last_todo: 0 + mtime: 1566326749 + seq: 507 + total_passes: 3 + t/36-Combination-with-Choice.t: + elapsed: 0.937578916549683 + gen: 3 + last_pass_time: 1566327294.59879 + last_result: 0 + last_run_time: 1566327294.59879 + last_todo: 0 + mtime: 1566326749 + seq: 414 + total_passes: 3 + t/36-Combination-with-TOTP.t: + elapsed: 0.790159940719604 + gen: 3 + last_pass_time: 1566327291.967 + last_result: 0 + last_run_time: 1566327291.967 + last_todo: 0 + mtime: 1566326760 + seq: 391 + total_passes: 3 + t/36-Combination-with-over.t: + elapsed: 0.313707828521729 + gen: 3 + last_pass_time: 1566327298.99947 + last_result: 0 + last_run_time: 1566327298.99947 + last_todo: 0 + mtime: 1566326749 + seq: 480 + total_passes: 3 + t/36-Combination-with-token.t: + elapsed: 3.40280413627625 + gen: 3 + last_pass_time: 1566327291.46797 + last_result: 0 + last_run_time: 1566327291.46797 + last_todo: 0 + mtime: 1566326760 + seq: 384 + total_passes: 3 + t/36-Combination.t: + elapsed: 0.670563936233521 + gen: 3 + last_pass_time: 1566327296.70899 + last_result: 0 + last_run_time: 1566327296.70899 + last_todo: 0 + mtime: 1566326749 + seq: 445 + total_passes: 3 + t/37-CAS-App-to-SAML-IdP-POST-with-WAYF.t: + elapsed: 0.460299968719482 + gen: 3 + last_pass_time: 1566327301.05077 + last_result: 0 + last_run_time: 1566327301.05077 + last_todo: 0 + mtime: 1566161693 + seq: 527 + total_passes: 3 + t/37-CAS-App-to-SAML-IdP-POST.t: + elapsed: 0.396848917007446 + gen: 3 + last_pass_time: 1566327301.04296 + last_result: 0 + last_run_time: 1566327301.04296 + last_todo: 0 + mtime: 1566161713 + seq: 526 + total_passes: 3 + t/37-Logout-from-OIDC-RP-to-SAML-SP.t: + elapsed: 1.2148060798645 + gen: 3 + last_pass_time: 1566327292.9966 + last_result: 0 + last_run_time: 1566327292.9966 + last_todo: 0 + mtime: 1566161678 + seq: 396 + total_passes: 3 + t/37-OIDC-RP-to-SAML-IdP-GET-with-WAYF.t: + elapsed: 1.23219895362854 + gen: 3 + last_pass_time: 1566327293.3846 + last_result: 0 + last_run_time: 1566327293.3846 + last_todo: 0 + mtime: 1566161681 + seq: 403 + total_passes: 3 + t/37-OIDC-RP-to-SAML-IdP-GET.t: + elapsed: 1.26653218269348 + gen: 3 + last_pass_time: 1566327293.47894 + last_result: 0 + last_run_time: 1566327293.47894 + last_todo: 0 + mtime: 1566161702 + seq: 406 + total_passes: 3 + t/37-OIDC-RP-to-SAML-IdP-POST.t: + elapsed: 1.15624189376831 + gen: 3 + last_pass_time: 1566327293.14622 + last_result: 0 + last_run_time: 1566327293.14622 + last_todo: 0 + mtime: 1566161715 + seq: 398 + total_passes: 3 + t/37-SAML-SP-GET-to-OIDC-OP.t: + elapsed: 0.957540035247803 + gen: 3 + last_pass_time: 1566327292.73824 + last_result: 0 + last_run_time: 1566327292.73824 + last_todo: 0 + mtime: 1566161678 + seq: 394 + total_passes: 3 + t/37-SAML-SP-POST-to-CAS-server-with-Choice.t: + elapsed: 0.916709899902344 + gen: 3 + last_pass_time: 1566327294.50671 + last_result: 0 + last_run_time: 1566327294.50671 + last_todo: 0 + mtime: 1566161698 + seq: 413 + total_passes: 3 + t/37-SAML-SP-POST-to-CAS-server.t: + elapsed: 0.982300996780396 + gen: 3 + last_pass_time: 1566327294.61864 + last_result: 0 + last_run_time: 1566327294.61864 + last_todo: 0 + mtime: 1566161694 + seq: 415 + total_passes: 3 + t/37-SAML-SP-POST-to-OIDC-OP.t: + elapsed: 1.12614583969116 + gen: 3 + last_pass_time: 1566327293.36507 + last_result: 0 + last_run_time: 1566327293.36507 + last_todo: 0 + mtime: 1566161709 + seq: 402 + total_passes: 3 + t/38-No-persistent-session.t: + elapsed: 0.0705549716949463 + gen: 3 + last_pass_time: 1566327291.2465 + last_result: 0 + last_run_time: 1566327291.2465 + last_todo: 0 + mtime: 1566161696 + seq: 379 + total_passes: 3 + t/40-Notifications-JSON-DBI.t: + elapsed: 0.38671088218689 + gen: 3 + last_pass_time: 1566327298.25027 + last_result: 0 + last_run_time: 1566327298.25027 + last_todo: 0 + mtime: 1566326760 + seq: 468 + total_passes: 3 + t/40-Notifications-JSON-File-with-token.t: + elapsed: 0.346669912338257 + gen: 3 + last_pass_time: 1566327299.47602 + last_result: 0 + last_run_time: 1566327299.47602 + last_todo: 0 + mtime: 1566326760 + seq: 491 + total_passes: 3 + t/40-Notifications-JSON-File.t: + elapsed: 0.402300834655762 + gen: 3 + last_pass_time: 1566327298.77921 + last_result: 0 + last_run_time: 1566327298.77921 + last_todo: 0 + mtime: 1566326760 + seq: 474 + total_passes: 3 + t/40-Notifications-JSON-Server.t: + elapsed: 0.249919891357422 + gen: 3 + last_pass_time: 1566327299.13487 + last_result: 0 + last_run_time: 1566327299.13487 + last_todo: 0 + mtime: 1566326760 + seq: 483 + total_passes: 3 + t/40-Notifications-XML-DBI.t: + elapsed: 0.564214944839478 + gen: 3 + last_pass_time: 1566327297.76934 + last_result: 0 + last_run_time: 1566327297.76934 + last_todo: 0 + mtime: 1566326760 + seq: 459 + total_passes: 3 + t/40-Notifications-XML-File.t: + elapsed: 0.565671920776367 + gen: 3 + last_pass_time: 1566327298.05427 + last_result: 0 + last_run_time: 1566327298.05427 + last_todo: 0 + mtime: 1566326760 + seq: 463 + total_passes: 3 + t/40-Notifications-XML-Server.t: + elapsed: 0.697104215621948 + gen: 3 + last_pass_time: 1566327297.06462 + last_result: 0 + last_run_time: 1566327297.06462 + last_todo: 0 + mtime: 1566326760 + seq: 450 + total_passes: 3 + t/41-Captcha.t: + elapsed: 1.70595598220825 + gen: 3 + last_pass_time: 1566327293.59842 + last_result: 0 + last_run_time: 1566327293.59842 + last_todo: 0 + mtime: 1566326749 + seq: 408 + total_passes: 3 + t/41-Token-Global-Storage.t: + elapsed: 0.316540956497192 + gen: 3 + last_pass_time: 1566327299.4466 + last_result: 0 + last_run_time: 1566327299.4466 + last_todo: 0 + mtime: 1566161683 + seq: 490 + total_passes: 3 + t/41-Token.t: + elapsed: 0.231583833694458 + gen: 3 + last_pass_time: 1566327299.8681 + last_result: 0 + last_run_time: 1566327299.8681 + last_todo: 0 + mtime: 1566161711 + seq: 494 + total_passes: 3 + t/42-Register-Demo-with-captcha.t: + elapsed: 1.25197291374207 + gen: 3 + last_pass_time: 1566327293.03345 + last_result: 0 + last_run_time: 1566327293.03345 + last_todo: 0 + mtime: 1566161713 + seq: 397 + total_passes: 3 + t/42-Register-Demo-with-token.t: + elapsed: 0.92218804359436 + gen: 3 + last_pass_time: 1566327295.53705 + last_result: 0 + last_run_time: 1566327295.53705 + last_todo: 0 + mtime: 1566161702 + seq: 431 + total_passes: 3 + t/42-Register-Demo.t: + elapsed: 0.948164939880371 + gen: 3 + last_pass_time: 1566327296.4007 + last_result: 0 + last_run_time: 1566327296.4007 + last_todo: 0 + mtime: 1566161680 + seq: 437 + total_passes: 3 + t/42-Register-LDAP.t: + elapsed: 0.449860095977783 + gen: 3 + last_pass_time: 1566327297.70469 + last_result: 0 + last_run_time: 1566327297.70469 + last_todo: 0 + mtime: 1566161675 + seq: 457 + total_passes: 3 + t/42-Register-Security.t: + elapsed: 0.711199045181274 + gen: 3 + last_pass_time: 1566327294.98913 + last_result: 0 + last_run_time: 1566327294.98913 + last_todo: 0 + mtime: 1566161675 + seq: 422 + total_passes: 3 + t/43-MailPasswordReset-Choice.t: + elapsed: 0.903246164321899 + gen: 3 + last_pass_time: 1566327292.68287 + last_result: 0 + last_run_time: 1566327292.68287 + last_todo: 0 + mtime: 1566326749 + seq: 393 + total_passes: 3 + t/43-MailPasswordReset-DBI.t: + elapsed: 1.19199299812317 + gen: 3 + last_pass_time: 1566327293.97881 + last_result: 0 + last_run_time: 1566327293.97881 + last_todo: 0 + mtime: 1566326749 + seq: 412 + total_passes: 3 + t/43-MailPasswordReset-LDAP.t: + elapsed: 0.563808917999268 + gen: 3 + last_pass_time: 1566327297.54815 + last_result: 0 + last_run_time: 1566327297.54815 + last_todo: 0 + mtime: 1566161714 + seq: 454 + total_passes: 3 + t/43-MailPasswordReset-with-captcha.t: + elapsed: 0.0328390598297119 + gen: 3 + last_pass_time: 1566327291.21053 + last_result: 0 + last_run_time: 1566327291.21053 + last_todo: 0 + mtime: 1566161700 + seq: 374 + total_passes: 3 + t/43-MailPasswordReset-with-token.t: + elapsed: 0.775239944458008 + gen: 3 + last_pass_time: 1566327294.78822 + last_result: 0 + last_run_time: 1566327294.78822 + last_todo: 0 + mtime: 1566161695 + seq: 419 + total_passes: 3 + t/43-MailPasswordReset.t: + elapsed: 0.72420597076416 + gen: 3 + last_pass_time: 1566327294.88539 + last_result: 0 + last_run_time: 1566327294.88539 + last_todo: 0 + mtime: 1566161707 + seq: 421 + total_passes: 3 + t/50-IssuerGet.t: + elapsed: 0.280128002166748 + gen: 3 + last_pass_time: 1566327299.92293 + last_result: 0 + last_run_time: 1566327299.92293 + last_todo: 0 + mtime: 1566161715 + seq: 495 + total_passes: 3 + t/59-Double-cookies-Refresh-and-Logout.t: + elapsed: 0.148874044418335 + gen: 3 + last_pass_time: 1566327287.54875 + last_result: 0 + last_run_time: 1566327287.54875 + last_todo: 0 + mtime: 1566326749 + seq: 364 + total_passes: 3 + t/59-Double-cookies-for-Double-sessions.t: + elapsed: 0.292942047119141 + gen: 3 + last_pass_time: 1566327300.27459 + last_result: 0 + last_run_time: 1566327300.27459 + last_todo: 0 + mtime: 1566161696 + seq: 508 + total_passes: 3 + t/59-Double-cookies-for-a-Single-session.t: + elapsed: 0.293147087097168 + gen: 3 + last_pass_time: 1566327300.00943 + last_result: 0 + last_run_time: 1566327300.00943 + last_todo: 0 + mtime: 1566161704 + seq: 498 + total_passes: 3 + t/59-Secured-cookie-Refresh-and-Logout.t: + elapsed: 0.123552083969116 + gen: 3 + last_pass_time: 1566327301.01312 + last_result: 0 + last_run_time: 1566327301.01312 + last_todo: 0 + mtime: 1566326749 + seq: 525 + total_passes: 3 + t/60-Status.t: + elapsed: 0.190748929977417 + gen: 3 + last_pass_time: 1566327300.61519 + last_result: 0 + last_run_time: 1566327300.61519 + last_todo: 0 + mtime: 1566161694 + seq: 513 + total_passes: 3 + t/61-BruteForceProtection.t: + elapsed: 0.278847932815552 + gen: 3 + last_pass_time: 1566327287.67735 + last_result: 0 + last_run_time: 1566327287.67735 + last_todo: 0 + mtime: 1566161697 + seq: 370 + total_passes: 3 + t/61-ForceAuthn.t: + elapsed: 11.1047480106354 + gen: 3 + last_pass_time: 1566327287.42749 + last_result: 0 + last_run_time: 1566327287.42749 + last_todo: 0 + mtime: 1566161700 + seq: 357 + total_passes: 3 + t/61-GrantSession.t: + elapsed: 11.1543030738831 + gen: 3 + last_pass_time: 1566327287.44493 + last_result: 0 + last_run_time: 1566327287.44493 + last_todo: 0 + mtime: 1566161695 + seq: 360 + total_passes: 3 + t/61-Session-ActivityTimeout.t: + elapsed: 0.0340349674224854 + gen: 3 + last_pass_time: 1566327287.43423 + last_result: 0 + last_run_time: 1566327287.43423 + last_todo: 0 + mtime: 1566161690 + seq: 358 + total_passes: 3 + t/61-Session-Timeout.t: + elapsed: 11.2445900440216 + gen: 3 + last_pass_time: 1566327287.41527 + last_result: 0 + last_run_time: 1566327287.41527 + last_todo: 0 + mtime: 1566161686 + seq: 354 + total_passes: 3 + t/62-SingleSession.t: + elapsed: 11.120493888855 + gen: 3 + last_pass_time: 1566327287.41901 + last_result: 0 + last_run_time: 1566327287.41901 + last_todo: 0 + mtime: 1566161709 + seq: 355 + total_passes: 3 + t/62-UpgradeSession.t: + elapsed: 11.096400976181 + gen: 3 + last_pass_time: 1566327287.44082 + last_result: 0 + last_run_time: 1566327287.44082 + last_todo: 0 + mtime: 1566326760 + seq: 359 + total_passes: 3 + t/63-History.t: + elapsed: 0.346016883850098 + gen: 3 + last_pass_time: 1566327298.50952 + last_result: 0 + last_run_time: 1566327298.50952 + last_todo: 0 + mtime: 1566161677 + seq: 472 + total_passes: 3 + t/64-StayConnected.t: + elapsed: 0.36823296546936 + gen: 3 + last_pass_time: 1566327298.85467 + last_result: 0 + last_run_time: 1566327298.85467 + last_todo: 0 + mtime: 1566161711 + seq: 477 + total_passes: 3 + t/65-AutoSignin.t: + elapsed: 0.237323045730591 + gen: 3 + last_pass_time: 1566327300.15078 + last_result: 0 + last_run_time: 1566327300.15078 + last_todo: 0 + mtime: 1566161678 + seq: 502 + total_passes: 3 + t/66-CDA-PSGI-Try.t: + elapsed: 0.270328044891357 + gen: 3 + last_pass_time: 1566327300.043 + last_result: 0 + last_run_time: 1566327300.043 + last_todo: 0 + mtime: 1566326739 + seq: 499 + total_passes: 3 + t/66-CDA-already-auth.t: + elapsed: 0.310588121414185 + gen: 3 + last_pass_time: 1566327300.06925 + last_result: 0 + last_run_time: 1566327300.06925 + last_todo: 0 + mtime: 1566161687 + seq: 500 + total_passes: 3 + t/66-CDA-with-REST.t: + elapsed: 0.293444156646729 + gen: 3 + last_pass_time: 1566327300.95238 + last_result: 0 + last_run_time: 1566327300.95238 + last_todo: 0 + mtime: 1566161696 + seq: 522 + total_passes: 3 + t/66-CDA-with-SOAP.t: + elapsed: 0.265095949172974 + gen: 3 + last_pass_time: 1566327301.05571 + last_result: 0 + last_run_time: 1566327301.05571 + last_todo: 0 + mtime: 1566161710 + seq: 528 + total_passes: 3 + t/66-CDA.t: + elapsed: 0.265115976333618 + gen: 3 + last_pass_time: 1566327299.98205 + last_result: 0 + last_run_time: 1566327299.98205 + last_todo: 0 + mtime: 1566161685 + seq: 497 + total_passes: 3 + t/67-CheckUser-with-Global-token.t: + elapsed: 0.216699123382568 + gen: 3 + last_pass_time: 1566327287.61783 + last_result: 0 + last_run_time: 1566327287.61783 + last_todo: 0 + mtime: 1566326760 + seq: 367 + total_passes: 3 + t/67-CheckUser-with-issuer-SAML-POST.t: + elapsed: 0.69377613067627 + gen: 3 + last_pass_time: 1566327291.87292 + last_result: 0 + last_run_time: 1566327291.87292 + last_todo: 0 + mtime: 1566326760 + seq: 388 + total_passes: 3 + t/67-CheckUser-with-token.t: + elapsed: 3.31333684921265 + gen: 3 + last_pass_time: 1566327291.25827 + last_result: 0 + last_run_time: 1566327291.25827 + last_todo: 0 + mtime: 1566326760 + seq: 381 + total_passes: 3 + t/67-CheckUser.t: + elapsed: 3.89076805114746 + gen: 3 + last_pass_time: 1566327291.89344 + last_result: 0 + last_run_time: 1566327291.89344 + last_todo: 0 + mtime: 1566326760 + seq: 389 + total_passes: 3 + t/67-Checkuser-with-Impersonation-and-whatToTrace.t: + elapsed: 0.547175884246826 + gen: 3 + last_pass_time: 1566327298.59877 + last_result: 0 + last_run_time: 1566327298.59877 + last_todo: 0 + mtime: 1566326760 + seq: 473 + total_passes: 3 + t/68-ContextSwitching-with-Logout.t: + elapsed: 0.487967014312744 + gen: 3 + last_pass_time: 1566327298.08162 + last_result: 0 + last_run_time: 1566327298.08162 + last_todo: 0 + mtime: 1566326749 + seq: 464 + total_passes: 3 + t/68-ContextSwitching.t: + elapsed: 0.811131954193115 + gen: 3 + last_pass_time: 1566327294.8594 + last_result: 0 + last_run_time: 1566327294.8594 + last_todo: 0 + mtime: 1566326749 + seq: 420 + total_passes: 3 + t/68-Impersonation-with-History.t: + elapsed: 0.0629830360412598 + gen: 3 + last_pass_time: 1566327291.24239 + last_result: 0 + last_run_time: 1566327291.24239 + last_todo: 0 + mtime: 1566161705 + seq: 378 + total_passes: 3 + t/68-Impersonation-with-TOTP.t: + elapsed: 0.415974855422974 + gen: 3 + last_pass_time: 1566327300.88454 + last_result: 0 + last_run_time: 1566327300.88454 + last_todo: 0 + mtime: 1566161689 + seq: 518 + total_passes: 3 + t/68-Impersonation-with-doubleCookies.t: + elapsed: 0.761358022689819 + gen: 3 + last_pass_time: 1566327291.94145 + last_result: 0 + last_run_time: 1566327291.94145 + last_todo: 0 + mtime: 1566161699 + seq: 390 + total_passes: 3 + t/68-Impersonation-with-filtered-merge.t: + elapsed: 0.214640140533447 + gen: 3 + last_pass_time: 1566327300.97656 + last_result: 0 + last_run_time: 1566327300.97656 + last_todo: 0 + mtime: 1566161712 + seq: 524 + total_passes: 3 + t/68-Impersonation-with-merge.t: + elapsed: 0.217803001403809 + gen: 3 + last_pass_time: 1566327300.9461 + last_result: 0 + last_run_time: 1566327300.9461 + last_todo: 0 + mtime: 1566161684 + seq: 521 + total_passes: 3 + t/68-Impersonation.t: + elapsed: 0.978971004486084 + gen: 3 + last_pass_time: 1566327296.37336 + last_result: 0 + last_run_time: 1566327296.37336 + last_todo: 0 + mtime: 1566161703 + seq: 436 + total_passes: 3 + t/69-FavApps.t: + elapsed: 0.202436208724976 + gen: 3 + last_pass_time: 1566327300.91188 + last_result: 0 + last_run_time: 1566327300.91188 + last_todo: 0 + mtime: 1566326749 + seq: 519 + total_passes: 3 + t/70-2F-TOTP-8.t: + elapsed: 0.814767122268677 + gen: 3 + last_pass_time: 1566327291.9933 + last_result: 0 + last_run_time: 1566327291.9933 + last_todo: 0 + mtime: 1566326760 + seq: 392 + total_passes: 3 + t/70-2F-TOTP-with-History.t: + elapsed: 0.429188013076782 + gen: 3 + last_pass_time: 1566327298.92575 + last_result: 0 + last_run_time: 1566327298.92575 + last_todo: 0 + mtime: 1566161680 + seq: 479 + total_passes: 3 + t/70-2F-TOTP-with-TTL-and-JSON.t: + elapsed: 3.4246768951416 + gen: 3 + last_pass_time: 1566327291.5472 + last_result: 0 + last_run_time: 1566327291.5472 + last_todo: 0 + mtime: 1566161696 + seq: 387 + total_passes: 3 + t/70-2F-TOTP-with-TTL-and-XML.t: + elapsed: 3.52087497711182 + gen: 3 + last_pass_time: 1566327291.52583 + last_result: 0 + last_run_time: 1566327291.52583 + last_todo: 0 + mtime: 1566161692 + seq: 386 + total_passes: 3 + t/70-2F-TOTP-with-TTL.t: + elapsed: 3.29401016235352 + gen: 3 + last_pass_time: 1566327291.44229 + last_result: 0 + last_run_time: 1566327291.44229 + last_todo: 0 + mtime: 1566161691 + seq: 383 + total_passes: 3 + t/71-2F-U2F-with-History.t: + elapsed: 1.65858602523804 + gen: 3 + last_pass_time: 1566327293.43975 + last_result: 0 + last_run_time: 1566327293.43975 + last_todo: 0 + mtime: 1566161686 + seq: 405 + total_passes: 3 + t/71-2F-U2F-with-TTL-and-msg.t: + elapsed: 0.0913839340209961 + gen: 3 + last_pass_time: 1566327287.49313 + last_result: 0 + last_run_time: 1566327287.49313 + last_todo: 0 + mtime: 1566161701 + seq: 362 + total_passes: 3 + t/71-2F-U2F-with-TTL.t: + elapsed: 0.114893913269043 + gen: 3 + last_pass_time: 1566327287.51634 + last_result: 0 + last_run_time: 1566327287.51634 + last_todo: 0 + mtime: 1566161679 + seq: 363 + total_passes: 3 + t/71-2F-U2F.t: + elapsed: 1.39890217781067 + gen: 3 + last_pass_time: 1566327293.1793 + last_result: 0 + last_run_time: 1566327293.1793 + last_todo: 0 + mtime: 1566161693 + seq: 399 + total_passes: 3 + t/72-2F-REST-with-History.t: + elapsed: 0.423582077026367 + gen: 3 + last_pass_time: 1566327298.146 + last_result: 0 + last_run_time: 1566327298.146 + last_todo: 0 + mtime: 1566161681 + seq: 466 + total_passes: 3 + t/73-2F-UTOTP-TOTP-and-U2F-with-History.t: + elapsed: 0.320044994354248 + gen: 3 + last_pass_time: 1566327287.7221 + last_result: 0 + last_run_time: 1566327287.7221 + last_todo: 0 + mtime: 1566161708 + seq: 372 + total_passes: 3 + t/73-2F-UTOTP-TOTP-and-U2F.t: + elapsed: 1.6521520614624 + gen: 3 + last_pass_time: 1566327293.19636 + last_result: 0 + last_run_time: 1566327293.19636 + last_todo: 0 + mtime: 1566161686 + seq: 400 + total_passes: 3 + t/73-2F-UTOTP-TOTP-only-with-History.t: + elapsed: 0.0505719184875488 + gen: 3 + last_pass_time: 1566327291.22789 + last_result: 0 + last_run_time: 1566327291.22789 + last_todo: 0 + mtime: 1566161705 + seq: 376 + total_passes: 3 + t/73-2F-UTOTP-TOTP-only.t: + elapsed: 0.396163940429688 + gen: 3 + last_pass_time: 1566327298.90383 + last_result: 0 + last_run_time: 1566327298.90383 + last_todo: 0 + mtime: 1566161692 + seq: 478 + total_passes: 3 + t/74-2F-Required.t: + elapsed: 0.29276704788208 + gen: 3 + last_pass_time: 1566327299.1874 + last_result: 0 + last_run_time: 1566327299.1874 + last_todo: 0 + mtime: 1566161698 + seq: 485 + total_passes: 3 + t/75-2F-Registers.t: + elapsed: 3.26440095901489 + gen: 3 + last_pass_time: 1566327291.4073 + last_result: 0 + last_run_time: 1566327291.4073 + last_todo: 0 + mtime: 1566161688 + seq: 382 + total_passes: 3 + t/76-2F-Ext-with-BruteForce.t: + elapsed: 11.1695399284363 + gen: 3 + last_pass_time: 1566327287.46363 + last_result: 0 + last_run_time: 1566327287.46363 + last_todo: 0 + mtime: 1566161695 + seq: 361 + total_passes: 3 + t/76-2F-Ext-with-CodeActivation.t: + elapsed: 0.329933881759644 + gen: 3 + last_pass_time: 1566327299.69257 + last_result: 0 + last_run_time: 1566327299.69257 + last_todo: 0 + mtime: 1566161704 + seq: 493 + total_passes: 3 + t/76-2F-Ext-with-GrantSession.t: + elapsed: 0.278795957565308 + gen: 3 + last_pass_time: 1566327300.60635 + last_result: 0 + last_run_time: 1566327300.60635 + last_todo: 0 + mtime: 1566161701 + seq: 512 + total_passes: 3 + t/76-2F-Ext-with-History.t: + elapsed: 0.367126941680908 + gen: 3 + last_pass_time: 1566327298.81285 + last_result: 0 + last_run_time: 1566327298.81285 + last_todo: 0 + mtime: 1566161700 + seq: 475 + total_passes: 3 + t/77-2F-Extra.t: + elapsed: 1.02363395690918 + gen: 3 + last_pass_time: 1566327295.40816 + last_result: 0 + last_run_time: 1566327295.40816 + last_todo: 0 + mtime: 1566326760 + seq: 428 + total_passes: 3 + t/77-2F-Mail-with-global-storage.t: + elapsed: 0.959666967391968 + gen: 3 + last_pass_time: 1566327296.88625 + last_result: 0 + last_run_time: 1566327296.88625 + last_todo: 0 + mtime: 1566161701 + seq: 447 + total_passes: 3 + t/77-2F-Mail.t: + elapsed: 0.881723880767822 + gen: 3 + last_pass_time: 1566327296.54074 + last_result: 0 + last_run_time: 1566327296.54074 + last_todo: 0 + mtime: 1566161697 + seq: 441 + total_passes: 3 + t/78-2F-Upgrade.t: + elapsed: 0.932536125183105 + gen: 3 + last_pass_time: 1566327295.48147 + last_result: 0 + last_run_time: 1566327295.48147 + last_todo: 0 + mtime: 1566161692 + seq: 430 + total_passes: 3 + t/90-Translations.t: + elapsed: 0.0482299327850342 + gen: 3 + last_pass_time: 1566327300.32131 + last_result: 0 + last_run_time: 1566327300.32131 + last_todo: 0 + mtime: 1566161682 + seq: 510 + total_passes: 3 + t/99-pod.t: + elapsed: 0.89954686164856 + gen: 3 + last_pass_time: 1566327295.2853 + last_result: 0 + last_run_time: 1566327295.2853 + last_todo: 0 + mtime: 1566161693 + seq: 426 + total_passes: 3 +version: 1 +... diff --git a/lemonldap-ng-portal/t/20-Auth-DBI-utf8.t b/lemonldap-ng-portal/t/20-Auth-DBI-utf8.t index f7e7241be..e15608446 100644 --- a/lemonldap-ng-portal/t/20-Auth-DBI-utf8.t +++ b/lemonldap-ng-portal/t/20-Auth-DBI-utf8.t @@ -7,14 +7,14 @@ require 't/test-lib.pm'; my $res; my $maintests = 8; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,cn text)'); $dbh->do( "INSERT INTO users VALUES ('french','french','Frédéric Accents')"); @@ -25,7 +25,7 @@ SKIP: { useSafeJail => 1, authentication => 'DBI', userDB => 'Same', - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -83,6 +83,5 @@ SKIP: { clean_sessions(); } -eval { unlink 't/userdb.db' }; count($maintests); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/20-Auth-and-password-DBI-dynamic-hash.t b/lemonldap-ng-portal/t/20-Auth-and-password-DBI-dynamic-hash.t index 2c8942068..bb0802a86 100644 --- a/lemonldap-ng-portal/t/20-Auth-and-password-DBI-dynamic-hash.t +++ b/lemonldap-ng-portal/t/20-Auth-and-password-DBI-dynamic-hash.t @@ -9,7 +9,7 @@ require 't/test-lib.pm'; my $res; my $maintests = 6; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval @@ -90,7 +90,7 @@ SKIP: { } `; - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); @@ -112,7 +112,7 @@ SKIP: { useSafeJail => 1, authentication => 'DBI', userDB => 'Same', - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -200,6 +200,5 @@ SKIP: { clean_sessions(); } -eval { unlink 't/userdb.db' }; count($maintests); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/20-Auth-and-password-DBI.t b/lemonldap-ng-portal/t/20-Auth-and-password-DBI.t index 0d5e3528b..66f35f00d 100644 --- a/lemonldap-ng-portal/t/20-Auth-and-password-DBI.t +++ b/lemonldap-ng-portal/t/20-Auth-and-password-DBI.t @@ -7,14 +7,14 @@ require 't/test-lib.pm'; my $res; my $maintests = 3; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')"); my $client = LLNG::Manager::Test->new( { @@ -23,7 +23,7 @@ SKIP: { useSafeJail => 1, authentication => 'DBI', userDB => 'Same', - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -78,6 +78,5 @@ SKIP: { $client->logout($id); clean_sessions(); } -eval { unlink 't/userdb.db' }; count($maintests); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/28-AuthChoice-and-password.t b/lemonldap-ng-portal/t/28-AuthChoice-and-password.t index ffbf06f87..959ce5576 100644 --- a/lemonldap-ng-portal/t/28-AuthChoice-and-password.t +++ b/lemonldap-ng-portal/t/28-AuthChoice-and-password.t @@ -7,7 +7,7 @@ require 't/test-lib.pm'; my $res; my $maintests = 10; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; @@ -16,7 +16,7 @@ SKIP: { } skip 'LLNGTESTLDAP is not set', $maintests unless ( $ENV{LLNGTESTLDAP} ); require 't/test-ldap.pm'; - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')"); @@ -36,7 +36,7 @@ SKIP: { slave => 'Slave;LDAP;LDAP', }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -114,7 +114,6 @@ SKIP: { clean_sessions(); } count($maintests); -eval { unlink 't/userdb.db' }; stopLdapServer() if $ENV{LLNGTESTLDAP}; clean_sessions(); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/28-AuthChoice-with-captcha.t b/lemonldap-ng-portal/t/28-AuthChoice-with-captcha.t index 13dff6e6c..89d8355cf 100644 --- a/lemonldap-ng-portal/t/28-AuthChoice-with-captcha.t +++ b/lemonldap-ng-portal/t/28-AuthChoice-with-captcha.t @@ -82,7 +82,6 @@ SKIP: { } # Try to get captcha value - my ( $ts, $captcha ); ok( $ts = getCache()->get($token), ' Found token session' ); $ts = eval { JSON::from_json($ts) }; ok( $captcha = $ts->{captcha}, ' Found captcha value' ); diff --git a/lemonldap-ng-portal/t/28-AuthChoice-with-rules.t b/lemonldap-ng-portal/t/28-AuthChoice-with-rules.t index 6527f0699..b609dfc9a 100644 --- a/lemonldap-ng-portal/t/28-AuthChoice-with-rules.t +++ b/lemonldap-ng-portal/t/28-AuthChoice-with-rules.t @@ -10,14 +10,14 @@ BEGIN { my $res; my $maintests = 21; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; require GSSAPI; }; if ($@) { skip 'Missing dependencies', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')"); @@ -42,7 +42,7 @@ SKIP: { '7_Kerberos' => 'Kerberos;Null;Null', }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -69,53 +69,62 @@ SKIP: { ok( $res->[2]->[0] =~ /7_Kerberos/, '7_Kerberos displayed' ); ok( $res->[2]->[0] =~ qr%[2]->[0] ); + or explain( $res->[2]->[0], '[2]->[0] ); + or + explain( $res->[2]->[0], '[2]->[0] ); + or explain( $res->[2]->[0], + '[2]->[0] ); + ) + or explain( $res->[2]->[0], + '
[2]->[0] =~ -m%%, +m%%s, ' SSL AJAX URL found' - ) or print STDERR Dumper( $res->[2]->[0] ); + ) + or + explain( $res->[2]->[0], '%, +m%%s, ' SSL AJAX URL found' ) or print STDERR Dumper( $res->[2]->[0] ); ok( $res->[2]->[0] =~ qr%connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do( 'CREATE TABLE users (user text,password text,name text,uid text,cn text,mail text)' ); @@ -172,7 +172,6 @@ SKIP: { } count($maintests); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub switch { @@ -196,7 +195,7 @@ sub issuer { demo => 'Demo;Demo;Demo', sql => 'DBI;DBI;DBI', }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice-and-cancel.t b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice-and-cancel.t index 3b0464d0e..066d3af65 100644 --- a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice-and-cancel.t +++ b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice-and-cancel.t @@ -9,7 +9,7 @@ use MIME::Base64; BEGIN { require 't/test-lib.pm'; } -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); my $maintests = 14; my $debug = 'error'; @@ -67,7 +67,7 @@ SKIP: { } # Build SQL DB - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do( 'CREATE TABLE users (user text,password text,name text,uid text,cn text,mail text)' ); @@ -146,7 +146,6 @@ qr% '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice.t b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice.t index 998a3bd3b..e9bff2b76 100644 --- a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice.t +++ b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-with-choice.t @@ -9,7 +9,7 @@ use MIME::Base64; BEGIN { require 't/test-lib.pm'; } -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); my $maintests = 23; my $debug = 'error'; @@ -67,7 +67,7 @@ SKIP: { } # Build SQL DB - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do( 'CREATE TABLE users (user text,password text,name text,uid text,cn text,mail text)' ); @@ -301,7 +301,6 @@ SKIP: { } count($maintests); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub switch { @@ -325,7 +324,7 @@ sub issuer { demo => 'Demo;Demo;Demo', sql => 'DBI;DBI;DBI', }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t b/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t index 3635bd9f5..185cd20e2 100644 --- a/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t +++ b/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code-with-authchoice.t @@ -14,7 +14,7 @@ my $debug = 'error'; my $maintests = 18; my ( $op, $rp, $res ); my %handlerOR = ( op => [], rp => [] ); -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); LWP::Protocol::PSGI->register( sub { @@ -72,7 +72,7 @@ SKIP: { if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')"); @@ -241,7 +241,6 @@ SKIP: { #print STDERR Dumper($res); count($maintests); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub switch { @@ -266,7 +265,7 @@ sub op { demo => 'Demo;Demo;Demo', sql => 'DBI;DBI;DBI', }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/35-REST-sessions-with-AuthBasic-handler.t b/lemonldap-ng-portal/t/35-REST-sessions-with-AuthBasic-handler.t index b5c32bd3b..dc3371365 100644 --- a/lemonldap-ng-portal/t/35-REST-sessions-with-AuthBasic-handler.t +++ b/lemonldap-ng-portal/t/35-REST-sessions-with-AuthBasic-handler.t @@ -1,5 +1,6 @@ use lib 'inc'; use strict; +use File::Temp 'tempdir'; use IO::String; use JSON; use MIME::Base64; @@ -9,6 +10,8 @@ our $debug = 'error'; my ( $p, $res, $spId ); $| = 1; +$LLNG::TMPDIR = tempdir( 'tmpSessionXXXXX', DIR => 't/sessions', CLEANUP => 1 ); + require 't/separate-handler.pm'; require "t/test-lib.pm"; diff --git a/lemonldap-ng-portal/t/36-Combination-Kerberos-or-Demo.t b/lemonldap-ng-portal/t/36-Combination-Kerberos-or-Demo.t index 173ae2ed1..d3d7311ca 100644 --- a/lemonldap-ng-portal/t/36-Combination-Kerberos-or-Demo.t +++ b/lemonldap-ng-portal/t/36-Combination-Kerberos-or-Demo.t @@ -41,7 +41,8 @@ SKIP: { } ); ok( $res = $client->_get( '/', accept => 'text/html' ), 'Simple access' ); - ok( $res->[2]->[0] =~ /script.*kerberos\.js/s, 'Found Kerberos JS' ); + ok( $res->[2]->[0] =~ /script.*kerberos\.js/s, 'Found Kerberos JS' ) + or explain( $res->[2]->[0], 'script.*kerberos.js' ); my ( $host, $url, $query ) = expectForm( $res, '#' ); # TODO diff --git a/lemonldap-ng-portal/t/36-Combination-with-Choice.t b/lemonldap-ng-portal/t/36-Combination-with-Choice.t index ac279be17..432765677 100644 --- a/lemonldap-ng-portal/t/36-Combination-with-Choice.t +++ b/lemonldap-ng-portal/t/36-Combination-with-Choice.t @@ -8,14 +8,14 @@ my $res; my $maintests = 0; my $client; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dvador','dvador','Test user 1')"); $dbh->do("INSERT INTO users VALUES ('rtyler','rtyler','Test user 1')"); @@ -43,7 +43,6 @@ SKIP: { } count($maintests); clean_sessions(); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub try { @@ -86,7 +85,7 @@ sub iniCmb { }, }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/36-Combination-with-over.t b/lemonldap-ng-portal/t/36-Combination-with-over.t index 9d8e0c874..5fcb0eeee 100644 --- a/lemonldap-ng-portal/t/36-Combination-with-over.t +++ b/lemonldap-ng-portal/t/36-Combination-with-over.t @@ -8,14 +8,14 @@ my $res; my $maintests = 0; my $client; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dvador','dvador','Test user 1')"); $dbh->do("INSERT INTO users VALUES ('rtyler','rtyler','Test user 1')"); @@ -26,7 +26,6 @@ SKIP: { } count($maintests); clean_sessions(); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub try { @@ -62,7 +61,7 @@ sub iniCmb { for => 0, type => 'DBI', over => { - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/36-Combination-with-token.t b/lemonldap-ng-portal/t/36-Combination-with-token.t index c778a5bc6..165c3e43a 100644 --- a/lemonldap-ng-portal/t/36-Combination-with-token.t +++ b/lemonldap-ng-portal/t/36-Combination-with-token.t @@ -8,14 +8,14 @@ my $res; my $maintests = 0; my $client; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dvador','dvador','Test user 1')"); $dbh->do("INSERT INTO users VALUES ('rtyler','rtyler','Test user 1')"); @@ -41,7 +41,6 @@ SKIP: { } count($maintests); clean_sessions(); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub try { @@ -89,7 +88,7 @@ sub iniCmb { }, }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/36-Combination.t b/lemonldap-ng-portal/t/36-Combination.t index dae307d7c..aeedfb5a9 100644 --- a/lemonldap-ng-portal/t/36-Combination.t +++ b/lemonldap-ng-portal/t/36-Combination.t @@ -8,14 +8,14 @@ my $res; my $maintests = 3; my $client; -eval { unlink 't/userdb.db' }; +my $userdb = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do('CREATE TABLE users (user text,password text,name text)'); $dbh->do("INSERT INTO users VALUES ('dvador','dvador','Test user 1')"); $dbh->do("INSERT INTO users VALUES ('rtyler','rtyler','Test user 1')"); @@ -49,7 +49,6 @@ SKIP: { } count($maintests); clean_sessions(); -eval { unlink 't/userdb.db' }; done_testing( count() ); sub try { @@ -92,7 +91,7 @@ sub iniCmb { }, }, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', diff --git a/lemonldap-ng-portal/t/40-Notifications-JSON-DBI.t b/lemonldap-ng-portal/t/40-Notifications-JSON-DBI.t index 1102aebd7..dcca5516d 100644 --- a/lemonldap-ng-portal/t/40-Notifications-JSON-DBI.t +++ b/lemonldap-ng-portal/t/40-Notifications-JSON-DBI.t @@ -3,10 +3,9 @@ use strict; use IO::String; my $res; -my $file = 't/notifications.db'; my $maintests = 9; -eval { unlink $file }; require 't/test-lib.pm'; +my $file = tempdb(); SKIP: { eval { require DBI; require DBD::SQLite; }; diff --git a/lemonldap-ng-portal/t/40-Notifications-JSON-File-with-token.t b/lemonldap-ng-portal/t/40-Notifications-JSON-File-with-token.t index bdeca2d21..8d01b1570 100644 --- a/lemonldap-ng-portal/t/40-Notifications-JSON-File-with-token.t +++ b/lemonldap-ng-portal/t/40-Notifications-JSON-File-with-token.t @@ -5,7 +5,7 @@ use IO::String; require 't/test-lib.pm'; my $res; -my $file = 't/20160530_dwho_dGVzdHJlZg==.json'; +my $file = "$main::tmpDir/20160530_dwho_dGVzdHJlZg==.json"; open F, "> $file" or die($!); print F '[ @@ -28,7 +28,7 @@ my $client = LLNG::Manager::Test->new( { notification => 1, notificationStorage => 'File', notificationStorageOptions => { - dirName => 't' + dirName => $main::tmpDir }, oldNotifFormat => 0, requireToken => 1, diff --git a/lemonldap-ng-portal/t/40-Notifications-JSON-File.t b/lemonldap-ng-portal/t/40-Notifications-JSON-File.t index 54f9d83fd..32b09b266 100644 --- a/lemonldap-ng-portal/t/40-Notifications-JSON-File.t +++ b/lemonldap-ng-portal/t/40-Notifications-JSON-File.t @@ -5,7 +5,7 @@ use IO::String; require 't/test-lib.pm'; my $res; -my $file = 't/20160530_dwho_dGVzdHJlZg==.json'; +my $file = "$main::tmpDir/20160530_dwho_dGVzdHJlZg==.json"; open F, "> $file" or die($!); print F '[ @@ -27,7 +27,7 @@ my $client = LLNG::Manager::Test->new( { useSafeJail => 1, notification => 1, notificationStorage => 'File', - notificationStorageOptions => { dirName => 't' }, + notificationStorageOptions => { dirName => $main::tmpDir }, oldNotifFormat => 0, portalMainLogo => 'common/logos/logo_llng_old.png', } diff --git a/lemonldap-ng-portal/t/40-Notifications-JSON-Server.t b/lemonldap-ng-portal/t/40-Notifications-JSON-Server.t index 4a36d02e0..f6add8458 100644 --- a/lemonldap-ng-portal/t/40-Notifications-JSON-Server.t +++ b/lemonldap-ng-portal/t/40-Notifications-JSON-Server.t @@ -6,8 +6,6 @@ BEGIN { require 't/test-lib.pm'; } -eval { unlink 't/20160530_dwho_dGVzdHJlZg==.json' }; - my $json = '{ "date": "2016-05-30", "reference": "testref", @@ -56,7 +54,7 @@ my $client = LLNG::Manager::Test->new( { notificationWildcard => 'everyone', notificationStorage => 'File', notificationStorageOptions => { - dirName => 't' + dirName => $main::tmpDir, }, } } @@ -213,7 +211,5 @@ expectOK($res); my $id = expectCookie($res); expectForm( $res, undef, '/notifback', 'reference1x1', 'url' ); -eval { unlink 't/20160530_dwho_dGVzdHJlZg==.json' }; - clean_sessions(); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/40-Notifications-XML-DBI.t b/lemonldap-ng-portal/t/40-Notifications-XML-DBI.t index 197c8f1c1..e4f025069 100644 --- a/lemonldap-ng-portal/t/40-Notifications-XML-DBI.t +++ b/lemonldap-ng-portal/t/40-Notifications-XML-DBI.t @@ -3,13 +3,12 @@ use strict; use IO::String; my $res; -my $file = 't/notifications.db'; my $maintests = 8; #my $maintests = 9; -eval { unlink $file }; require 't/test-lib.pm'; +my $file = tempdb(); SKIP: { eval { @@ -142,9 +141,6 @@ qq{INSERT INTO notifications VALUES ('dwho','testref2','2016-05-30 00:00:00',' 1, notification => 1, notificationStorage => 'File', - notificationStorageOptions => { dirName => 't' }, + notificationStorageOptions => { dirName => $main::tmpDir }, oldNotifFormat => 1, portalMainLogo => 'common/logos/logo_llng_old.png', } diff --git a/lemonldap-ng-portal/t/40-Notifications-XML-Server.t b/lemonldap-ng-portal/t/40-Notifications-XML-Server.t index f1086f595..26542f592 100644 --- a/lemonldap-ng-portal/t/40-Notifications-XML-Server.t +++ b/lemonldap-ng-portal/t/40-Notifications-XML-Server.t @@ -43,8 +43,6 @@ LWP::Protocol::PSGI->register( } ); -eval { unlink 't/20160530_dwho_dGVzdHJlZg==.xml' }; - my $xml = ' Test title @@ -73,7 +71,7 @@ SKIP: { notificationServer => 1, notificationStorage => 'File', notificationStorageOptions => { - dirName => 't' + dirName => $main::tmpDir }, oldNotifFormat => 1, } @@ -116,8 +114,6 @@ SKIP: { } -eval { unlink 't/20160530_dwho_dGVzdHJlZg==.xml' }; - count($maintests); clean_sessions(); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/41-Captcha.t b/lemonldap-ng-portal/t/41-Captcha.t index 0943ac9f8..7bb02dbe1 100644 --- a/lemonldap-ng-portal/t/41-Captcha.t +++ b/lemonldap-ng-portal/t/41-Captcha.t @@ -35,7 +35,8 @@ SKIP: { my $token; ok( $token = $1, ' Token value is defined' ); ok( $res->[2]->[0] =~ m#connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do( 'CREATE TABLE users (user text,password text,name text, mail text)'); $dbh->do( @@ -47,7 +47,7 @@ SKIP: { passwordDB => 'Choice', captcha_mail_enabled => 0, portalDisplayResetPassword => 1, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -146,7 +146,6 @@ SKIP: { } -eval { unlink 't/userdb.db' }; count($maintests); clean_sessions(); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/43-MailPasswordReset-DBI.t b/lemonldap-ng-portal/t/43-MailPasswordReset-DBI.t index 0474e460c..a91d46153 100644 --- a/lemonldap-ng-portal/t/43-MailPasswordReset-DBI.t +++ b/lemonldap-ng-portal/t/43-MailPasswordReset-DBI.t @@ -2,11 +2,12 @@ use Test::More; use strict; use IO::String; +my $userdb; BEGIN { eval { - unlink 't/userdb.db'; require 't/test-lib.pm'; require 't/smtp.pm'; + $userdb = tempdb(); }; } @@ -26,7 +27,7 @@ SKIP: { if ($@) { skip 'DBD::SQLite not found', $maintests; } - my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db"); + my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); $dbh->do( 'CREATE TABLE users (user text,password text,name text, mail text)'); $dbh->do( @@ -43,7 +44,7 @@ SKIP: { passwordDB => 'DBI', captcha_mail_enabled => 0, portalDisplayResetPassword => 1, - dbiAuthChain => 'dbi:SQLite:dbname=t/userdb.db', + dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthUser => '', dbiAuthPassword => '', dbiAuthTable => 'users', @@ -168,7 +169,6 @@ SKIP: { #print STDERR Dumper($query); } -eval { unlink 't/userdb.db' }; count($maintests); clean_sessions(); done_testing( count() ); diff --git a/lemonldap-ng-portal/t/lib/Lemonldap/NG/Handler/Test.pm b/lemonldap-ng-portal/t/lib/Lemonldap/NG/Handler/Test.pm index e8f3110bd..8bb495e9e 100644 --- a/lemonldap-ng-portal/t/lib/Lemonldap/NG/Handler/Test.pm +++ b/lemonldap-ng-portal/t/lib/Lemonldap/NG/Handler/Test.pm @@ -31,6 +31,12 @@ sub init { type => 'File', dirName => 't', }, + globalStorageOptions => { + Directory => $LLNG::TMPDIR, + LockDirectory => "$LLNG::TMPDIR/lock", + generateModule => + 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256', + }, localSessionStorage => 'Cache::FileCache', localSessionStorageOptions => { namespace => 'lemonldap-ng-session', diff --git a/lemonldap-ng-portal/t/test-lib.pm b/lemonldap-ng-portal/t/test-lib.pm index 32f194e90..1f157b5a1 100644 --- a/lemonldap-ng-portal/t/test-lib.pm +++ b/lemonldap-ng-portal/t/test-lib.pm @@ -55,6 +55,7 @@ C call I<(see below)>. use strict; use Data::Dumper; +use File::Find; use LWP::UserAgent; use URI::Escape; use Lemonldap::NG::Common::FormEncode; @@ -73,6 +74,13 @@ $Data::Dumper::Sortkeys = 1; $Data::Dumper::Useperl = 1; my $ini; +use File::Temp 'tempfile', 'tempdir'; +our $tmpDir = $LLNG::TMPDIR + || tempdir( 'tmpSessionXXXXX', DIR => 't/sessions', CLEANUP => 1 ); +mkdir "$tmpDir/lock"; +mkdir "$tmpDir/saml"; +mkdir "$tmpDir/saml/lock"; + =head4 count($inc) Returns number of tests done. Increment test number if an argument is given @@ -107,10 +115,7 @@ Clean sessions created during tests =cut sub clean_sessions { - opendir D, 't/sessions' or die $!; - foreach ( grep { /^[^\.]/ } readdir(D) ) { - unlink "t/sessions/$_", "t/sessions/lock/Apache-Session-$_.lock"; - } + find( sub { unlink if -f }, $tmpDir ); foreach my $dir (qw(t/sessions/lock t/sessions/saml/lock t/sessions/saml)) { if ( -d $dir ) { opendir D, $dir or die $!; @@ -119,13 +124,11 @@ sub clean_sessions { } } } - my $cache = getCache(); - $cache->clear; } sub count_sessions { my $dir = shift; - $dir ||= 't/sessions'; + $dir ||= $tmpDir; my $nbr = 0; opendir D, $dir or die $!; @@ -139,7 +142,7 @@ sub getCache { require Cache::FileCache; return Cache::FileCache->new( { namespace => 'lemonldap-ng-session', - cache_root => 't/', + cache_root => $tmpDir, cache_depth => 0, } ); @@ -465,6 +468,16 @@ sub getUser { return getHeader( $resp, 'Lm-Remote-User' ); } +=head4 tempdb + +Return a temporary file named XXXX.db + +=cut + +sub tempdb { + return "$tmpDir/userdb.db"; +} + =head2 LLNG::Manager::Test Class =cut @@ -484,16 +497,40 @@ our $defaultIni = { localSessionStorage => 'Cache::FileCache', localSessionStorageOptions => { namespace => 'lemonldap-ng-session', - cache_root => 't/', + cache_root => $tmpDir, cache_depth => 0, }, - logLevel => 'error', - cookieName => 'lemonldap', - domain => 'example.com', - templateDir => 'site/templates', - staticPrefix => '/static', - securedCookie => 0, - https => 0, + logLevel => 'error', + cookieName => 'lemonldap', + domain => 'example.com', + templateDir => 'site/templates', + staticPrefix => '/static', + securedCookie => 0, + https => 0, + globalStorageOptions => { + Directory => $tmpDir, + LockDirectory => "$tmpDir/lock", + generateModule => + 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256', + }, + casStorageOptions => { + Directory => "$tmpDir/saml", + LockDirectory => "$tmpDir/saml/lock", + generateModule => + 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256', + }, + samlStorageOptions => { + Directory => "$tmpDir/saml", + LockDirectory => "$tmpDir/saml/lock", + generateModule => + 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256', + }, + oidcStorageOptions => { + Directory => "$tmpDir/saml", + LockDirectory => "$tmpDir/saml/lock", + generateModule => + 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256', + }, }; =head3 Accessors