# HG changeset patch # User ymh # Date 1394762938 -3600 # Node ID 736fdedb7774a4b17ba381615adf5effb12660aa # Parent 047aab3a53cfeb889a7e80cf1efb0e5a02f0669b clean the test-suite folder. create necessary files in dev env diff -r 047aab3a53cf -r 736fdedb7774 .hgignore --- a/.hgignore Wed Mar 12 17:19:23 2014 +0100 +++ b/.hgignore Fri Mar 14 03:08:58 2014 +0100 @@ -19,3 +19,8 @@ dev/custom.yaml src/cm/scripts/test-suite/node_modules src/cm/scripts/test-suite/workspace.info*.js +src/cm/scripts/test-suite/clean-testserver.sh +src/cm/scripts/test-suite/karma.conf.full.js +src/cm/scripts/test-suite/start-test-suite-full.sh +src/cm/scripts/test-suite/start-testserver.sh + diff -r 047aab3a53cf -r 736fdedb7774 dev/Vagrantfile --- a/dev/Vagrantfile Wed Mar 12 17:19:23 2014 +0100 +++ b/dev/Vagrantfile Fri Mar 14 03:08:58 2014 +0100 @@ -1,6 +1,13 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +require 'yaml' + +custom_file_path = File.join(__dir__, 'custom.yaml') + +context = File.exist?(custom_file_path)?YAML::load_file(custom_file_path):{} + +ROOT_PATH = context.fetch("root_path","../") # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" @@ -24,7 +31,7 @@ # Create a private network, which allows host-only access to the machine # using a specific IP. - config.vm.network :private_network, ip: (ENV['VM_IP'] || "172.16.1.2") + config.vm.network :private_network, ip: (ENV['VM_IP'] || context['vm_ip'] || "172.16.1.2") # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on @@ -39,10 +46,9 @@ # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. - config.vm.synced_folder "../", "/srv/comt" + config.vm.synced_folder ROOT_PATH, "/srv/comt" - #vmname = "coment_dev_5311da30" #"coment_dev_"+Time.now.getutc.to_f.to_int.to_s(16) - vmname = "coment_dev" + vmname = (ENV['VM_NAME'] || context['vm_name'] || "coment_dev") config.vm.define :"#{vmname}" do |coment_dev| end @@ -86,6 +92,9 @@ puppet.manifest_file = "site.pp" puppet.module_path = "modules" puppet.options = "--hiera_config /vagrant/hiera.yaml " + puppet.facter = { + "vagrant_base_path" => File.dirname(__FILE__) + } # puppet.options = "--debug --verbose --hiera_config /vagrant/hiera.yaml " end diff -r 047aab3a53cf -r 736fdedb7774 dev/clean_dev.sh --- a/dev/clean_dev.sh Wed Mar 12 17:19:23 2014 +0100 +++ b/dev/clean_dev.sh Fri Mar 14 03:08:58 2014 +0100 @@ -8,7 +8,11 @@ pushd "$ROOTPATH" > /dev/null -rm -rfv .installed.cfg .mr.developer.cfg parts/ eggs/ develop-eggs/ bin/ src/cm/settings_local.py src/cm/scripts/test-suite/workspace.info*.js +rm -rfv .installed.cfg .mr.developer.cfg parts/ eggs/ develop-eggs/ bin/ \ + src/cm/settings_local.py src/cm/scripts/test-suite/workspace.info*.js \ + src/cm/scripts/test-suite/{clean-testserver.sh,karma.conf.full.js} \ + src/cm/scripts/test-suite/{start-test-suite-full.sh,start-testserver.sh} + find . -name '*.pyc' -or -name '*.egg-info' | xargs rm -rvf popd > /dev/null diff -r 047aab3a53cf -r 736fdedb7774 dev/custom.yaml.tmpl --- a/dev/custom.yaml.tmpl Wed Mar 12 17:19:23 2014 +0100 +++ b/dev/custom.yaml.tmpl Fri Mar 14 03:08:58 2014 +0100 @@ -1,4 +1,8 @@ --- +root_path : ../ +vm_ip : 172.16.1.2 +vm_name : coment_dev + sysconfig::params::db_name : coment_custom sysconfig::params::db_user : coment_user_cutom sysconfig::params::db_pw : coment_pw_custom diff -r 047aab3a53cf -r 736fdedb7774 dev/manifests/site.pp --- a/dev/manifests/site.pp Wed Mar 12 17:19:23 2014 +0100 +++ b/dev/manifests/site.pp Fri Mar 14 03:08:58 2014 +0100 @@ -19,5 +19,8 @@ # write django_init class { 'sysconfig::django_init': require => Class['sysconfig::config'] } +# config testserver_init +class { 'sysconfig::testserver_init': vagrant_base_path => $vagrant_base_path, require => Class['sysconfig::config'] } + # deploy class { 'sysconfig::deploy': require => [ Class['sysconfig::django_init'], Class['sysconfig::nginx'], Class['sysconfig::postgresql'] ] } diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/files/clean-testserver.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/modules/sysconfig/files/clean-testserver.sh Fri Mar 14 03:08:58 2014 +0100 @@ -0,0 +1,16 @@ +#!/bin/bash + +PID=$(cat /tmp/testserver.pid|cut -d"|" -f1) +OUTFILE=$(cat /tmp/testserver.pid|cut -d"|" -f2) + +echo "Kill test server pid $PID" +kill $PID + +echo "Test server log:" +echo "================================================================================" +cat "$OUTFILE" +echo "================================================================================" + +echo "Clean testserver output" +rm "$OUTFILE" + diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/files/karma.conf.full.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/modules/sysconfig/files/karma.conf.full.js Fri Mar 14 03:08:58 2014 +0100 @@ -0,0 +1,52 @@ +// Karma configuration +// Generated on Wed Jan 29 2014 15:32:16 GMT+0100 (CET) + + +// SID: get WORKSPACE_URL configuration from one single file to customize +var w = require ('./workspace.info.full.js'); + +module.exports = function(config) { + config.set({ + // list of files or patterns to load in the browser, from current directory + files: [ + {pattern: 'tests/**/*.js', included: true} + ], + // list of files to exclude + exclude: [ + ], + // Start these browsers, currently available: + // - Firefox ; Safari (only Mac; run `npm install karma-safari-launcher` first) + // - Chrome ; ChromeCanary ; Opera (run `npm install karma-opera-launcher` first) + // - PhantomJS ; IE (only Windows; run `npm install karma-ie-launcher` first) + browsers: w.BROWSERS, + // frameworks to use. SID: choosen mocha, added karma-e2e-dsl (end-to-end testing) + frameworks: ['mocha', 'karma-e2e-dsl'], + // SID: Karma will start and run somewhere else than '/', to allow proxying '/' + urlRoot: '/karma/', + // SID: directive added on karma-e2e-dsl purpose. Map of path-proxy pairs. + proxies: { + '/': w.WORKSPACE_URL + }, + client: { + mocha: { + ui: 'tdd' + }, + w: w // SID: exports the variable in the test execution browser window + }, + // test results reporter to use : 'dots', 'progress', 'junit', 'growl', 'coverage' + reporters: ['progress'], + // web server port + port: 9876, + // enable / disable colors in the output (reporters and logs) + colors: true, + // level of logging : config.LOG_DISABLE || _ERROR || _WARN || _INFO || _DEBUG + logLevel: config.LOG_INFO || config.LOG_DEBUG, + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + // If browser does not capture in given timeout [ms], kill it + captureTimeout: 20000, + // Continuous Integration mode : if true, it capture browsers, run tests and exit + // singleRun: false + singleRun: true, + }); +}; diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/manifests/django_init.pp --- a/dev/modules/sysconfig/manifests/django_init.pp Wed Mar 12 17:19:23 2014 +0100 +++ b/dev/modules/sysconfig/manifests/django_init.pp Fri Mar 14 03:08:58 2014 +0100 @@ -1,17 +1,9 @@ class sysconfig::django_init ( - $superuser_name = hiera('sysconfig::params::superuser_name' ,$sysconfig::params::superuser_name ), - $superuser_pw = hiera('sysconfig::params::superuser_pw' ,$sysconfig::params::superuser_pw ), - $user_edit_name = hiera('sysconfig::params::user_edit_name' ,$sysconfig::params::user_edit_name ), - $user_edit_pw = hiera('sysconfig::params::user_edit_pw' ,$sysconfig::params::user_edit_pw ), - $user_com_name = hiera('sysconfig::params::user_com_name' ,$sysconfig::params::user_com_name ), - $user_com_pw = hiera('sysconfig::params::user_com_pw' ,$sysconfig::params::user_com_pw ), - $user_observ_name = hiera('sysconfig::params::user_observ_name' ,$sysconfig::params::user_observ_name ), - $user_observ_pw = hiera('sysconfig::params::user_observ_pw' ,$sysconfig::params::user_observ_pw ), - $testserver_port = hiera('sysconfig::params::testserver_port' ,$sysconfig::params::testserver_port ) - + $superuser_name = hiera('sysconfig::params::superuser_name', $sysconfig::params::superuser_name ), + $superuser_pw = hiera('sysconfig::params::superuser_pw' , $sysconfig::params::superuser_pw ) ) inherits sysconfig::params { - notify {'django_init': name => "\$superuser_name : ${superuser_name}, \$superuser_pw : ${superuser_pw}", withpath => true }-> + notify {'django_init': name => "django init \$superuser_name : ${superuser_name}, \$superuser_pw : ${superuser_pw}", withpath => true }-> exec { 'syncdb': command => '/srv/comt/bin/django syncdb --noinput --migrate', @@ -32,24 +24,4 @@ require => Exec['syncdb'] } - file { 'karma_workspace_info': - ensure => 'present', - path => "/srv/comt/src/cm/scripts/test-suite/workspace.info.js", - replace => 'no', - owner => 'vagrant', - group => 'vagrant', - mode => 644, - content => template('sysconfig/workspace.info.js.erb','sysconfig/url.workspace.info.js.erb'), - } - - file { 'karma_workspace_info_full': - ensure => 'present', - path => "/srv/comt/src/cm/scripts/test-suite/workspace.info.full.js", - replace => 'no', - owner => 'vagrant', - group => 'vagrant', - mode => 644, - content => template('sysconfig/workspace.info.js.erb','sysconfig/url.test.workspace.info.js.erb'), - } - } \ No newline at end of file diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/manifests/testserver_init.pp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/modules/sysconfig/manifests/testserver_init.pp Fri Mar 14 03:08:58 2014 +0100 @@ -0,0 +1,77 @@ +class sysconfig::testserver_init ( + $superuser_name = hiera('sysconfig::params::superuser_name' ,$sysconfig::params::superuser_name ), + $superuser_pw = hiera('sysconfig::params::superuser_pw' ,$sysconfig::params::superuser_pw ), + $user_edit_name = hiera('sysconfig::params::user_edit_name' ,$sysconfig::params::user_edit_name ), + $user_edit_pw = hiera('sysconfig::params::user_edit_pw' ,$sysconfig::params::user_edit_pw ), + $user_com_name = hiera('sysconfig::params::user_com_name' ,$sysconfig::params::user_com_name ), + $user_com_pw = hiera('sysconfig::params::user_com_pw' ,$sysconfig::params::user_com_pw ), + $user_observ_name = hiera('sysconfig::params::user_observ_name' ,$sysconfig::params::user_observ_name ), + $user_observ_pw = hiera('sysconfig::params::user_observ_pw' ,$sysconfig::params::user_observ_pw ), + $testserver_port = hiera('sysconfig::params::testserver_port' ,$sysconfig::params::testserver_port ), + $vagrant_base_path + +) inherits sysconfig::params { + + notify {'testserver_init': name => "testserver init : \$superuser_name : ${superuser_name}, \$superuser_pw : ${superuser_pw}", withpath => true }-> + + file { 'karma_workspace_info': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/workspace.info.js", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 644, + content => template('sysconfig/workspace.info.js.erb','sysconfig/url.workspace.info.js.erb'), + } + + file { 'karma_workspace_info_full': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/workspace.info.full.js", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 644, + content => template('sysconfig/workspace.info.js.erb','sysconfig/url.test.workspace.info.js.erb'), + } + + file { 'clean-testserver.sh': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/clean-testserver.sh", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 755, + source => 'puppet:///modules/sysconfig/clean-testserver.sh' + } + + file { 'karma.conf.full.js': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/karma.conf.full.js", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 644, + source => 'puppet:///modules/sysconfig/karma.conf.full.js' + } + + file { 'start-test-suite-full.sh': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/start-test-suite-full.sh", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 755, + content => template('sysconfig/start-test-suite-full.sh.erb'), + } + + file { 'start-testserver.sh': + ensure => 'present', + path => "/srv/comt/src/cm/scripts/test-suite/start-testserver.sh", + replace => 'no', + owner => 'vagrant', + group => 'vagrant', + mode => 755, + content => template('sysconfig/start-testserver.sh.erb'), + } + +} \ No newline at end of file diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/templates/start-test-suite-full.sh.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/modules/sysconfig/templates/start-test-suite-full.sh.erb Fri Mar 14 03:08:58 2014 +0100 @@ -0,0 +1,58 @@ +#!/bin/bash + +echo "---------------------" +echo "Starting test server" + +DEV_FOLDER="<%= @vagrant_base_path %>" + +pushd "$DEV_FOLDER" > /dev/null +vagrant ssh -c "/srv/comt/src/cm/scripts/test-suite/start-testserver.sh" +popd > /dev/null + +CONNECTION_TIMEOUT=10 +TESTSERVER_START_TIMEOUT=15 +TESTSERVER_LOOP_WAIT=5 +TESTSERVER_WAIT_LOOP_NB=10 + +SERVER_IP=`grep WORKSPACE_URL workspace.info.full.js | tail -n -1 | cut -d: -f2 | tr -d " //"` +SERVER_PORT=`grep WORKSPACE_URL ./workspace.info.full.js | tail -n -1 | cut -d: -f3 | tr -d " ');"` + +if [[ -x `which nc` ]]; then + SERVER_TEST_CMD="nc -G $CONNECTION_TIMEOUT -z $SERVER_IP $SERVER_PORT" +elif [[ -x `which curl` ]]; then + SERVER_TEST_CMD="curl -m $CONNECTION_TIMEOUT --output /dev/null --silent --head --fail http://$SERVER_IP:$SERVER_PORT" +elif [[ -x `which wget` ]]; then + SERVER_TEST_CMD="wget --timeout=$CONNECTION_TIMEOUT -q --spider http://$SERVER_IP:$SERVER_PORT" +fi +echo "$SERVER_TEST_CMD" + +echo "---------------------" +if [[ -z "$SERVER_TEST_CMD" ]]; then + echo "Waiting $TESTSERVER_START_TIMEOUT seconds to let test server start" + sleep $TESTSERVER_START_TIMEOUT +else + for i in $(seq 1 $TESTSERVER_WAIT_LOOP_NB); do + echo "waiting $TESTSERVER_LOOP_WAIT seconds to let the test server $SERVER_IP:$SERVER_PORT start" + sleep $TESTSERVER_LOOP_WAIT + if $SERVER_TEST_CMD; then + break + fi + done + if [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then + echo "could not start test server $SERVER_IP:$SERVER_PORT" + exit 1 + fi +fi + +echo "---------------------" +echo "Starting karma tests" +. ./start-test-suite.sh ./karma.conf.full.js $@ + +echo "---------------------" +echo "stopping test server + output test server logs" + +pushd "$DEV_FOLDER" > /dev/null +vagrant ssh -c "/srv/comt/src/cm/scripts/test-suite/clean-testserver.sh" +popd /dev/null + + diff -r 047aab3a53cf -r 736fdedb7774 dev/modules/sysconfig/templates/start-testserver.sh.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/modules/sysconfig/templates/start-testserver.sh.erb Fri Mar 14 03:08:58 2014 +0100 @@ -0,0 +1,14 @@ +#!/bin/bash + + +ROOTPATH="/srv/comt" +TMPFILE=`mktemp` + +pushd "$ROOTPATH" > /dev/null + +nohup bin/django testserver --noinput --addrport=0.0.0.0:<%= @testserver_port %> initial_data roles_generic test_suite > $TMPFILE 2>&1 & +echo "$!|$TMPFILE" > /tmp/testserver.pid + +cat /tmp/testserver.pid + +popd > /dev/null diff -r 047aab3a53cf -r 736fdedb7774 src/cm/scripts/test-suite/clean-testserver.sh --- a/src/cm/scripts/test-suite/clean-testserver.sh Wed Mar 12 17:19:23 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#!/bin/bash - -PID=$(cat /tmp/testserver.pid|cut -d"|" -f1) -OUTFILE=$(cat /tmp/testserver.pid|cut -d"|" -f2) - -echo "Kill test server pid $PID" -kill $PID - -echo "Test server log:" -echo "================================================================================" -cat "$OUTFILE" -echo "================================================================================" - -echo "Clean testserver output" -rm "$OUTFILE" - diff -r 047aab3a53cf -r 736fdedb7774 src/cm/scripts/test-suite/karma.conf.full.js --- a/src/cm/scripts/test-suite/karma.conf.full.js Wed Mar 12 17:19:23 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -// Karma configuration -// Generated on Wed Jan 29 2014 15:32:16 GMT+0100 (CET) - - -// SID: get WORKSPACE_URL configuration from one single file to customize -var w = require ('./workspace.info.full.js'); - -module.exports = function(config) { - config.set({ - // list of files or patterns to load in the browser, from current directory - files: [ - {pattern: 'tests/**/*.js', included: true} - ], - // list of files to exclude - exclude: [ - ], - // Start these browsers, currently available: - // - Firefox ; Safari (only Mac; run `npm install karma-safari-launcher` first) - // - Chrome ; ChromeCanary ; Opera (run `npm install karma-opera-launcher` first) - // - PhantomJS ; IE (only Windows; run `npm install karma-ie-launcher` first) - browsers: w.BROWSERS, - // frameworks to use. SID: choosen mocha, added karma-e2e-dsl (end-to-end testing) - frameworks: ['mocha', 'karma-e2e-dsl'], - // SID: Karma will start and run somewhere else than '/', to allow proxying '/' - urlRoot: '/karma/', - // SID: directive added on karma-e2e-dsl purpose. Map of path-proxy pairs. - proxies: { - '/': w.WORKSPACE_URL - }, - client: { - mocha: { - ui: 'tdd' - }, - w: w // SID: exports the variable in the test execution browser window - }, - // test results reporter to use : 'dots', 'progress', 'junit', 'growl', 'coverage' - reporters: ['progress'], - // web server port - port: 9876, - // enable / disable colors in the output (reporters and logs) - colors: true, - // level of logging : config.LOG_DISABLE || _ERROR || _WARN || _INFO || _DEBUG - logLevel: config.LOG_INFO || config.LOG_DEBUG, - // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, - // If browser does not capture in given timeout [ms], kill it - captureTimeout: 20000, - // Continuous Integration mode : if true, it capture browsers, run tests and exit - // singleRun: false - singleRun: true, - }); -}; diff -r 047aab3a53cf -r 736fdedb7774 src/cm/scripts/test-suite/start-test-suite-full.sh --- a/src/cm/scripts/test-suite/start-test-suite-full.sh Wed Mar 12 17:19:23 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -#!/bin/bash - -echo "---------------------" -echo "Starting test server" - -pushd ../../../../dev > /dev/null -vagrant ssh -c "/srv/comt/src/cm/scripts/test-suite/start-testserver.sh" -popd > /dev/null - -SERVER_IP=`grep WORKSPACE_URL workspace.info.full.js | tail -n -1 | cut -d: -f2 | tr -d " //"` -SERVER_PORT=`grep WORKSPACE_URL ./workspace.info.full.js | tail -n -1 | cut -d: -f3 | tr -d " ');"` - -if [[ -x `which nc` ]]; then - SERVER_TEST_CMD="nc -z $SERVER_IP $SERVER_PORT" -elif [[ -x `which curl` ]]; then - SERVER_TEST_CMD="curl --output /dev/null --silent --head --fail http://$SERVER_IP:$SERVER_PORT" -elif [[ -x `which wget` ]]; then - SERVER_TEST_CMD="wget -q --spider http://$SERVER_IP:$SERVER_PORT" -fi -echo "$SERVER_TEST_CMD" - -echo "---------------------" -if [[ -z "$SERVER_TEST_CMD" ]]; then - echo "Waiting 10 seconds to let test server start" - sleep 10 -else - for i in {1..10}; do - echo "waiting 5 seconds to let the test server $SERVER_IP:$SERVER_PORT start" - sleep 5 - if $SERVER_TEST_CMD; then - break - fi - done - if [ $i -eq 10 ]; then - echo "could not start test server $SERVER_IP:$SERVER_PORT" - exit 1 - fi -fi - -echo "---------------------" -echo "Starting karma tests" -. ./start-test-suite.sh ./karma.conf.full.js $@ - -echo "---------------------" -echo "stopping test server + output test server logs" - -pushd ../../../../dev > /dev/null -vagrant ssh -c "/srv/comt/src/cm/scripts/test-suite/clean-testserver.sh" -popd /dev/null - - diff -r 047aab3a53cf -r 736fdedb7774 src/cm/scripts/test-suite/start-testserver.sh --- a/src/cm/scripts/test-suite/start-testserver.sh Wed Mar 12 17:19:23 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#!/bin/bash - -pushd `dirname $0` > /dev/null -SCRIPTPATH=`pwd -P` -popd > /dev/null - -ROOTPATH=$(readlink -m "$SCRIPTPATH/../../../..") -TMPFILE=`mktemp` - -pushd "$ROOTPATH" > /dev/null - -nohup bin/django testserver --noinput --addrport=0.0.0.0:8001 initial_data roles_generic test_suite > $TMPFILE 2>&1 & -echo "$!|$TMPFILE" > /tmp/testserver.pid - -cat /tmp/testserver.pid - -popd > /dev/null diff -r 047aab3a53cf -r 736fdedb7774 src/cm/scripts/test-suite/workspace.info.js.tmpl --- a/src/cm/scripts/test-suite/workspace.info.js.tmpl Wed Mar 12 17:19:23 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ - -define ("WORKSPACE_URL", ''); -define ("USER_ADMIN", ''); -define ("PASS_ADMIN", ''); - -define ("BROWSERS", ['Chrome']); - -// TODO: decide wether we should populate workspaces with standard users or -// create them on the fly ? - -define ("USER_EDIT", ''); -define ("PASS_EDIT", ''); - -define ("USER_COM", ''); -define ("PASS_COM", ''); - -define ("USER_OBSERV", ''); -define ("PASS_OBSERV", ''); - -function define (name, value) { - Object.defineProperty (exports, name, { - value: value, - enumerable: true - }); -} - -