From afb1252333341f5b8996b8eb151e7e8b8ce5aacf Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 10:31:20 +0200 Subject: [PATCH 1/6] Add new task for user creation --- tests/resources/common/basicRequests.robot | 30 ++++++- tests/tasks/Users Management/__init__.robot | 2 + tests/tasks/Users Management/users.robot | 97 +++++++++++++++++++++ 3 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 tests/tasks/Users Management/__init__.robot create mode 100644 tests/tasks/Users Management/users.robot diff --git a/tests/resources/common/basicRequests.robot b/tests/resources/common/basicRequests.robot index 6d4f456..40ee878 100644 --- a/tests/resources/common/basicRequests.robot +++ b/tests/resources/common/basicRequests.robot @@ -139,6 +139,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 @@ -435,9 +441,7 @@ Delete User At Register ${user_uuid}= Call Method ${CAPIF_USERS} get_user_uuid ${username} END - ${headers}= Create Register Admin Session ${CAPIF_HTTPS_REGISTER_URL} verify=False - - ${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 @@ -445,7 +449,7 @@ Delete User At Register 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 @@ -455,6 +459,24 @@ Get List of User At Register 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}= Evaluate [item for item in ${users} if item['username'] == ${username}][0] modules=collections + + ${user_uuid}= Set Variable + IF ${user} == &{EMPTY} + Log ${username} not found in Register + ELSE + ${user_uuid}= Set Variable ${user['uuid']} + 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} diff --git a/tests/tasks/Users Management/__init__.robot b/tests/tasks/Users Management/__init__.robot new file mode 100644 index 0000000..f2cd44e --- /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 0000000..d4f0baa --- /dev/null +++ b/tests/tasks/Users Management/users.robot @@ -0,0 +1,97 @@ +*** 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 + +Suite Teardown Reset Testing Environment + + +*** Variables *** +${TOTAL_USERS} 5 + +${BACKUP_DIRECTORY} backup +${RESULT_FOLDER} /opt/robot-tests/results +${OUTPUT_ZIP_FILE} entities_loaded.zip + +${USER_PASSWORD} umapassword +${USERNAME_PREFIX} uma +${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 ${username} + END + + ${result}= Run Process ls -l + + Log Many ${result.stdout} + + +*** Keywords *** +Delete User + [Arguments] ${username} + ${user_uuid}= Get User Uuid At Register ${username} + Delete User Admin Register Request ${user_uuid} -- GitLab From 540ff21ad8fff1a0afbff165a87d46d251e1ace8 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 10:39:23 +0200 Subject: [PATCH 2/6] Add new functionality to recover uuid from register service if username is not on environment --- tests/libraries/environment.py | 1 + tests/resources/common/basicRequests.robot | 5 +++++ tests/tasks/Users Management/users.robot | 12 +++--------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/libraries/environment.py b/tests/libraries/environment.py index 8b7a504..0cb833e 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/resources/common/basicRequests.robot b/tests/resources/common/basicRequests.robot index 40ee878..dcac013 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 *** @@ -441,6 +442,10 @@ Delete User At Register ${user_uuid}= Call Method ${CAPIF_USERS} get_user_uuid ${username} END + IF "${user_uuid}" == "${NONE}" + ${user_uuid}= Get User Uuid At Register ${username} + END + ${resp}= Delete User Admin Register Request ${user_uuid} Should Be Equal As Strings ${resp.status_code} 204 diff --git a/tests/tasks/Users Management/users.robot b/tests/tasks/Users Management/users.robot index d4f0baa..5adb3ec 100644 --- a/tests/tasks/Users Management/users.robot +++ b/tests/tasks/Users Management/users.robot @@ -21,8 +21,8 @@ ${BACKUP_DIRECTORY} backup ${RESULT_FOLDER} /opt/robot-tests/results ${OUTPUT_ZIP_FILE} entities_loaded.zip -${USER_PASSWORD} umapassword -${USERNAME_PREFIX} uma +${USER_PASSWORD} password +${USERNAME_PREFIX} user ${DESCRIPTION} Testing purpouse @@ -82,16 +82,10 @@ Remove Client Users FOR ${username} IN @{entities_dictionary} Log ${username}=${entities_dictionary}[${username}] - Run Keyword And Continue On Failure ${username} + Run Keyword And Continue On Failure Delete User At Register username=${username} END ${result}= Run Process ls -l Log Many ${result.stdout} - -*** Keywords *** -Delete User - [Arguments] ${username} - ${user_uuid}= Get User Uuid At Register ${username} - Delete User Admin Register Request ${user_uuid} -- GitLab From 3edccc09c5b576afae464723d6fdc74c7704e4af Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 10:54:29 +0200 Subject: [PATCH 3/6] Robot scripts and dockerfile adjustment with results directory --- services/run_capif_tests.sh | 2 +- tools/robot/entrypoint.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index 5f2840d..881e4ea 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -6,7 +6,7 @@ DOCKER_ROBOT_IMAGE_VERSION=4.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/tools/robot/entrypoint.sh b/tools/robot/entrypoint.sh index d889a7a..75f39b5 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 -- GitLab From 1919c103fde7567a8f507b51a47b863bf5ca9116 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 10:55:06 +0200 Subject: [PATCH 4/6] Remove not used date con run robot script --- services/run_capif_tests.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index 881e4ea..029494e 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -1,5 +1,4 @@ #!/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 -- GitLab From 0426ecdd14e721637debee84e2980647f083196b Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 12:07:45 +0200 Subject: [PATCH 5/6] Fixed some issues on create/onboarding/deletion of users and entities --- services/run_capif_tests.sh | 4 +-- tests/libraries/interrupt_listener.py | 5 +++- tests/resources/common/basicRequests.robot | 35 +++++++++++----------- tests/tasks/Dummy Info/populate.robot | 4 +-- tests/tasks/Users Management/users.robot | 3 +- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index 029494e..29bb62e 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -1,7 +1,7 @@ #!/bin/bash -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 diff --git a/tests/libraries/interrupt_listener.py b/tests/libraries/interrupt_listener.py index ec2f5d4..0a86a58 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 dcac013..2082c81 100644 --- a/tests/resources/common/basicRequests.robot +++ b/tests/resources/common/basicRequests.robot @@ -437,6 +437,7 @@ 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} @@ -444,13 +445,16 @@ Delete User At Register IF "${user_uuid}" == "${NONE}" ${user_uuid}= Get User Uuid At Register ${username} + ${environment_users}= Set Variable ${FALSE} END ${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} @@ -458,7 +462,7 @@ 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 @@ -470,13 +474,16 @@ Get User Uuid At Register ${users}= Get List of Users At Register # Find the first user with username indicated - ${user}= Evaluate [item for item in ${users} if item['username'] == ${username}][0] modules=collections - - ${user_uuid}= Set Variable - IF ${user} == &{EMPTY} + ${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 - ELSE - ${user_uuid}= Set Variable ${user['uuid']} END RETURN ${user_uuid} @@ -558,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 9a61a40..da12477 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/users.robot b/tests/tasks/Users Management/users.robot index 5adb3ec..5fbb60f 100644 --- a/tests/tasks/Users Management/users.robot +++ b/tests/tasks/Users Management/users.robot @@ -11,7 +11,6 @@ Library OperatingSystem Library DateTime Library String -Suite Teardown Reset Testing Environment *** Variables *** @@ -19,7 +18,7 @@ ${TOTAL_USERS} 5 ${BACKUP_DIRECTORY} backup ${RESULT_FOLDER} /opt/robot-tests/results -${OUTPUT_ZIP_FILE} entities_loaded.zip +${OUTPUT_ZIP_FILE} users_loaded.zip ${USER_PASSWORD} password ${USERNAME_PREFIX} user -- GitLab From 34082ebb0e9619d6283fecfb4851f06396e34ec8 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Mon, 22 Jul 2024 12:57:42 +0200 Subject: [PATCH 6/6] Remove users by user prefix --- services/create_users.sh | 166 +++++++++++++++++++++++ services/remove_users.sh | 145 ++++++++++++++++++++ tests/libraries/helpers.py | 10 ++ tests/tasks/Users Management/users.robot | 19 +++ 4 files changed, 340 insertions(+) create mode 100755 services/create_users.sh create mode 100755 services/remove_users.sh diff --git a/services/create_users.sh b/services/create_users.sh new file mode 100755 index 0000000..3dd07c3 --- /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 0000000..c9f63a0 --- /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/tests/libraries/helpers.py b/tests/libraries/helpers.py index 94c850f..c7806f1 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/tasks/Users Management/users.robot b/tests/tasks/Users Management/users.robot index 5fbb60f..1558f86 100644 --- a/tests/tasks/Users Management/users.robot +++ b/tests/tasks/Users Management/users.robot @@ -88,3 +88,22 @@ Remove Client Users 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} + -- GitLab