From 8db7e7c79908133befcf5959b7ceca73e7f69ecf Mon Sep 17 00:00:00 2001 From: Viktor Scharf Date: Fri, 31 Jan 2025 16:15:30 +0100 Subject: [PATCH] adapt script for running tests --- tests/acceptance/docker/Makefile | 30 +++--- .../acceptance/docker/src/opencloud-base.yml | 2 + .../{run_all_tests.sh => run_api_tests.sh} | 64 ++++++------- tests/acceptance/run_e2e_tests.sh | 96 +++++++++++++++++++ 4 files changed, 143 insertions(+), 49 deletions(-) rename tests/acceptance/{run_all_tests.sh => run_api_tests.sh} (78%) create mode 100755 tests/acceptance/run_e2e_tests.sh diff --git a/tests/acceptance/docker/Makefile b/tests/acceptance/docker/Makefile index 568b971ef..2f774e795 100644 --- a/tests/acceptance/docker/Makefile +++ b/tests/acceptance/docker/Makefile @@ -13,7 +13,14 @@ WHITE := $(shell tput -Txterm setaf 7) RESET := $(shell tput -Txterm sgr0) ## default values only for sub-make calls -COMPOSE_FILE ?= src/redis.yml:src/opencloud-base.yml:src/acceptance.yml +ifeq ($(LOCAL_TEST),true) + COMPOSE_FILE ?= src/opencloud-base.yml:src/tika.yml + ifeq ($(START_EMAIL),true) + COMPOSE_FILE := $(COMPOSE_FILE):src/email.yml + endif +else + COMPOSE_FILE ?= src/redis.yml:src/opencloud-base.yml:src/acceptance.yml +endif ## user input BEHAT_FEATURE ?= @@ -188,14 +195,14 @@ $(targets): .PHONY: testSuite testSuite: $(OC_WRAPPER) build-dev-image clean-docker-container @if [ -n "${START_CEPH}" ]; then \ - COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ - COMPOSE_FILE=src/ceph.yml \ - docker compose run start_ceph; \ + COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ + COMPOSE_FILE=src/ceph.yml \ + docker compose run start_ceph; \ fi; \ if [ "${START_EMAIL}" == "true" ]; then \ - COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ - COMPOSE_FILE=src/email.yml \ - docker compose run start_email; \ + COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ + COMPOSE_FILE=src/email.yml \ + docker compose run start_email; \ fi; \ if [ "${START_ANTIVIRUS}" == "true" ]; then \ COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ @@ -278,16 +285,15 @@ clean: clean-docker-container clean-docker-volumes clean-dev-docker-image clean- .PHONY: start-server start-server: ## build and start server @echo "Build and start server..." - COMPOSE_FILE=src/opencloud-base.yml:src/tika.yml:src/email.yml \ + COMPOSE_FILE=$(COMPOSE_FILE) \ COMPOSE_PROJECT_NAME=opencloud \ - SEARCH_EXTRACTOR_TYPE=tika \ OC_IMAGE_TAG=dev \ - WITH_WRAPPER=true \ + WITH_WRAPPER=$(WITH_WRAPPER) \ TEST_SOURCE=opencloud \ STORAGE_DRIVER=ocis \ OC_ASYNC_UPLOADS=true \ - START_TIKA=true \ SEARCH_EXTRACTOR_TYPE=tika \ - START_EMAIL=true \ OC_ADD_RUN_SERVICES=notifications \ + GRAPH_AVAILABLE_ROLES=$(GRAPH_AVAILABLE_ROLES) \ + OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST=$(OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST) \ docker compose up -d --build --force-recreate diff --git a/tests/acceptance/docker/src/opencloud-base.yml b/tests/acceptance/docker/src/opencloud-base.yml index 1e22da1a6..635828470 100644 --- a/tests/acceptance/docker/src/opencloud-base.yml +++ b/tests/acceptance/docker/src/opencloud-base.yml @@ -25,6 +25,8 @@ services: OC_ADD_RUN_SERVICES: $OC_ADD_RUN_SERVICES PROXY_HTTP_ADDR: "0.0.0.0:9200" OC_JWT_SECRET: "some-random-jwt-secret" + GRAPH_AVAILABLE_ROLES: ${GRAPH_AVAILABLE_ROLES} + OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST: $OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST # s3ng specific settings STORAGE_USERS_S3NG_ENDPOINT: http://ceph:8080 diff --git a/tests/acceptance/run_all_tests.sh b/tests/acceptance/run_api_tests.sh similarity index 78% rename from tests/acceptance/run_all_tests.sh rename to tests/acceptance/run_api_tests.sh index 48a660835..f8f21490e 100755 --- a/tests/acceptance/run_all_tests.sh +++ b/tests/acceptance/run_api_tests.sh @@ -1,11 +1,38 @@ #!/bin/bash +# Set required environment variables +export LOCAL_TEST=true +export START_EMAIL=true +export GRAPH_AVAILABLE_ROLES="b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049" + # LOCAL TEST WITHOUT EXTRA ENVS TEST_SERVER_URL="https://opencloud-server:9200" OC_WRAPPER_URL="http://opencloud-server:5200" EXPECTED_FAILURES_FILE="tests/acceptance/expected-failures-localAPI-on-decomposed-storage.md" EXPECTED_FAILURES_FILE_FROM_CORE="tests/acceptance/expected-failures-API-on-decomposed-storage.md" +# Start server +make -C tests/acceptance/docker start-server + +# Wait until the server responds with HTTP 200 +echo "Waiting for server to start..." +for i in {1..60}; do + response_code=$(curl -sk -u admin:admin "${TEST_SERVER_URL}/graph/v1.0/users/admin" -w "%{http_code}" -o /dev/null) + + echo "Attempt $i: Received response code $response_code" # Debugging line to see the status + + if [ "$response_code" == "200" ]; then + echo "✅ Server is up and running!" + break + fi + sleep 1 +done + +if [ "$response_code" != "200" ]; then + echo "❌ Server is not up after 60 attempts." + exit 1 +fi + # List of suites to run SUITES=( "apiArchiver" @@ -76,19 +103,6 @@ EXTRA_SUITE=( "cliCommands" ) -E2E_SUITES=( - "admin-settings" - "file-action" - "journeys" - "navigation" - "search" - "shares" - "spaces" - "user-settings" -) - -EXTRA_E2E_SUITE="app-providerapp-store,keycloak,ocm,oidc" - # Create log directory LOG_DIR="./suite-logs" mkdir -p "$LOG_DIR" @@ -136,30 +150,6 @@ for SUITE in "${CORE_SUITES[@]}"; do fi done -# Run e2e suites -for SUITE in "${E2E_SUITES[@]}"; do - echo "==============================================" - echo "Running e2e suite: $SUITE" - echo "==============================================" - - LOG_FILE="$LOG_DIR/${SUITE}.log" - - # Run suite - ( - cd services/web/_web/tests/e2e || exit 1 - BASE_URL_OPEN_CLOUD=$TEST_SERVER_URL RETRY=1 HEADLESS=true ./run-e2e.sh --suites $SUITE > "../../../../../$LOG_FILE" 2>&1 - ) - - # Check if suite was successful - if [ $? -eq 0 ]; then - echo "✅ Suite $SUITE completed successfully." - ((SUCCESS_COUNT++)) - else - echo "❌ Suite $SUITE failed. Check log: $LOG_FILE" - ((FAILURE_COUNT++)) - fi -done - # Report summary echo "==============================================" echo "Test Summary:" diff --git a/tests/acceptance/run_e2e_tests.sh b/tests/acceptance/run_e2e_tests.sh new file mode 100755 index 000000000..68edb1bc8 --- /dev/null +++ b/tests/acceptance/run_e2e_tests.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Set required environment variables +export LOCAL_TEST=true +export WITH_WRAPPER=false +export GRAPH_AVAILABLE_ROLES="b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6,63e64e19-8d43-42ec-a738-2b6af2610efa" +export OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST="/drone/src/tests/config/drone/banned-password-list.txt" + +TEST_SERVER_URL="https://opencloud-server:9200" + +# Start server +make -C tests/acceptance/docker start-server + +# Wait until the server responds with HTTP 200 +echo "Waiting for server to start..." +for i in {1..60}; do + response_code=$(curl -sk -u admin:admin "${TEST_SERVER_URL}/graph/v1.0/users/admin" -w "%{http_code}" -o /dev/null) + + echo "Attempt $i: Received response code $response_code" # Debugging line to see the status + + if [ "$response_code" == "200" ]; then + echo "✅ Server is up and running!" + break + fi + sleep 1 +done + +if [ "$response_code" != "200" ]; then + echo "❌ Server is not up after 60 attempts." + exit 1 +fi + + +E2E_SUITES=( + "admin-settings" + "file-action" + "journeys" + "navigation" + "search" + "shares" + "spaces" + "user-settings" +) + +EXTRA_E2E_SUITE="app-providerapp-store,keycloak,ocm,oidc" + +# Create log directory +LOG_DIR="./suite-logs" +mkdir -p "$LOG_DIR" + +SUCCESS_COUNT=0 +FAILURE_COUNT=0 + +# Clone the repository and install dependencies +git clone https://github.com/opencloud-eu/web +cd web || exit 1 +pnpm i +echo "Installation complete, moving to tests/e2e directory..." + +# Run e2e suites +for SUITE in "${E2E_SUITES[@]}"; do + echo "==============================================" + echo "Running e2e suite: $SUITE" + echo "==============================================" + + LOG_FILE="$LOG_DIR/${SUITE}.log" + + # Run suite + ( + cd tests/e2e || exit 1 + OC_BASE_URL=$TEST_SERVER_URL RETRY=1 HEADLESS=true PARALLEL=4 ./run-e2e.sh --suites $SUITE > "../../../$LOG_FILE" 2>&1 + ) + + # Check if suite was successful + if [ $? -eq 0 ]; then + echo "✅ Suite $SUITE completed successfully." + ((SUCCESS_COUNT++)) + else + echo "❌ Suite $SUITE failed. Check log: $LOG_FILE" + ((FAILURE_COUNT++)) + fi +done + +# Report summary +echo "==============================================" +echo "Test Summary:" +echo "✅ Successful suites: $SUCCESS_COUNT" +echo "❌ Failed suites: $FAILURE_COUNT" +echo "Logs saved in: $LOG_DIR" +echo "==============================================" + +# Cleanup: Remove the cloned web directory +echo "🧹 Cleaning up..." +cd .. +rm -rf web +echo "✅ Cleanup complete."