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',