Refactor how selenium suites are run
This commit is contained in:
parent
f07151b9b3
commit
bb9d7a134e
|
|
@ -6,7 +6,7 @@ on:
|
|||
- v3.11.x
|
||||
- bump-otp-for-oci
|
||||
- bump-rbe-*
|
||||
- bump-rules_erlang
|
||||
- bump-rules_erlang
|
||||
paths:
|
||||
- 'deps/**'
|
||||
- 'scripts/**'
|
||||
|
|
@ -84,98 +84,14 @@ jobs:
|
|||
run: |
|
||||
docker network create ${DOCKER_NETWORK}
|
||||
|
||||
- name: Start RabbitMQ
|
||||
run: |
|
||||
RABBITMQ_CONFIG_DIR="${PWD}/${SELENIUM_DIR}/test/oauth/with-uaa"
|
||||
docker run \
|
||||
--detach \
|
||||
--name rabbitmq \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
-p 15672:15672 -p 5672:5672 \
|
||||
-v ${RABBITMQ_CONFIG_DIR}/logging.conf:/etc/rabbitmq/conf.d/logging.conf:ro \
|
||||
-v ${RABBITMQ_CONFIG_DIR}/rabbitmq-headless.config:/etc/rabbitmq/rabbitmq.config:ro \
|
||||
-v ${RABBITMQ_CONFIG_DIR}/enabled_plugins:/etc/rabbitmq/enabled_plugins \
|
||||
bazel/packaging/docker-image:rabbitmq
|
||||
|
||||
- name: Start Selenium
|
||||
run: |
|
||||
docker run \
|
||||
--detach \
|
||||
--name selenium \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
-p 4444:4444 \
|
||||
--shm-size=2g \
|
||||
selenium/standalone-${{ matrix.browser }}:103.0
|
||||
|
||||
- name: Start UAA
|
||||
run: |
|
||||
UAA_CONFIG="${PWD}/${SELENIUM_DIR}/test/oauth/with-uaa/uaa-headless"
|
||||
docker run \
|
||||
--detach \
|
||||
--name uaa \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
--publish 8080:8080 \
|
||||
--mount "type=bind,source=${UAA_CONFIG},target=/uaa" \
|
||||
--env UAA_CONFIG_PATH="/uaa" \
|
||||
--env JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom" \
|
||||
cloudfoundry/uaa:75.21.0
|
||||
|
||||
- name: Build Test Runner Image
|
||||
run: |
|
||||
cd ${SELENIUM_DIR}
|
||||
docker build -t mocha-test --target test .
|
||||
|
||||
- name: Wait for UAA to be Up
|
||||
- name: Run Suites
|
||||
run: |
|
||||
cd ${PWD}/${SELENIUM_DIR}/test/oauth/with-uaa
|
||||
./waitTillUAAReady
|
||||
|
||||
|
||||
- name: Run Suite Test oauth/with-uaa
|
||||
run: |
|
||||
TEST_DIR="${PWD}/${SELENIUM_DIR}/test"
|
||||
docker run \
|
||||
--rm \
|
||||
--name mocha \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
--env RABBITMQ_URL=http://rabbitmq:15672 \
|
||||
--env RUN_LOCAL=false \
|
||||
-v ${TEST_DIR}:/code/test \
|
||||
-v ${PWD}/screens:/screens \
|
||||
mocha-test /code/test/oauth/with-uaa
|
||||
|
||||
- name: Save UAA Logs
|
||||
if: always()
|
||||
run: |
|
||||
mkdir logs
|
||||
docker container ls | grep uaa && docker logs uaa > logs/uaa.log || echo "uaa not running"
|
||||
|
||||
- name: Stop UAA
|
||||
run: |
|
||||
docker kill uaa && docker rm uaa
|
||||
|
||||
- name: Run Suite Test oauth/with-uaa-down
|
||||
run: |
|
||||
TEST_DIR="${PWD}/${SELENIUM_DIR}/test"
|
||||
docker run \
|
||||
--rm \
|
||||
--name mocha \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
--env RABBITMQ_URL=http://rabbitmq:15672 \
|
||||
--env RUN_LOCAL=false \
|
||||
-v ${TEST_DIR}:/code/test \
|
||||
-v ${PWD}/screens:/screens \
|
||||
mocha-test /code/test/oauth/with-uaa-down
|
||||
|
||||
#! - name: Setup tmate session
|
||||
#! uses: mxschmitt/action-tmate@v3
|
||||
#! if: always()
|
||||
|
||||
- name: Save Logs
|
||||
if: always()
|
||||
run: |
|
||||
docker container ls | grep rabbitmq && docker logs rabbitmq > logs/rabbitmq.log || echo "rabbitmq not running"
|
||||
docker container ls | grep selenium && docker logs selenium > logs/selenium.log || echo "selenium not running"
|
||||
${SELENIUM_DIR}/run-suites.sh
|
||||
|
||||
- name: Upload Test Artifacts
|
||||
if: always()
|
||||
|
|
|
|||
|
|
@ -30,3 +30,5 @@ test/config_schema_SUITE_data/schema/
|
|||
selenium/node_modules
|
||||
selenium/package-lock.json
|
||||
selenium/screens/*/*
|
||||
selenium/logs
|
||||
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
.ONESHELL:# single shell invocation for all lines in the recipe
|
||||
SHELL = bash# we depend on bash expansion for e.g. queue patterns
|
||||
|
||||
.DEFAULT_GOAL = help
|
||||
|
||||
ifndef SUITE
|
||||
override SUITE = "test/oauth/with-uaa"
|
||||
endif
|
||||
|
||||
SELENIUM_VERSION := 104.0
|
||||
|
||||
### TARGETS ###
|
||||
|
||||
help:
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
start-chrome: ## Install Selenium Chrome
|
||||
@(echo "Installing Selenium Chrome")
|
||||
@(docker network inspect rabbitmq_net >/dev/null 2>&1 || docker network create rabbitmq_net)
|
||||
@(docker rm -f selenium 2>/dev/null || echo "selenium was not running")
|
||||
@(docker run -d --name selenium --net rabbitmq_net -p 4444:4444 --shm-size=2g selenium/standalone-chrome:$(SELENIUM_VERSION))
|
||||
#@(docker run -d --name selenium --net rabbitmq_selenimum_net -p 4444:4444 --shm-size=2g selenium/standalone-chrome)
|
||||
@(echo "Selenium Standalone is running on http://localhost:4444/ && http://selenium:4444/")
|
||||
stop-chrome: ## Stop Selenium Chrome
|
||||
@(docker rm -f selenium 2>/dev/null || echo "selenium was not running")
|
||||
|
||||
build-test-runner-image: ## Prepare docker image to run tests
|
||||
@(docker build -t mocha-test --target test .)
|
||||
|
||||
setup: ## Deploy infrastructure for headless mode to run $(SUITE)
|
||||
$(SUITE)/setup.sh
|
||||
teardown: ## Undeploy infrastructure for headless mode to run
|
||||
$(SUITE)/teardown.sh
|
||||
|
||||
run-test: ## Run tests using selenium hub (headless mode)
|
||||
@(docker network inspect rabbitmq_net >/dev/null 2>&1 || docker network create rabbitmq_net)
|
||||
@(echo "Running tests in headless mode for suite $(SUITE) ...")
|
||||
@(docker run --rm --name mocha --net rabbitmq_net \
|
||||
--env RABBITMQ_URL=http://rabbitmq:15672 \
|
||||
--env RUN_LOCAL=false \
|
||||
-v ${PWD}/screens:/screens \
|
||||
-v ${PWD}/test:/code/test mocha-test $(SUITE)
|
||||
)
|
||||
|
|
@ -10,28 +10,20 @@ To run the tests we need:
|
|||
|
||||
# How tests are organized
|
||||
|
||||
All tests are hanging from the `test` folder. We can use subfolders to better organize them.
|
||||
For instance, all OAuth2 related tests are under `test/oauth`. And under this folder
|
||||
we have another subfolder, `tests/oauth/with-uaa` to group all the tests cases which run against UAA as OAuth2 server.
|
||||
All test cases are under the `test` folder and grouped into subfolders based on the area of functionality
|
||||
they are testing. For instance, under `oauth` folder, we have test cases about OAuth 2.0.
|
||||
Furthermore, within an area of functionality like OAuth 2.0 we want to test under different configuration.
|
||||
For instance under `test/oauth/with-uaa` we group all test cases which run against UAA. Whereas
|
||||
under `test/oauth/with-uaa-down` we group all test cases which run against a UAA which is down.
|
||||
|
||||
At the moment, there are no smart around discovering all the tests under subfolders. That will come later.
|
||||
Under the `test` folder we have test cases and some configuration files. And under `suites` folder we have
|
||||
the test suites where we literally script the following:
|
||||
- the suite's **setup**, e.g. start RabbitMQ and UAA with a specific configuration
|
||||
- the test cases, e.g. run all tests under `test/oauth/with-uaa`
|
||||
- the suite's **teardown**, e.g. stop RabbitMQ and UAA
|
||||
- and save all logs and screen captures if any
|
||||
|
||||
The idea is that every folder is a suite of test cases which have in common a runtime environment. For instance,
|
||||
the test suite `test/oauth/with-uaa` has a `setup.sh` script which deploys RabbitMQ and a UAA server.
|
||||
Whereas the test suite `test/oath/with-uaa-down` has a `setup.sh` script which only deploys RabbitMQ.
|
||||
|
||||
# How run the tests
|
||||
|
||||
But regardless how we run the tests, we are going to compile RabbitMQ server and build its docker image first.
|
||||
```
|
||||
make package-generic-unix
|
||||
make docker-image
|
||||
```
|
||||
From the output of the `make docker-image` we copy the image's tag and run the following
|
||||
command, e.g.
|
||||
```
|
||||
export RABBITMQ_IMAGE_TAG=3.8.10-1696.g171734f.dirty
|
||||
```
|
||||
# How to run the tests
|
||||
|
||||
There are two ways to run the tests.
|
||||
|
||||
|
|
@ -43,51 +35,22 @@ from source to speed things up. Otherwise, we would have to build a docker image
|
|||
**Headless mode** - If we are not making any code changes to RabbitMQ and instead
|
||||
we are only writing tests or simply we want to run them, then we want to run the tests in headless mode.
|
||||
|
||||
**IMPORTANT**: RabbitMQ and UAA configuration is different for each mode. The reason is the hostname used
|
||||
for both, RabbitMQ and UAA. In headless mode, everything runs in containers and we refer to each container but its
|
||||
name, e.g. `rabbitmq` or `uaa`. Whereas in interactive mode, we run most of the components locally (i.e `localhost`), such as RabbitMQ or UAA.
|
||||
|
||||
## Run tests in headless-mode
|
||||
|
||||
In this mode, we are running the following containers within the same
|
||||
docker network in our local machine:
|
||||
- RabbitMQ
|
||||
- UAA
|
||||
- the browser
|
||||
- and the test runner
|
||||
In this mode, we are run suite of tests, not individual tests.
|
||||
|
||||
First, we launch **Selenium Hub** which is where the headless chrome browser runs:
|
||||
If we want to run just one particular suite, run it directly:
|
||||
```
|
||||
cd selenium
|
||||
make start-chrome
|
||||
suites/oauth-with-uaa.sh
|
||||
```
|
||||
|
||||
Then we run the setup.sh script which deploys the runtime requirement for the suite test we are going to run:
|
||||
Or we can run all suites:
|
||||
```
|
||||
make setup SUITE=test/oauth/with-uaa
|
||||
```
|
||||
|
||||
And now we run the tests
|
||||
```
|
||||
make run-test SUITE=test/oauth/with-uaa
|
||||
```
|
||||
> By default, if we do not specify any SUITE, it uses `test/oauth/with-uaa`
|
||||
|
||||
And to tear down the runtime for the test suite we run:
|
||||
```
|
||||
make teardown SUITE=test/oauth/with-uaa
|
||||
```
|
||||
|
||||
At the moment there are only 2 suites of tests. The first one is `test/oauth/with-uaa` that we just discussed above.
|
||||
The second one is `test/oauth/with-uaa-down` which runs a test case with UAA down.
|
||||
To run this suite, we would proceed as follows:
|
||||
|
||||
```
|
||||
make setup SUITE=test/oauth/with-uaa-down
|
||||
make run-test SUITE=test/oauth/with-uaa-down
|
||||
make teardown SUITE=test/oauth/with-uaa-down
|
||||
```
|
||||
|
||||
**Note**: If at any stage, the tests take a long time to run, try restarting the selenium-hub by running. Sometimes it becomes unresponsive.
|
||||
```
|
||||
make start-chrome
|
||||
run-suites.sh
|
||||
```
|
||||
|
||||
|
||||
|
|
@ -107,13 +70,9 @@ cd selenium
|
|||
npm install
|
||||
```
|
||||
|
||||
Access the test suite folder:
|
||||
```
|
||||
cd test/oauth/with-uaa
|
||||
```
|
||||
|
||||
Start UAA:
|
||||
```
|
||||
cd test/oauth
|
||||
make start-uaa
|
||||
```
|
||||
|
||||
|
|
@ -122,11 +81,16 @@ Start RabbitMQ from source (it runs `make run-broker`):
|
|||
make start-rabbitmq
|
||||
```
|
||||
|
||||
Access the test case folder:
|
||||
```
|
||||
cd with-uaa
|
||||
```
|
||||
|
||||
To run all tests under the suite:
|
||||
```
|
||||
make run-test
|
||||
make test
|
||||
```
|
||||
Or to run a single tests under the suite:
|
||||
```
|
||||
make run-test TEST=landing.js
|
||||
make test TEST=landing.js
|
||||
```
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
for f in $SCRIPT/suites/*.sh
|
||||
do
|
||||
SUITE=$(basename -- "$f")
|
||||
echo "Running suite $SUITE ..."
|
||||
$f
|
||||
done
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
# Name of the suite used to generate log and screen folders
|
||||
SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
|
||||
|
||||
# Path to the test cases this suite should run. It is relative to the selenium/test folder
|
||||
TEST_CASES_PATH=/oauth/with-uaa-down
|
||||
# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
|
||||
TEST_CONFIG_PATH=/oauth
|
||||
|
||||
source $SCRIPT/suite_template
|
||||
|
||||
_setup () {
|
||||
start_rabbitmq
|
||||
}
|
||||
_save_logs() {
|
||||
save_container_logs rabbitmq
|
||||
}
|
||||
_teardown() {
|
||||
kill_container_if_exist rabbitmq
|
||||
}
|
||||
run
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
# Name of the suite used to generate log and screen folders
|
||||
SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
|
||||
|
||||
# Path to the test cases this suite should run. It is relative to the selenium/test folder
|
||||
TEST_CASES_PATH=/oauth/with-uaa
|
||||
# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
|
||||
TEST_CONFIG_PATH=/oauth
|
||||
# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
|
||||
UAA_CONFIG_PATH=/uaa
|
||||
|
||||
source $SCRIPT/suite_template
|
||||
|
||||
_setup () {
|
||||
start_rabbitmq
|
||||
start_uaa
|
||||
}
|
||||
_save_logs() {
|
||||
save_container_logs rabbitmq
|
||||
save_container_logs uaa
|
||||
}
|
||||
_teardown() {
|
||||
kill_container_if_exist rabbitmq
|
||||
kill_container_if_exist uaa
|
||||
}
|
||||
run
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
SUITE=${SUITE:?"missing SUITE"}
|
||||
|
||||
init_suite() {
|
||||
TEST_DIR=${SCRIPT}/../test
|
||||
TEST_CASES_DIR=${TEST_DIR}${TEST_CASES_PATH:?"missing TEST_CASES_PATH"}
|
||||
TEST_CONFIG_DIR=${TEST_DIR}${TEST_CONFIG_PATH:?"missing TEST_CONFIG_PATH"}
|
||||
DOCKER_NETWORK=${DOCKER_NETWORK:-rabbitmq_net}
|
||||
|
||||
echo "TEST_CASES_DIR: ${TEST_CASES_DIR} "
|
||||
echo "TEST_CONFIG_DIR: ${TEST_CONFIG_DIR} "
|
||||
echo "DOCKER_NETWORK: ${DOCKER_NETWORK} "
|
||||
}
|
||||
|
||||
BIN=${SCRIPT}/../bin
|
||||
LOGS=$PWD/logs/${SUITE}
|
||||
SCREENS=$PWD/screens/${SUITE}
|
||||
|
||||
build_mocha_image() {
|
||||
if [[ "$(docker images -q mocha-test 2> /dev/null)" == "" ]]; then
|
||||
docker build -t mocha-test --target test $SCRIPT/..
|
||||
fi
|
||||
}
|
||||
|
||||
start_selenium() {
|
||||
echo "Selenimum starting ..."
|
||||
|
||||
kill_container_if_exist selenium
|
||||
|
||||
docker run \
|
||||
--detach \
|
||||
--name selenium \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
-p 4444:4444 \
|
||||
--shm-size=2g \
|
||||
selenium/standalone-chrome:103.0
|
||||
|
||||
wait_for_message selenium "Started Selenium Standalone"
|
||||
echo "Selenimum ready"
|
||||
}
|
||||
|
||||
kill_container_if_exist() {
|
||||
docker stop $1 &> /dev/null || true && docker rm $1 &> /dev/null || true
|
||||
}
|
||||
wait_for_message() {
|
||||
while ! docker logs $1 | grep -q "$2";
|
||||
do
|
||||
sleep 5
|
||||
echo "Waiting 5sec for $1 to start ..."
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
init_rabbitmq() {
|
||||
RABBITMQ_CONFIG_DIR=${TEST_CONFIG_DIR}
|
||||
RABBITMQ_DOCKER_IMAGE=${RABBITMQ_DOCKER_IMAGE:-rabbitmq}
|
||||
RABBITMQ_URL=${RABBITMQ_URL:-http://rabbitmq:15672}
|
||||
RABBITMQ_CONFIG_FILENAME=${RABBITMQ_CONFIG_FILENAME:-rabbitmq.config}
|
||||
RABBITMQ_CONFIG_FILE=${RABBITMQ_CONFIG_DIR}/${RABBITMQ_CONFIG_FILENAME}
|
||||
|
||||
echo "RABBITMQ_CONFIG_DIR: ${RABBITMQ_CONFIG_DIR}"
|
||||
echo "RABBITMQ_CONFIG_FILE: ${RABBITMQ_CONFIG_FILE}"
|
||||
echo "RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
|
||||
echo "RABBITMQ_URL: ${RABBITMQ_URL}"
|
||||
}
|
||||
|
||||
start_rabbitmq () {
|
||||
init_rabbitmq
|
||||
kill_container_if_exist rabbitmq
|
||||
|
||||
echo "RabbitMQ starting ..."
|
||||
|
||||
docker run \
|
||||
--detach \
|
||||
--name rabbitmq \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
-p 15672:15672 -p 5672:5672 \
|
||||
-v ${RABBITMQ_CONFIG_DIR}/logging.conf:/etc/rabbitmq/conf.d/logging.conf:ro \
|
||||
-v ${RABBITMQ_CONFIG_FILE}:/etc/rabbitmq/rabbitmq.config:ro \
|
||||
-v ${RABBITMQ_CONFIG_DIR}/enabled_plugins:/etc/rabbitmq/enabled_plugins \
|
||||
${RABBITMQ_DOCKER_IMAGE}
|
||||
|
||||
wait_for_message rabbitmq "Server startup complete"
|
||||
echo "RabbitMQ ready"
|
||||
}
|
||||
init_uaa() {
|
||||
UAA_CONFIG_PATH=${UAA_CONFIG_PATH:?"missing UAA_CONFIG_PATH"}
|
||||
UAA_CONFIG_DIR=${TEST_CONFIG_DIR}${UAA_CONFIG_PATH}
|
||||
|
||||
echo "UAA_CONFIG: ${UAA_CONFIG_DIR}"
|
||||
}
|
||||
start_uaa() {
|
||||
init_uaa
|
||||
kill_container_if_exist uaa
|
||||
|
||||
docker run \
|
||||
--detach \
|
||||
--name uaa \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
--publish 8080:8080 \
|
||||
--mount "type=bind,source=${UAA_CONFIG_DIR},target=/uaa" \
|
||||
--env UAA_CONFIG_PATH="/uaa" \
|
||||
--env JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom" \
|
||||
cloudfoundry/uaa:75.21.0
|
||||
|
||||
wait_for_uaa
|
||||
}
|
||||
wait_for_uaa() {
|
||||
max_retry=10
|
||||
counter=0
|
||||
until (docker run --net rabbitmq_net --rm curlimages/curl:7.85.0 -L -v http://uaa:8080/.well-known/openid-configuration >/dev/null 2>&1)
|
||||
echo "Waiting for UAA to start"
|
||||
do
|
||||
sleep 5
|
||||
[[ counter -eq $max_retry ]] && echo "Failed!" && exit 1
|
||||
echo "Trying again. Try #$counter"
|
||||
((counter++))
|
||||
done
|
||||
sleep 20 # There is something else not fully initialized in UAA that even after getting a 200 OK it is not ready
|
||||
echo "UAA is ready"
|
||||
|
||||
}
|
||||
|
||||
test () {
|
||||
kill_container_if_exist mocha
|
||||
docker run \
|
||||
--rm \
|
||||
--name mocha \
|
||||
--net ${DOCKER_NETWORK} \
|
||||
--env RABBITMQ_URL=${RABBITMQ_URL} \
|
||||
--env RUN_LOCAL=false \
|
||||
-v ${TEST_DIR}:/code/test \
|
||||
-v ${SCREENS}:/screens \
|
||||
mocha-test /code/test${TEST_CASES_PATH}
|
||||
}
|
||||
|
||||
save_logs() {
|
||||
mkdir -p $LOGS
|
||||
save_container_logs selenium
|
||||
save_container_logs mocha
|
||||
}
|
||||
save_container_logs() {
|
||||
docker container ls | grep $1 && docker logs $1 > $LOGS/$1.log || echo "$1 not running"
|
||||
}
|
||||
|
||||
run() {
|
||||
init_suite
|
||||
|
||||
build_mocha_image
|
||||
start_selenium
|
||||
|
||||
echo "Set up ..."
|
||||
[[ $(type -t _setup) == function ]] && _setup
|
||||
|
||||
echo "Running test cases ..."
|
||||
test
|
||||
TEST_RESULT=$?
|
||||
|
||||
echo "Saving Logs to $LOGS ..."
|
||||
save_logs
|
||||
[[ $(type -t _save_logs) == function ]] && _save_logs
|
||||
|
||||
echo "Tear down ..."
|
||||
[[ $(type -t _teardown) == function ]] && _teardown
|
||||
|
||||
kill_container_if_exist selenium
|
||||
|
||||
exit $TEST_RESULT
|
||||
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
SHELL = bash# we depend on bash expansion for e.g. queue patterns
|
||||
|
||||
.DEFAULT_GOAL = help
|
||||
RABBITMQ_SERVER_ROOT = ../../../../../../
|
||||
RABBITMQ_SERVER_ROOT = ../../../../../
|
||||
|
||||
|
||||
### TARGETS ###
|
||||
|
|
@ -14,10 +14,10 @@ start-rabbitmq: ## Start RabbitMQ
|
|||
@(docker kill rabbitmq >/dev/null 2>&1 && docker rm rabbitmq)
|
||||
@(gmake --directory=${RABBITMQ_SERVER_ROOT} run-broker \
|
||||
RABBITMQ_ENABLED_PLUGINS="rabbitmq_auth_backend_oauth2,rabbitmq_management" \
|
||||
RABBITMQ_CONFIG_FILE=deps/rabbitmq_management/selenium/test/oauth/with-uaa/rabbitmq.config)
|
||||
RABBITMQ_CONFIG_FILE=deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.config)
|
||||
|
||||
start-uaa: ## Start UAA
|
||||
@(UAA_CONFIG=${PWD}/uaa ./start-uaa.sh)
|
||||
@(UAA_CONFIG=${PWD}/uaa-localhost ./start-uaa.sh)
|
||||
stop-uaa: ## Stop UAA
|
||||
@(./stop-uaa.sh)
|
||||
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
{login_session_timeout, 1}, %% in minutes
|
||||
{enable_uaa, true},
|
||||
{oauth_enabled, true},
|
||||
{path_prefix, "/my-prefix"},
|
||||
{oauth_client_id, "rabbit_client_code"},
|
||||
{oauth_client_secret, "rabbit_client_code"},
|
||||
{oauth_provider_url, "http://localhost:8080"}
|
||||
33
deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config
vendored
Normal file
33
deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
{rabbit, [
|
||||
{auth_backends, [rabbit_auth_backend_oauth2]}
|
||||
]},
|
||||
{rabbitmq_management, [
|
||||
{login_session_timeout, 1}, %% in minutes
|
||||
{enable_uaa, true},
|
||||
{oauth_enabled, true},
|
||||
{path_prefix, "/my-prefix"},
|
||||
{oauth_client_id, "rabbit_client_code"},
|
||||
{oauth_client_secret, "rabbit_client_code"},
|
||||
{oauth_provider_url, "http://uaa:8080"}
|
||||
]},
|
||||
{rabbitmq_auth_backend_oauth2, [
|
||||
{resource_server_id, <<"rabbitmq">>},
|
||||
{extra_scopes_source, <<"extra_scope">>},
|
||||
{key_config, [
|
||||
{default_key, <<"legacy-token-key">>},
|
||||
{signing_keys,
|
||||
#{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
|
||||
6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
|
||||
IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
|
||||
B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
|
||||
2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
|
||||
QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
|
||||
VwIDAQAB
|
||||
-----END PUBLIC KEY-----">>}
|
||||
}
|
||||
}]
|
||||
}
|
||||
]}
|
||||
].
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
logging:
|
||||
config: /uaa/log4j2.properties
|
||||
|
||||
issuer:
|
||||
uri: http://uaa:8080/
|
||||
|
||||
encryption:
|
||||
active_key_label: CHANGE-THIS-KEY
|
||||
encryption_keys:
|
||||
- label: CHANGE-THIS-KEY
|
||||
passphrase: CHANGEME
|
||||
|
||||
logout:
|
||||
redirect:
|
||||
parameter:
|
||||
disable: false
|
||||
whitelist:
|
||||
http://rabbitmq:15672/*
|
||||
login:
|
||||
serviceProviderKey: |
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5
|
||||
L39WqS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vA
|
||||
fpOwznoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQAB
|
||||
AoGAVOj2Yvuigi6wJD99AO2fgF64sYCm/BKkX3dFEw0vxTPIh58kiRP554Xt5ges
|
||||
7ZCqL9QpqrChUikO4kJ+nB8Uq2AvaZHbpCEUmbip06IlgdA440o0r0CPo1mgNxGu
|
||||
lhiWRN43Lruzfh9qKPhleg2dvyFGQxy5Gk6KW/t8IS4x4r0CQQD/dceBA+Ndj3Xp
|
||||
ubHfxqNz4GTOxndc/AXAowPGpge2zpgIc7f50t8OHhG6XhsfJ0wyQEEvodDhZPYX
|
||||
kKBnXNHzAkEAyCA76vAwuxqAd3MObhiebniAU3SnPf2u4fdL1EOm92dyFs1JxyyL
|
||||
gu/DsjPjx6tRtn4YAalxCzmAMXFSb1qHfwJBAM3qx3z0gGKbUEWtPHcP7BNsrnWK
|
||||
vw6By7VC8bk/ffpaP2yYspS66Le9fzbFwoDzMVVUO/dELVZyBnhqSRHoXQcCQQCe
|
||||
A2WL8S5o7Vn19rC0GVgu3ZJlUrwiZEVLQdlrticFPXaFrn3Md82ICww3jmURaKHS
|
||||
N+l4lnMda79eSp3OMmq9AkA0p79BvYsLshUJJnvbk76pCjR28PK4dV1gSDUEqQMB
|
||||
qy45ptdwJLqLJCeNoR0JUcDNIRhOCuOPND7pcMtX6hI/
|
||||
-----END RSA PRIVATE KEY-----
|
||||
serviceProviderKeyPassword: password
|
||||
serviceProviderCertificate: |
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSTCCArKgAwIBAgIBADANBgkqhkiG9w0BAQQFADB8MQswCQYDVQQGEwJhdzEO
|
||||
MAwGA1UECBMFYXJ1YmExDjAMBgNVBAoTBWFydWJhMQ4wDAYDVQQHEwVhcnViYTEO
|
||||
MAwGA1UECxMFYXJ1YmExDjAMBgNVBAMTBWFydWJhMR0wGwYJKoZIhvcNAQkBFg5h
|
||||
cnViYUBhcnViYS5hcjAeFw0xNTExMjAyMjI2MjdaFw0xNjExMTkyMjI2MjdaMHwx
|
||||
CzAJBgNVBAYTAmF3MQ4wDAYDVQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAM
|
||||
BgNVBAcTBWFydWJhMQ4wDAYDVQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAb
|
||||
BgkqhkiG9w0BCQEWDmFydWJhQGFydWJhLmFyMIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
||||
ADCBiQKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5L39W
|
||||
qS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vAfpOw
|
||||
znoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQABo4Ha
|
||||
MIHXMB0GA1UdDgQWBBTx0lDzjH/iOBnOSQaSEWQLx1syGDCBpwYDVR0jBIGfMIGc
|
||||
gBTx0lDzjH/iOBnOSQaSEWQLx1syGKGBgKR+MHwxCzAJBgNVBAYTAmF3MQ4wDAYD
|
||||
VQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAMBgNVBAcTBWFydWJhMQ4wDAYD
|
||||
VQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAbBgkqhkiG9w0BCQEWDmFydWJh
|
||||
QGFydWJhLmFyggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAYvBJ
|
||||
0HOZbbHClXmGUjGs+GS+xC1FO/am2suCSYqNB9dyMXfOWiJ1+TLJk+o/YZt8vuxC
|
||||
KdcZYgl4l/L6PxJ982SRhc83ZW2dkAZI4M0/Ud3oePe84k8jm3A7EvH5wi5hvCkK
|
||||
RpuRBwn3Ei+jCRouxTbzKPsuCVB+1sNyxMTXzf0=
|
||||
-----END CERTIFICATE-----
|
||||
#The secret that an external login server will use to authenticate to the uaa using the id `login`
|
||||
LOGIN_SECRET: loginsecret
|
||||
|
||||
jwt:
|
||||
token:
|
||||
policy:
|
||||
# Will override global validity policies for the default zone only.
|
||||
accessTokenValiditySeconds: 15
|
||||
keys:
|
||||
legacy-token-key:
|
||||
signingKey: |
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA2dP+vRn+Kj+S/oGd49kq6+CKNAduCC1raLfTH7B3qjmZYm45
|
||||
yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhKIdcIWadhqDzdtn1hj/22iUwrhH0b
|
||||
d475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2B9q9KFBmo4Ahh/6+d4wM1rH9kxl0
|
||||
RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF2cr3wQwCfF1qVu4eAVNVfxfy/uEv
|
||||
G3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgGQAvkknWitpRK8KVLypEj5WKej6CF
|
||||
8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7VwIDAQABAoIBAFsB5FszYepa11o3
|
||||
4zSPxgv4qyUjuYf3GfoNW0rRGp3nJLtoHAIYa0CcLX9kzsQfmLtxoY46mdppxr8Z
|
||||
2qUZpBdRVO7ILNfyXhthdQKI2NuyFDhtYK1p8bx6BXe095HMcvm2ohjXzPdTP4Hq
|
||||
HrXAYXjUndUbClbjMJ82AnPF8pM70kBq7g733UqkdfrMuv6/d95Jiyw4cC7dGsI3
|
||||
Ruz9DGhiAyCBtQ0tUB+6Kqn5DChSB+ccfMJjr6GnCVYmERxEQ5DJCTIX8am8C6KX
|
||||
mAxUwHMTsEGBU6GzhcUgAwUFEK3I9RptdlRFp7F8E/P0LxmPkFdgaBNUhrdnB7Y4
|
||||
01n1R1kCgYEA/huFJgwVWSBSK/XIouFuQrxZOI9JbBbdmpFT7SBGCdFg26Or9y7j
|
||||
+N5HE7yuoZ9PkBh17zzosZdsJhGocRYvO0LSq8cXvKXKCwn2fTMM7uJ/oQe68sxG
|
||||
cF/fC0M/8LvRESWShH920rrERu0s161RuasdOPre0aXu7ZQzkQ68O6MCgYEA23NO
|
||||
DHKNblBOdFEWsvotLqV8DrIbQ4le7sSgQr56/bdn9GScZk2JU0f+pqzpiGUy9bIt
|
||||
6uujvt5ar0IvpIQVdjf3dbp6Fy+Dwhd4yTR4dMdDECest7jL++/21x8Y0ywFhBIK
|
||||
yEd+QxpOLXP6qaSKTGxL2rnTXRjl8/g629xQPL0CgYEAkNNOh+jLIgjxzGxA9dRV
|
||||
62M91qaTyi8eDkJV+wgx4taaxZP7Jt5qwCSvjegz/5m01wOZ88hbNxx+XxQhVJK4
|
||||
SKZFO/I07Sfwh2oeOi0maeBdrYGiY09ZtiJuFRU3FBV3irZHU4zyRBh+VY5HyITX
|
||||
12JXPWp+JC7WhkG5QiuLzNECgYEA15OBzICLpx6Es4clAVT6JaSzJcyZM9MyyuOl
|
||||
e2ubbrpJCK/9ZBIvIPzMj/e0wiSH1wzeRrSM+ud7tkcSfk6ytptsIN67KSOoD3b3
|
||||
VNCStEU7ABe5eBG1cRzeI52MyYWpNYBzzyNMSacBvWz9hMD6ivCn44pAtGfNHclw
|
||||
KKNYvxECgYBOamf25md9Jy6rtQsJVEJWw+8sB4lBlKEEadc5qekR7ZQ0hwj8CnTm
|
||||
WOo856ynI28Sog62iw8F/do/z0B29RuGuxw+prkBkn3lg/VQXEitzqcYvota6osa
|
||||
8XSfaPiTyQwWpzbFNZzzemlTsIDiF3UqwkHvWaMYPDf4Ng3cokPPxw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
scim:
|
||||
users:
|
||||
- rabbit_admin|rabbit_admin|scim.read,openid,rabbitmq.read:*/*,rabbitmq.write:*/*,rabbitmq.configure:*/*,rabbitmq.tag:administrator
|
||||
- rabbitmq_management|rabbitmq_management|scim.read,openid,rabbitmq.read:*/*,rabbitmq.write:*/*,rabbitmq.configure:*/*,rabbitmq.tag:management
|
||||
- rabbit_monitor|rabbit_monitor|scim.read,openid,rabbitmq.tag:monitoring
|
||||
groups:
|
||||
'rabbitmq.read:*/*': Read all
|
||||
'rabbitmq.write:*/*': Write all
|
||||
'rabbitmq.configure:*/*': Configure all
|
||||
'rabbitmq.tag:management': Management
|
||||
'rabbitmq.tag:monitoring': Monitoring
|
||||
'rabbitmq.tag:administrator': Administrator
|
||||
|
||||
oauth:
|
||||
# Always override clients on startup
|
||||
client:
|
||||
override: true
|
||||
|
||||
# List of OAuth clients
|
||||
clients:
|
||||
admin:
|
||||
id: admin
|
||||
secret: adminsecret
|
||||
authorized-grant-types: client_credentials
|
||||
scope: none
|
||||
authorities: uaa.admin,clients.admin,clients.read,clients.write,clients.secret,scim.write,scim.read,uaa.resource
|
||||
mgt_api_client:
|
||||
id: mgt_api_client
|
||||
secret: mgt_api_client
|
||||
authorized-grant-types: client_credentials
|
||||
authorities: rabbitmq.tag:monitoring
|
||||
rabbit_client_code:
|
||||
id: rabbit_client_code
|
||||
secret: rabbit_client_code
|
||||
authorized-grant-types: authorization_code
|
||||
scope: rabbitmq.*,openid,profile
|
||||
authorities: uaa.resource,rabbitmq
|
||||
redirect-uri: http://rabbitmq:15672/my-prefix/
|
||||
autoapprove: true
|
||||
|
||||
mgt_api_client_2:
|
||||
id: mgt_api_client_2
|
||||
secret: mgt_api_client_2
|
||||
authorized-grant-types: client_credentials
|
||||
authorities: api://rabbitmq:management
|
||||
producer:
|
||||
id: producer
|
||||
secret: producer_secret
|
||||
authorities: rabbitmq.write:%2F/x-* rabbitmq.write:%2F/q-* rabbitmq.read:%2F/x-* rabbitmq.configure:%2F/*
|
||||
authorized-grant-types: client_credentials
|
||||
consumer:
|
||||
id: consumer
|
||||
secret: consumer_secret
|
||||
authorities: rabbitmq.read:*/* rabbitmq.configure:*/* rabbitmq.write:*/x-* rabbitmq.write:*/q-*
|
||||
authorized-grant-types: client_credentials
|
||||
jms_producer:
|
||||
id: jms_producer
|
||||
secret: jms_producer_secret
|
||||
authorities: rabbitmq.write:%2F/x-* rabbitmq.write:%2F/q-* rabbitmq.read:%2F/x-* rabbitmq.configure:%2F/* rabbitmq.configure:*/jms.durable.queues rabbitmq.write:*/jms.durable.queues rabbitmq.read:*/jms.durable.queues
|
||||
authorized-grant-types: client_credentials
|
||||
jms_consumer:
|
||||
id: jms_consumer
|
||||
secret: jms_consumer_secret
|
||||
authorities: rabbitmq.read:*/* rabbitmq.configure:*/* rabbitmq.write:*/x-* rabbitmq.write:*/q-* rabbitmq.write:*/jms.durable.queues
|
||||
authorized-grant-types: client_credentials
|
||||
producer_with_roles:
|
||||
id: producer_with_roles
|
||||
secret: producer_with_roles_secret
|
||||
authorities: rabbitmq.*,api://rabbitmq:producer,api://rabbitmq:Administrator
|
||||
authorized-grant-types: client_credentials
|
||||
consumer_with_roles:
|
||||
id: consumer_with_roles
|
||||
secret: consumer_with_roles_secret
|
||||
authorities: rabbitmq.* api://rabbitmq:Read.All api://rabbitmq:Configure.All api://rabbitmq:Write.All
|
||||
authorized-grant-types: client_credentials
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
status = error
|
||||
dest = err
|
||||
name = UaaLog
|
||||
|
||||
property.log_pattern=[%d{yyyy-MM-dd'T'HH:mm:ss.nnnnnn}{GMT+0}Z] uaa%X{context} - %pid [%t] .... %5p --- %c{1}: %replace{%m}{(?<=password=|client_secret=)([^&]*)}{<redacted>}%n
|
||||
|
||||
appender.uaaDefaultAppender.type = File
|
||||
appender.uaaDefaultAppender.name = UaaDefaultAppender
|
||||
appender.uaaDefaultAppender.fileName = logs/uaa.log
|
||||
appender.uaaDefaultAppender.layout.type = PatternLayout
|
||||
appender.uaaDefaultAppender.layout.pattern = ${log_pattern}
|
||||
|
||||
appender.uaaAuditAppender.type = File
|
||||
appender.uaaAuditAppender.name = UaaAuditAppender
|
||||
appender.uaaAuditAppender.fileName = logs/uaa_events.log
|
||||
appender.uaaAuditAppender.layout.type = PatternLayout
|
||||
appender.uaaAuditAppender.layout.pattern = ${log_pattern}
|
||||
|
||||
rootLogger.level = debug
|
||||
rootLogger.appenderRef.uaaDefaultAppender.ref = UaaDefaultAppender
|
||||
|
||||
logger.UAAAudit.name = UAA.Audit
|
||||
logger.UAAAudit.level = info
|
||||
logger.UAAAudit.additivity = true
|
||||
logger.UAAAudit.appenderRef.auditEventLog.ref = UaaAuditAppender
|
||||
|
||||
logger.cfIdentity.name = org.cloudfoundry.identity
|
||||
logger.cfIdentity.level = info
|
||||
logger.cfIdentity.additivity = false
|
||||
logger.cfIdentity.appenderRef.uaaDefaultAppender.ref = UaaDefaultAppender
|
||||
|
|
@ -10,4 +10,5 @@ do
|
|||
echo "Trying again. Try #$counter"
|
||||
((counter++))
|
||||
done
|
||||
sleep 10
|
||||
echo "UAA is ready"
|
||||
|
|
@ -8,6 +8,7 @@ var SSOHomePage = require('../../pageobjects/SSOHomePage')
|
|||
describe("Management UI without UAA running", function() {
|
||||
var driver;
|
||||
var homePage;
|
||||
var captureScreen;
|
||||
|
||||
before(async function() {
|
||||
driver = buildDriver();
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
export RABBITMQ_CONFIG=${SCRIPT}/../with-uaa/rabbitmq-headless.config
|
||||
export ENABLED_PLUGINS=${SCRIPT}/../with-uaa/enabled_plugins
|
||||
|
||||
${SCRIPT}/../../../bin/start-rabbitmq.sh
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
$SCRIPT/../../../bin/stop-rabbitmq.sh
|
||||
|
|
@ -11,7 +11,8 @@ describe("An UAA user with administrator tag", function() {
|
|||
var homePage;
|
||||
var uaaLogin;
|
||||
var overview;
|
||||
|
||||
var captureScreen;
|
||||
|
||||
before(async function() {
|
||||
driver = buildDriver();
|
||||
await goToHome(driver);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ describe("Once user is logged in", function() {
|
|||
var homePage;
|
||||
var uaaLogin;
|
||||
var overview;
|
||||
var captureScreen;
|
||||
this.timeout(65000); // hard-coded to 25secs because this test requires 25sec to run
|
||||
|
||||
before(async function() {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ var SSOHomePage = require('../../pageobjects/SSOHomePage')
|
|||
describe("Management UI with UAA running", function() {
|
||||
var driver;
|
||||
var homePage;
|
||||
var captureScreen
|
||||
|
||||
before(async function() {
|
||||
driver = buildDriver();
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ describe("When a logged in user", function() {
|
|||
var captureScreen
|
||||
|
||||
before(async function() {
|
||||
driver = buildDriver();
|
||||
await goToHome(driver);
|
||||
driver = buildDriver()
|
||||
await goToHome(driver)
|
||||
homePage = new SSOHomePage(driver)
|
||||
uaaLogin = new UAALoginPage(driver)
|
||||
overview = new OverviewPage(driver)
|
||||
|
|
@ -23,16 +23,10 @@ describe("When a logged in user", function() {
|
|||
|
||||
it("logs out", async function() {
|
||||
await homePage.clickToLogin();
|
||||
// await takeAndSaveScreenshot(driver, require('path').basename(__filename), '01-beforeLogin');
|
||||
await uaaLogin.login("rabbit_admin", "rabbit_admin");
|
||||
// await takeAndSaveScreenshot(driver, require('path').basename(__filename), '02-afterLogin');
|
||||
await overview.isLoaded()
|
||||
// await takeAndSaveScreenshot(driver, require('path').basename(__filename), '03-overview');
|
||||
|
||||
await overview.logout()
|
||||
|
||||
await homePage.isLoaded()
|
||||
// await takeAndSaveScreenshot(driver, require('path').basename(__filename), '05-afterUaaLogin');
|
||||
});
|
||||
|
||||
after(async function() {
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
export RABBITMQ_CONFIG=${SCRIPT}/rabbitmq-headless.config
|
||||
export ENABLED_PLUGINS=${SCRIPT}/enabled_plugins
|
||||
export UAA_CONFIG=${SCRIPT}/uaa-headless
|
||||
|
||||
${SCRIPT}/../../../bin/start-rabbitmq.sh
|
||||
${SCRIPT}/start-uaa.sh
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
$SCRIPT/../../../bin/stop-rabbitmq.sh
|
||||
$SCRIPT/stop-uaa.sh
|
||||
|
|
@ -11,6 +11,7 @@ describe("Once user is logged in", function() {
|
|||
var homePage;
|
||||
var uaaLogin;
|
||||
var overview;
|
||||
var captureScreen;
|
||||
this.timeout(25000); // hard-coded to 25secs because this test requires 25sec to run
|
||||
|
||||
before(async function() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue