diff --git a/Makefile b/Makefile index 3f7d78619..9353ad7e1 100644 --- a/Makefile +++ b/Makefile @@ -217,7 +217,24 @@ extra_test: all # PERL_DL_NONLAZY=1 $(PERL) "-MExtUtils::Command::MM" "-e" "test_harness(0, 'lemonldap-ng-common/blib/lib', 'lemonldap-ng-handler/blib/lib', 'lemonldap-ng-manager/blib/lib', 'lemonldap-ng-portal/blib/lib')" extra-tests/*.t e2e_test: - protractor e2e-tests/protractor-conf.js + @mkdir -p e2e-tests/conf + $(MAKE) install_webserver_conf \ + RCONFDIR=e2e-tests/conf \ + ERASECONFIG=1 \ + VHOSTLISTEN='*:19876' \ + PORTALDIR=`pwd`/lemonldap-ng-portal/example \ + MANAGERDIR=`pwd`/lemonldap-ng-manager/site \ + MANAGERPSGIDIR=`pwd`/e2e-tests \ + DEFDOCDIR=`pwd`/doc \ + FRDOCDIR=`pwd`/po-doc/fr + # Start web server + -@[ -e e2e-tests/conf/apache2.pid ] && kill `cat e2e-tests/conf/apache2.pid` && sleep 1 + @/usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k start + # Start e2e tests + @protractor e2e-tests/protractor-conf.js + # Clean + @kill `cat e2e-tests/conf/apache2.pid` + @rm -rf e2e-tests/conf # # INSTALL @@ -276,31 +293,13 @@ install_bin: install_conf_dir # # SITE INSTALL # -install_site: install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site +install_site: install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site install_webserver_conf # Site install @install -v -d $(RCONFDIR) # Check if erase is wanted @if [ "$(ERASECONFIG)" -eq "1" ]; then \ - cp -f _example/etc/portal-apache$(APACHEVERSION).conf $(RCONFDIR); \ - cp -f _example/etc/handler-apache$(APACHEVERSION).conf $(RCONFDIR); \ - cp -f _example/etc/manager-apache$(APACHEVERSION).conf $(RCONFDIR); \ - cp -f _example/etc/test-apache$(APACHEVERSION).conf $(RCONFDIR); \ - cp -f _example/etc/handler-nginx.conf $(RCONFDIR); \ - cp -f _example/etc/test-nginx.conf $(RCONFDIR); \ - cp -f _example/etc/nginx-access-control $(RCONFDIR); \ - cp -f _example/etc/nginx-http-accounting $(RCONFDIR); \ - cp -f _example/etc/nginx-fcgi-accounting $(RCONFDIR); \ cp -f _example/etc/for_etc_hosts $(RCONFDIR); \ fi - @$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \ - s#__PORTALDIR__#$(PORTALDIR)/#g; \ - s#__MANAGERDIR__#$(MANAGERDIR)/#g; \ - s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \ - s#__MANAGERPSGIDIR__#$(MANAGERPSGIDIR)/#g; \ - s#__TESTDIR__#$(TESTDIR)/#g; \ - s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \ - s#__DEFDOCDIR__#$(DEFDOCDIR)/#g; \ - s#__FRDOCDIR__#$(FRDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf @$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts # Fix a lost of rights on the main directory @chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSKINSDIR) $(RMANAGERSITEDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR) @@ -335,6 +334,29 @@ install_site: install_manager_site install_portal_site install_handler_site inst fi @echo +install_webserver_conf: + @install -m 755 -v -d $(RCONFDIR) + @if [ "$(ERASECONFIG)" -eq "1" ]; then \ + cp -f _example/etc/portal-apache$(APACHEVERSION).conf $(RCONFDIR); \ + cp -f _example/etc/handler-apache$(APACHEVERSION).conf $(RCONFDIR); \ + cp -f _example/etc/manager-apache$(APACHEVERSION).conf $(RCONFDIR); \ + cp -f _example/etc/test-apache$(APACHEVERSION).conf $(RCONFDIR); \ + cp -f _example/etc/handler-nginx.conf $(RCONFDIR); \ + cp -f _example/etc/test-nginx.conf $(RCONFDIR); \ + cp -f _example/etc/nginx-access-control $(RCONFDIR); \ + cp -f _example/etc/nginx-http-accounting $(RCONFDIR); \ + cp -f _example/etc/nginx-fcgi-accounting $(RCONFDIR); \ + fi + @$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \ + s#__PORTALDIR__#$(PORTALDIR)/#g; \ + s#__MANAGERDIR__#$(MANAGERDIR)/#g; \ + s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \ + s#__MANAGERPSGIDIR__#$(MANAGERPSGIDIR)/#g; \ + s#__TESTDIR__#$(TESTDIR)/#g; \ + s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \ + s#__DEFDOCDIR__#$(DEFDOCDIR)/#g; \ + s#__FRDOCDIR__#$(FRDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf + install_manager_site: install_conf_dir # Manager install @install -v -d ${RMANAGERDIR} $(RMANAGERSTATICDIR) $(RMANAGERPSGIDIR) \ diff --git a/e2e-tests/apache2.conf b/e2e-tests/apache2.conf new file mode 100644 index 000000000..d09bc7a16 --- /dev/null +++ b/e2e-tests/apache2.conf @@ -0,0 +1,57 @@ +PidFile conf/apache2.pid +Timeout 300 +KeepAlive On +MaxKeepAliveRequests 100 +KeepAliveTimeout 5 +HostnameLookups Off +LogLevel warn +Listen 127.0.0.1:19876 +LoadModule authz_core_module /usr/lib/apache2/modules/mod_authz_core.so +LoadModule authz_host_module /usr/lib/apache2/modules/mod_authz_host.so + + Options FollowSymLinks + AllowOverride None + Require all denied + + + AllowOverride None + Require all granted + + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + +LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined +LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined +ErrorLog conf/apache2.log +CustomLog conf/apache2.log vhost_combined + +LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so +LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so +LoadModule env_module /usr/lib/apache2/modules/mod_env.so +LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so +LoadModule fcgid_module /usr/lib/apache2/modules/mod_fcgid.so +FcgidConnectTimeout 20 +FcgidProcessTableFile conf/fcgid_shm +FcgidIPCDir conf/ +AddHandler fcgid-script .fcgi +LoadModule filter_module /usr/lib/apache2/modules/mod_filter.so +TypesConfig /etc/mime.types +AddLanguage en .en +AddLanguage fr .fr +LoadModule mpm_event_module /usr/lib/apache2/modules/mod_mpm_event.so + + StartServers 1 + MinSpareThreads 2 + MaxSpareThreads 4 + ThreadLimit 64 + ThreadsPerChild 4 + MaxRequestWorkers 12 + MaxConnectionsPerChild 0 + +LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so +LoadModule setenvif_module /usr/lib/apache2/modules/mod_setenvif.so +LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so +IncludeOptional conf/manager-apache2.X.conf +IncludeOptional conf/portal-apache2.X.conf diff --git a/e2e-tests/e2e/00-auth.js b/e2e-tests/e2e/00-auth.js index 1154fcb2f..bb499cb13 100644 --- a/e2e-tests/e2e/00-auth.js +++ b/e2e-tests/e2e/00-auth.js @@ -7,10 +7,10 @@ describe('my app', function() { describe('Auth mechanism', function() { it('should want to authenticate', function() { - browser.driver.get('http://auth.example.com/'); + browser.driver.get('http://auth.example.com:19876/'); browser.driver.findElement(by.xpath("//input[@name='user']")).sendKeys('dwho'); browser.driver.findElement(by.xpath("//input[@name='password']")).sendKeys('dwho'); browser.driver.findElement(by.xpath("//button[@type='submit']")).click(); }); }); -}); \ No newline at end of file +}); diff --git a/e2e-tests/e2e/99-logout.js b/e2e-tests/e2e/99-logout.js index d9372eae5..c30d8271c 100644 --- a/e2e-tests/e2e/99-logout.js +++ b/e2e-tests/e2e/99-logout.js @@ -5,7 +5,7 @@ describe('Auth mechanism', function() { it('should allow logout', function() { - browser.driver.get('http://auth.example.com/?logout=1'); + browser.driver.get('http://auth.example.com:19876/?logout=1'); }); -}); \ No newline at end of file +}); diff --git a/e2e-tests/e2e/README.md b/e2e-tests/e2e/README.md index 078dc08eb..82a5a301a 100644 --- a/e2e-tests/e2e/README.md +++ b/e2e-tests/e2e/README.md @@ -1,16 +1,6 @@ #End 2 End Testing (Protractor) To run the end-2-end tests against the application you use [Protractor](https://github.com/angular/protractor). -## Starting the Web Server -In either case you will need the application to be running via the web-server. -From the root folder of the repository run: - -``` -npm start -``` - -The application should now be available at `http://localhost:8000/` - ## Testing with Protractor As a one-time setup, download webdriver. @@ -21,7 +11,7 @@ npm run update-webdriver Start the Protractor test runner using the e2e configuration: ``` -npm run protractor +make e2e_test ``` ## Devel tips diff --git a/e2e-tests/manager-server.fcgi b/e2e-tests/manager-server.fcgi new file mode 100755 index 000000000..68644465e --- /dev/null +++ b/e2e-tests/manager-server.fcgi @@ -0,0 +1,21 @@ +#!/usr/bin/env perl + +use warnings; + +BEGIN { + $pwd = `pwd`; + chomp $pwd; + eval qq{ + use lib "$pwd/lemonldap-ng-common/blib/lib"; + use lib "$pwd/lemonldap-ng-handler/blib/lib"; + use lib "$pwd/lemonldap-ng-portal/blib/lib"; + use lib "$pwd/lemonldap-ng-manager/blib/lib"; + }; + die $@ if ($@); +} +use Plack::Handler::FCGI; +use Lemonldap::NG::Manager; + +# Roll your own +my $server = Plack::Handler::FCGI->new(); +$server->run( Lemonldap::NG::Manager->run( {} ) ); diff --git a/e2e-tests/protractor-conf.js b/e2e-tests/protractor-conf.js index 1a222bd17..ce76885a3 100644 --- a/e2e-tests/protractor-conf.js +++ b/e2e-tests/protractor-conf.js @@ -11,7 +11,7 @@ exports.config = { chromeOnly: true, - baseUrl: 'http://manager.example.com/', + baseUrl: 'http://manager.example.com:19876/', framework: 'jasmine',