diff --git a/services/create_users.sh b/services/create_users.sh new file mode 100755 index 0000000000000000000000000000000000000000..3dd07c34f45d7af6da84ebe3b8179c3609f2b18c --- /dev/null +++ b/services/create_users.sh @@ -0,0 +1,166 @@ +#!/bin/bash +LOCAL=true + +# User to create +TOTAL_USERS=1 +USERNAME_PREFIX= +USER_PASSWORD= + +help() { + echo "Usage: $1 " + echo " -u : User prefix to use" + echo " -p : Password to set for user" + echo " -l : Local usage of script (default true)" + echo " -t : Total user to create (default 1)" + echo " -h : show this help" + exit 1 +} + +# Read params +while getopts ":u:p:l:t:h" opt; do + case $opt in + u) + USERNAME_PREFIX="$OPTARG" + ;; + p) + USER_PASSWORD=$OPTARG + ;; + l) + LOCAL=$OPTARG + ;; + t) + TOTAL_USERS=$OPTARG + ;; + h) + help + ;; + \?) + echo "Not valid option: -$OPTARG" >&2 + help + ;; + :) + echo "The -$OPTARG option requires an argument." >&2 + help + ;; + esac +done + +if [[ "$USERNAME_PREFIX" == "" ]] +then + echo "USERNAME_PREFIX must be set with option -u" + help + exit -1 +fi + +if [[ "$USER_PASSWORD" == "" ]] +then + echo "USER_PASSWORD must be set with option -p" + help + exit -1 +fi + +# Other Stuff +DOCKER_ROBOT_IMAGE=labs.etsi.org:5050/ocf/robot-tests-image +DOCKER_ROBOT_IMAGE_VERSION=1.0 +cd .. +REPOSITORY_BASE_FOLDER=${PWD} +TEST_FOLDER=$REPOSITORY_BASE_FOLDER/tests +RESULT_FOLDER=$REPOSITORY_BASE_FOLDER/results +ROBOT_DOCKER_FILE_FOLDER=$REPOSITORY_BASE_FOLDER/tools/robot + +# nginx Hostname and http port (80 by default) to reach for tests +CAPIF_REGISTER=capifcore +CAPIF_REGISTER_PORT=8084 +CAPIF_HOSTNAME=capifcore +CAPIF_HTTP_PORT=8080 +CAPIF_HTTPS_PORT=443 + +# VAULT access configuration +CAPIF_VAULT=vault +CAPIF_VAULT_PORT=8200 +CAPIF_VAULT_TOKEN=read-ca-token + +# Mock Server +MOCK_SERVER_URL=http://mock-server:9090 +NOTIFICATION_DESTINATION_URL=$MOCK_SERVER_URL + +# Show variables +echo "CAPIF_HOSTNAME = $CAPIF_HOSTNAME" +echo "CAPIF_REGISTER = $CAPIF_REGISTER" +echo "CAPIF_HTTP_PORT = $CAPIF_HTTP_PORT" +echo "CAPIF_HTTPS_PORT = $CAPIF_HTTPS_PORT" +echo "CAPIF_VAULT = $CAPIF_VAULT" +echo "CAPIF_VAULT_PORT = $CAPIF_VAULT_PORT" +echo "CAPIF_VAULT_TOKEN = $CAPIF_VAULT_TOKEN" +echo "TOTAL_USERS=$TOTAL_USERS" +echo "USERNAME_PREFIX=$USERNAME_PREFIX" +echo "USER_PASSWORD=$USER_PASSWORD" +echo "MOCK_SERVER_URL=$MOCK_SERVER_URL" +echo "NOTIFICATION_DESTINATION_URL=$NOTIFICATION_DESTINATION_URL" + +docker >/dev/null 2>/dev/null +if [[ $? -ne 0 ]] +then + echo "Docker maybe is not installed. Please check if docker CLI is present." + exit -1 +fi + +docker images|grep -Eq '^'$DOCKER_ROBOT_IMAGE'[ ]+[ ]'$DOCKER_ROBOT_IMAGE_VERSION'' +if [[ $? -ne 0 ]] +then + read -p "Robot image is not present. To continue, Do you want to build it? (y/n)" build_robot_image + if [[ $build_robot_image == "y" ]] + then + echo "Building Robot docker image." + cd $ROBOT_DOCKER_FILE_FOLDER + docker build --no-cache -t $DOCKER_ROBOT_IMAGE:$DOCKER_ROBOT_IMAGE_VERSION . + cd $REPOSITORY_BASE_FOLDER + else + exit -2 + fi +fi + +mkdir -p $RESULT_FOLDER + +if [[ "$LOCAL" == "true" ]] +then + docker run -ti --rm --network="host" \ + --add-host host.docker.internal:host-gateway \ + --add-host vault:host-gateway \ + --add-host register:host-gateway \ + --add-host mock-server:host-gateway \ + -v $TEST_FOLDER:/opt/robot-tests/tests \ + -v $RESULT_FOLDER:/opt/robot-tests/results ${DOCKER_ROBOT_IMAGE}:${DOCKER_ROBOT_IMAGE_VERSION} \ + --variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \ + --variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \ + --variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \ + --variable CAPIF_REGISTER:$CAPIF_REGISTER \ + --variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \ + --variable CAPIF_VAULT:$CAPIF_VAULT \ + --variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \ + --variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \ + --variable NOTIFICATION_DESTINATION_URL:$NOTIFICATION_DESTINATION_URL \ + --variable MOCK_SERVER_URL:$MOCK_SERVER_URL \ + --variable TOTAL_USERS:$TOTAL_USERS \ + --variable USERNAME_PREFIX:$USERNAME_PREFIX \ + --variable USER_PASSWORD:$USER_PASSWORD \ + --include create-users +else + docker run -ti --rm --network="host" \ + -v $TEST_FOLDER:/opt/robot-tests/tests \ + -v $RESULT_FOLDER:/opt/robot-tests/results ${DOCKER_ROBOT_IMAGE}:${DOCKER_ROBOT_IMAGE_VERSION} \ + --variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \ + --variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \ + --variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \ + --variable CAPIF_REGISTER:$CAPIF_REGISTER \ + --variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \ + --variable CAPIF_VAULT:$CAPIF_VAULT \ + --variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \ + --variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \ + --variable NOTIFICATION_DESTINATION_URL:$NOTIFICATION_DESTINATION_URL \ + --variable MOCK_SERVER_URL:$MOCK_SERVER_URL \ + --variable TOTAL_USERS:$TOTAL_USERS \ + --variable USERNAME_PREFIX:$USERNAME_PREFIX \ + --variable USER_PASSWORD:$USER_PASSWORD \ + --include create-users +fi \ No newline at end of file diff --git a/services/remove_users.sh b/services/remove_users.sh new file mode 100755 index 0000000000000000000000000000000000000000..c9f63a0b5199f0c243b85a8ac0a8fda02d1104e7 --- /dev/null +++ b/services/remove_users.sh @@ -0,0 +1,145 @@ +#!/bin/bash +LOCAL=true + +# User to remove +USERNAME_PREFIX= + +help() { + echo "Usage: $1 " + echo " -u : User prefix to use" + echo " -l : Local usage of script (default true)" + echo " -h : show this help" + exit 1 +} + +# Read params +while getopts ":u:p:l:t:h" opt; do + case $opt in + u) + USERNAME_PREFIX="$OPTARG" + ;; + l) + LOCAL=$OPTARG + ;; + h) + help + ;; + \?) + echo "Not valid option: -$OPTARG" >&2 + help + ;; + :) + echo "The -$OPTARG option requires an argument." >&2 + help + ;; + esac +done + +if [[ "$USERNAME_PREFIX" == "" ]] +then + echo "USERNAME_PREFIX must be set with option -u" + help + exit -1 +fi + +# Other Stuff +DOCKER_ROBOT_IMAGE=labs.etsi.org:5050/ocf/robot-tests-image +DOCKER_ROBOT_IMAGE_VERSION=1.0 +cd .. +REPOSITORY_BASE_FOLDER=${PWD} +TEST_FOLDER=$REPOSITORY_BASE_FOLDER/tests +RESULT_FOLDER=$REPOSITORY_BASE_FOLDER/results +ROBOT_DOCKER_FILE_FOLDER=$REPOSITORY_BASE_FOLDER/tools/robot + +# nginx Hostname and http port (80 by default) to reach for tests +CAPIF_REGISTER=capifcore +CAPIF_REGISTER_PORT=8084 +CAPIF_HOSTNAME=capifcore +CAPIF_HTTP_PORT=8080 +CAPIF_HTTPS_PORT=443 + +# VAULT access configuration +CAPIF_VAULT=vault +CAPIF_VAULT_PORT=8200 +CAPIF_VAULT_TOKEN=read-ca-token + +# Mock Server +MOCK_SERVER_URL=http://mock-server:9090 +NOTIFICATION_DESTINATION_URL=$MOCK_SERVER_URL + +# Show variables +echo "CAPIF_HOSTNAME = $CAPIF_HOSTNAME" +echo "CAPIF_REGISTER = $CAPIF_REGISTER" +echo "CAPIF_HTTP_PORT = $CAPIF_HTTP_PORT" +echo "CAPIF_HTTPS_PORT = $CAPIF_HTTPS_PORT" +echo "CAPIF_VAULT = $CAPIF_VAULT" +echo "CAPIF_VAULT_PORT = $CAPIF_VAULT_PORT" +echo "CAPIF_VAULT_TOKEN = $CAPIF_VAULT_TOKEN" +echo "TOTAL_USERS=$TOTAL_USERS" +echo "USERNAME_PREFIX=$USERNAME_PREFIX" +echo "USER_PASSWORD=$USER_PASSWORD" +echo "MOCK_SERVER_URL=$MOCK_SERVER_URL" +echo "NOTIFICATION_DESTINATION_URL=$NOTIFICATION_DESTINATION_URL" + +docker >/dev/null 2>/dev/null +if [[ $? -ne 0 ]] +then + echo "Docker maybe is not installed. Please check if docker CLI is present." + exit -1 +fi + +docker images|grep -Eq '^'$DOCKER_ROBOT_IMAGE'[ ]+[ ]'$DOCKER_ROBOT_IMAGE_VERSION'' +if [[ $? -ne 0 ]] +then + read -p "Robot image is not present. To continue, Do you want to build it? (y/n)" build_robot_image + if [[ $build_robot_image == "y" ]] + then + echo "Building Robot docker image." + cd $ROBOT_DOCKER_FILE_FOLDER + docker build --no-cache -t $DOCKER_ROBOT_IMAGE:$DOCKER_ROBOT_IMAGE_VERSION . + cd $REPOSITORY_BASE_FOLDER + else + exit -2 + fi +fi + +mkdir -p $RESULT_FOLDER + +if [[ "$LOCAL" == "true" ]] +then + docker run -ti --rm --network="host" \ + --add-host host.docker.internal:host-gateway \ + --add-host vault:host-gateway \ + --add-host register:host-gateway \ + --add-host mock-server:host-gateway \ + -v $TEST_FOLDER:/opt/robot-tests/tests \ + -v $RESULT_FOLDER:/opt/robot-tests/results ${DOCKER_ROBOT_IMAGE}:${DOCKER_ROBOT_IMAGE_VERSION} \ + --variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \ + --variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \ + --variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \ + --variable CAPIF_REGISTER:$CAPIF_REGISTER \ + --variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \ + --variable CAPIF_VAULT:$CAPIF_VAULT \ + --variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \ + --variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \ + --variable NOTIFICATION_DESTINATION_URL:$NOTIFICATION_DESTINATION_URL \ + --variable MOCK_SERVER_URL:$MOCK_SERVER_URL \ + --variable USERNAME_PREFIX:$USERNAME_PREFIX \ + --include remove-users +else + docker run -ti --rm --network="host" \ + -v $TEST_FOLDER:/opt/robot-tests/tests \ + -v $RESULT_FOLDER:/opt/robot-tests/results ${DOCKER_ROBOT_IMAGE}:${DOCKER_ROBOT_IMAGE_VERSION} \ + --variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \ + --variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \ + --variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \ + --variable CAPIF_REGISTER:$CAPIF_REGISTER \ + --variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \ + --variable CAPIF_VAULT:$CAPIF_VAULT \ + --variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \ + --variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \ + --variable NOTIFICATION_DESTINATION_URL:$NOTIFICATION_DESTINATION_URL \ + --variable MOCK_SERVER_URL:$MOCK_SERVER_URL \ + --variable USERNAME_PREFIX:$USERNAME_PREFIX \ + --include remove-users +fi \ No newline at end of file diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index 5f2840d975cf0b370a77200aa5823416e01ad930..29bb62ecc8c9d71e700c3371461acef6cbd17ad7 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -1,12 +1,11 @@ #!/bin/bash -timestamp=$(date +"%Y%m%d_%H%M%S") -DOCKER_ROBOT_IMAGE=dockerhub.hi.inet/5ghacking/5gnow-robot-test-image -DOCKER_ROBOT_IMAGE_VERSION=4.0 +DOCKER_ROBOT_IMAGE=labs.etsi.org:5050/ocf/robot-tests-image +DOCKER_ROBOT_IMAGE_VERSION=1.0 cd .. REPOSITORY_BASE_FOLDER=${PWD} TEST_FOLDER=$REPOSITORY_BASE_FOLDER/tests -RESULT_FOLDER=$REPOSITORY_BASE_FOLDER/results/$timestamp +RESULT_FOLDER=$REPOSITORY_BASE_FOLDER/results ROBOT_DOCKER_FILE_FOLDER=$REPOSITORY_BASE_FOLDER/tools/robot # nginx Hostname and http port (80 by default) to reach for tests diff --git a/tests/libraries/environment.py b/tests/libraries/environment.py index 8b7a504e8e138b8ade707caf07a786d2f96aa1b6..0cb833e8d4c6c16d836579bc5843a2adb6c5f22f 100644 --- a/tests/libraries/environment.py +++ b/tests/libraries/environment.py @@ -29,5 +29,6 @@ class CapifUserManager(): for uuid, stored_user in self.register_users.items(): if stored_user == username: return uuid + return None CAPIF_USERS = CapifUserManager() \ No newline at end of file diff --git a/tests/libraries/helpers.py b/tests/libraries/helpers.py index 94c850fbe537b37d449ec355dd7779ea52ba3bf5..c7806f15fa4dc5155495794e009ca8b782dbf06b 100644 --- a/tests/libraries/helpers.py +++ b/tests/libraries/helpers.py @@ -152,3 +152,13 @@ def write_dictionary(file_path, data): with open(file_path, 'wb') as fp: pickle.dump(data, fp) print('dictionary saved successfully to file ' + file_path) + +def filter_users_by_prefix_username(users, prefix): + if prefix.strip() == "": + raise Exception('prefix value must contain some value') + + filtered_users=list() + for user in users: + if user['username'].startswith(prefix): + filtered_users.append(user['username']) + return filtered_users diff --git a/tests/libraries/interrupt_listener.py b/tests/libraries/interrupt_listener.py index ec2f5d43e117c5aba1a197a3f8e1fcf9f1d1d407..0a86a58b25636c025f2ed77460bb8de87bf4706e 100644 --- a/tests/libraries/interrupt_listener.py +++ b/tests/libraries/interrupt_listener.py @@ -21,4 +21,7 @@ class InterruptListener: print(f"Starting suite: {name}") def end_suite(self, name, attrs): - print(f"Ending suite: {name}") \ No newline at end of file + print(f"Ending suite: {name}") + + +INTERRUPT_LISTENER=InterruptListener() \ No newline at end of file diff --git a/tests/resources/common/basicRequests.robot b/tests/resources/common/basicRequests.robot index 6d4f4569592e1685ec9b72554b9849f368db0082..2082c815b8243531cd1e2ad5e413da20c9fd7b8c 100644 --- a/tests/resources/common/basicRequests.robot +++ b/tests/resources/common/basicRequests.robot @@ -6,6 +6,7 @@ Library Collections Library OperatingSystem Library XML Library Telnet +Library String *** Variables *** @@ -139,6 +140,12 @@ Get Request Admin Register ... cert=${cert} RETURN ${resp} +Delete User Admin Register Request + [Arguments] ${user_uuid} + ${headers}= Create Register Admin Session ${CAPIF_HTTPS_REGISTER_URL} verify=False + ${resp}= DELETE On Session register_session /deleteUser/${user_uuid} headers=${headers} + RETURN ${resp} + # NEW REQUESTS END Post Request Capif @@ -430,31 +437,58 @@ Delete User At Register [Documentation] (Administrator) This Keyword delete a user from register. [Arguments] ${username}=${NONE} ${uuid}=${NONE} ${user_uuid}= Set Variable ${uuid} + ${environment_users}= Set Variable ${TRUE} IF "${username}" != "${NONE}" ${user_uuid}= Call Method ${CAPIF_USERS} get_user_uuid ${username} END - ${headers}= Create Register Admin Session ${CAPIF_HTTPS_REGISTER_URL} verify=False + IF "${user_uuid}" == "${NONE}" + ${user_uuid}= Get User Uuid At Register ${username} + ${environment_users}= Set Variable ${FALSE} + END - ${resp}= DELETE On Session register_session /deleteUser/${user_uuid} headers=${headers} + ${resp}= Delete User Admin Register Request ${user_uuid} Should Be Equal As Strings ${resp.status_code} 204 - - Call Method ${CAPIF_USERS} remove_register_users_entry ${user_uuid} +q + IF ${environment_users} + Call Method ${CAPIF_USERS} remove_register_users_entry ${user_uuid} + END RETURN ${resp} -Get List of User At Register +Get List of Users At Register [Documentation] (Administrator) This Keyword retrieve a list of users from register. ${headers}= Create Register Admin Session ${CAPIF_HTTPS_REGISTER_URL} verify=False - ${resp}= DELETE On Session register_session /getUsers headers=${headers} + ${resp}= GET On Session register_session /getUsers headers=${headers} Should Be Equal As Strings ${resp.status_code} 200 RETURN ${resp.json()['users']} +Get User Uuid At Register + [Documentation] (Administrator) This Keyword retrieve a list of users and search uuid of user passed by parameters + [Arguments] ${username} + ${users}= Get List of Users At Register + + # Find the first user with username indicated + ${user_uuid}= Set Variable &{EMPTY} + FOR ${user} IN @{users} + IF "${user['username']}" == "${username}" + ${user_uuid}= Set Variable ${user['uuid']} + BREAK + END + END + + IF "${user_uuid}" == "${EMPTY}" + Log ${username} not found in Register + END + + RETURN ${user_uuid} + + Get Auth For User [Documentation] (User) This Keyword retrieve token to be used by user towards first interaction with CCF. [Arguments] ${username} ${password} @@ -531,15 +565,9 @@ Remove Resource ... verify=ca.crt ... username=${management_cert} - Status Should Be 204 ${resp} - - &{body}= Create Dictionary - ... password=password - ... username=${username} - - Create Session jwtsession ${CAPIF_HTTPS_REGISTER_URL} verify=False disable_warnings=1 + Run Keyword and Continue On Failure Status Should Be 204 ${resp} - ${resp}= DELETE On Session jwtsession /remove json=${body} + Delete User At Register username=${username} Should Be Equal As Strings ${resp.status_code} 204 diff --git a/tests/tasks/Dummy Info/populate.robot b/tests/tasks/Dummy Info/populate.robot index 9a61a4075a5085bb4d0a8a56a283f96ecb4113b1..da1247797a7a7087a7e147a39b9018471cb47d9c 100644 --- a/tests/tasks/Dummy Info/populate.robot +++ b/tests/tasks/Dummy Info/populate.robot @@ -10,7 +10,6 @@ Library ArchiveLibrary Library OperatingSystem Library DateTime -Suite Teardown Reset Testing Environment Test Setup Reset Testing Environment @@ -99,14 +98,13 @@ Remove Dummy Invokers and Providers Log ${username}=${entities_dictionary}[${username}] ${resource_url}= Set Variable ${entities_dictionary}[${username}][resource_url] ${management_cert}= Set Variable ${entities_dictionary}[${username}][management_cert] - Run Keyword And Ignore Error Remove Resource ${resource_url.path} ${management_cert} ${username} + Run Keyword And Continue On Failure Remove Resource ${resource_url.path} ${management_cert} ${username} END ${result}= Run Process ls -l Log Many ${result.stdout} - *** Keywords *** Get Provider [Arguments] ${index} ${entities_dictionary} diff --git a/tests/tasks/Users Management/__init__.robot b/tests/tasks/Users Management/__init__.robot new file mode 100644 index 0000000000000000000000000000000000000000..f2cd44ef13c3838e8196b6fa8cdacbf2be9aa1ca --- /dev/null +++ b/tests/tasks/Users Management/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Force Tags users_management \ No newline at end of file diff --git a/tests/tasks/Users Management/users.robot b/tests/tasks/Users Management/users.robot new file mode 100644 index 0000000000000000000000000000000000000000..1558f860b1e074487403663a4dc3a47c62a6c4a3 --- /dev/null +++ b/tests/tasks/Users Management/users.robot @@ -0,0 +1,109 @@ +*** Settings *** +Resource /opt/robot-tests/tests/resources/common.resource +Resource /opt/robot-tests/tests/resources/api_invoker_management_requests/apiInvokerManagementRequests.robot +Resource ../../resources/common.resource +Resource ../../resources/common/basicRequests.robot +Library /opt/robot-tests/tests/libraries/bodyRequests.py +Library Process +Library Collections +Library ArchiveLibrary +Library OperatingSystem +Library DateTime +Library String + + + +*** Variables *** +${TOTAL_USERS} 5 + +${BACKUP_DIRECTORY} backup +${RESULT_FOLDER} /opt/robot-tests/results +${OUTPUT_ZIP_FILE} users_loaded.zip + +${USER_PASSWORD} password +${USERNAME_PREFIX} user +${DESCRIPTION} Testing purpouse + + +*** Test Cases *** +Create Client Users + [Tags] create-users + ${entities_dictionary}= Create Dictionary + Create Directory ${BACKUP_DIRECTORY} + + FOR ${counter} IN RANGE ${TOTAL_USERS} + ${USERNAME}= Set Variable ${USERNAME_PREFIX}_${counter} + + ${resp}= Run Keyword And Continue On Failure Create User At Register + ... ${USERNAME} + ... ${USER_PASSWORD} + ... ${DESCRIPTION} + ... email="${USERNAME}@nobody.com" + + ${register_user_info}= Create Dictionary + + IF ${resp.status_code} == 201 + ${register_user_info}= Create Dictionary + ... user_uuid=${resp.json()['uuid']} + ... &{resp.json()} + ELSE + ${register_user_info}= Create Dictionary + ... ${resp.json()} + END + + Set To Dictionary ${entities_dictionary} ${USERNAME}=${register_user_info} + Copy Files *${USERNAME}* ${BACKUP_DIRECTORY}/ + END + + Write Dictionary ${BACKUP_DIRECTORY}/registers.json ${entities_dictionary} + ${date}= Get Current Date result_format=%Y_%m_%d_%H_%M_%S + Create Zip From Files In Directory ${BACKUP_DIRECTORY} ${RESULT_FOLDER}/${date}_${OUTPUT_ZIP_FILE} + + ${result}= Run Process ls -l + + Log Many ${result.stdout} + +Remove Client Users + [Tags] remove-users + ${files}= List Files In Directory ${RESULT_FOLDER} *${OUTPUT_ZIP_FILE} + ${sorted_list}= Copy List ${files} + + Sort List ${sorted_list} + Log To Console message + ${last_backup}= Get From List ${sorted_list} -1 + + Copy File ${RESULT_FOLDER}/${last_backup} ./ + Extract Zip File ${last_backup} + + ${entities_dictionary}= Read Dictionary registers.json + + Log Dictionary ${entities_dictionary} + + FOR ${username} IN @{entities_dictionary} + Log ${username}=${entities_dictionary}[${username}] + Run Keyword And Continue On Failure Delete User At Register username=${username} + END + + ${result}= Run Process ls -l + + Log Many ${result.stdout} + + +Remove Client Users By Prefix + [Tags] remove-users-by-prefix + + ${users}= Get List of Users At Register + + ${users_to_remove}= Filter Users By Prefix Username users=${users} prefix=${USERNAME_PREFIX} + + Log Dictionary ${users_to_remove} + + FOR ${username} IN @{users_to_remove} + Log Removing ${username} + Run Keyword And Continue On Failure Delete User At Register username=${username} + END + + ${result}= Run Process ls -l + + Log Many ${result.stdout} + diff --git a/tools/robot/entrypoint.sh b/tools/robot/entrypoint.sh index d889a7aa00c1c94988752e7810b356b24bca3289..75f39b5594aa4dd6953f880d85134aa335094f7e 100644 --- a/tools/robot/entrypoint.sh +++ b/tools/robot/entrypoint.sh @@ -8,6 +8,8 @@ TESTS_REQ_FILE=ROBOT_TESTS_DIRECTORY/requirements.txt ARGUMENTS= OPTIONS= +timestamp=$(date +"%Y%m%d_%H%M%S") + while [ -n "$1" ]; do # while loop starts case "$1" in @@ -45,4 +47,4 @@ then fi pip install -r $BASE_REQ_FILE -robot -d ROBOT_RESULTS_DIRECTORY --xunit xunit.xml $OPTIONS $ARGUMENTS +robot -d ROBOT_RESULTS_DIRECTORY/$timestamp --xunit xunit.xml $OPTIONS $ARGUMENTS