From 834a65222cf933e9f9114ccb5f55e56ac798cb51 Mon Sep 17 00:00:00 2001 From: skublik Date: Wed, 3 Oct 2018 10:23:13 +0000 Subject: [PATCH 1/2] adding function for bulk action --- demo/complex/tests/main.bats | 12 ++--- ...ign-role-grouper-sysadmin-to-test-user.xml | 22 ++++++++ .../recom-role-grouper-sysadmin.xml | 16 ++++++ ...ign-role-grouper-sysadmin-to-test-user.xml | 33 ------------ .../task/recom-role-grouper-sysadmin.xml | 27 ---------- demo/shibboleth/tests/main.bats | 3 +- library.bash | 54 ++++++++++++------- 7 files changed, 76 insertions(+), 91 deletions(-) create mode 100644 demo/complex/tests/resources/bulk-action/assign-role-grouper-sysadmin-to-test-user.xml create mode 100644 demo/complex/tests/resources/bulk-action/recom-role-grouper-sysadmin.xml delete mode 100644 demo/complex/tests/resources/task/assign-role-grouper-sysadmin-to-test-user.xml delete mode 100644 demo/complex/tests/resources/task/recom-role-grouper-sysadmin.xml diff --git a/demo/complex/tests/main.bats b/demo/complex/tests/main.bats index 0a87412..99fec0d 100755 --- a/demo/complex/tests/main.bats +++ b/demo/complex/tests/main.bats @@ -22,7 +22,7 @@ load ../../../library wait_for_midpoint_start complex_midpoint-server_1 complex_midpoint-data_1 wait_for_shibboleth_idp_start complex_idp_1 rm $BATS_TMPDIR/not-started -# TODO wait for shibboleth, grouper-ui, (also something other?) + TODO wait for shibboleth, grouper-ui, (also something other?) } @test "040 Check midPoint health" { @@ -105,15 +105,9 @@ load ../../../library rm /tmp/testuser230.xml search_and_check_object users TestUser230 - add_object tasks tests/resources/task/recom-role-grouper-sysadmin.xml - search_and_check_object tasks "Recompute role-grouper-sysadmin" - wait_for_task_completion 22c2a3d0-0961-4255-9eec-caasa79aeaaa 6 10 - assert_task_success 22c2a3d0-0961-4255-9eec-caasa79aeaaa + execute_bulk_action tests/resources/bulk-action/recom-role-grouper-sysadmin.xml - add_object tasks tests/resources/task/assign-role-grouper-sysadmin-to-test-user.xml - search_and_check_object tasks "Assign role-grouper-sysadmin to TestUser230" - wait_for_task_completion 22c2a3d0-0961-4255-9eec-c550a791237s 6 10 - assert_task_success 22c2a3d0-0961-4255-9eec-c550a791237s + execute_bulk_action tests/resources/bulk-action/assign-role-grouper-sysadmin-to-test-user.xml check_ldap_account_by_user_name TestUser230 complex_directory_1 check_of_ldap_membership TestUser230 sysadmingroup complex_directory_1 diff --git a/demo/complex/tests/resources/bulk-action/assign-role-grouper-sysadmin-to-test-user.xml b/demo/complex/tests/resources/bulk-action/assign-role-grouper-sysadmin-to-test-user.xml new file mode 100644 index 0000000..c2736da --- /dev/null +++ b/demo/complex/tests/resources/bulk-action/assign-role-grouper-sysadmin-to-test-user.xml @@ -0,0 +1,22 @@ + + + c:UserType + + + c:name + TestUser230 + + + + assign + + role + d48ec05b-fffd-4262-acd3-d9ff63365b62 + + + + diff --git a/demo/complex/tests/resources/bulk-action/recom-role-grouper-sysadmin.xml b/demo/complex/tests/resources/bulk-action/recom-role-grouper-sysadmin.xml new file mode 100644 index 0000000..1356484 --- /dev/null +++ b/demo/complex/tests/resources/bulk-action/recom-role-grouper-sysadmin.xml @@ -0,0 +1,16 @@ + + + c:RoleType + + + name + role-grouper-sysadmin + + + + recompute + + + diff --git a/demo/complex/tests/resources/task/assign-role-grouper-sysadmin-to-test-user.xml b/demo/complex/tests/resources/task/assign-role-grouper-sysadmin-to-test-user.xml deleted file mode 100644 index 7d490f5..0000000 --- a/demo/complex/tests/resources/task/assign-role-grouper-sysadmin-to-test-user.xml +++ /dev/null @@ -1,33 +0,0 @@ - - Assign role-grouper-sysadmin to TestUser230 - - - - c:UserType - - - c:name - TestUser230 - - - - assign - - role - d48ec05b-fffd-4262-acd3-d9ff63365b62 - - - - - - - runnable - BulkActions - http://midpoint.evolveum.com/xml/ns/public/model/scripting/handler-3 - single - diff --git a/demo/complex/tests/resources/task/recom-role-grouper-sysadmin.xml b/demo/complex/tests/resources/task/recom-role-grouper-sysadmin.xml deleted file mode 100644 index cfb41bb..0000000 --- a/demo/complex/tests/resources/task/recom-role-grouper-sysadmin.xml +++ /dev/null @@ -1,27 +0,0 @@ - - Recompute role-grouper-sysadmin - - - - c:RoleType - - - name - role-grouper-sysadmin - - - - recompute - - - - - - runnable - BulkActions - http://midpoint.evolveum.com/xml/ns/public/model/scripting/handler-3 - single - diff --git a/demo/shibboleth/tests/main.bats b/demo/shibboleth/tests/main.bats index 4a791fa..105395d 100755 --- a/demo/shibboleth/tests/main.bats +++ b/demo/shibboleth/tests/main.bats @@ -15,8 +15,7 @@ load ../../../library @test "020 Initialize and start Shibboleth" { docker-compose up -d - # TODO implement wait_for_shibboleth_start - sleep 60 + wait_for_shibboleth_idp_start shibboleth_idp_1 } @test "030 Check health" { diff --git a/library.bash b/library.bash index ec4065c..0982c3f 100644 --- a/library.bash +++ b/library.bash @@ -47,24 +47,7 @@ function wait_for_midpoint_start () { # Waits until Shibboleth IDP starts ... TODO refactor using generic waiting function function wait_for_shibboleth_idp_start () { - CONTAINER_NAME=$1 - ATTEMPT=0 - MAX_ATTEMPTS=20 - DELAY=10 - - until [[ $ATTEMPT = $MAX_ATTEMPTS ]]; do - ATTEMPT=$((ATTEMPT+1)) - echo "Waiting $DELAY seconds for Shibboleth IDP to start (attempt $ATTEMPT) ..." - sleep $DELAY - docker ps - ( docker logs $CONTAINER_NAME 2>&1 | grep "INFO:oejs.Server:main: Started" ) && return 0 - done - - echo Shibboleth IDP did not start in $(( $MAX_ATTEMPTS * $DELAY )) seconds in $CONTAINER_NAME - echo "========== Container log ==========" - docker logs $CONTAINER_NAME 2>&1 - echo "========== End of the container log ==========" - return 1 + generic_wait_for_log $1 "INFO:oejs.Server:main: Started" "shibboleth idp to start" "shibboleth idp did not start" $2 } # Checks the health of midPoint server @@ -155,10 +138,41 @@ function add_object () { fi return 1 fi - #curl -k --user administrator:5ecr3t -H "Content-Type: application/xml" -X POST "https://localhost:8443/midpoint/ws/rest/$TYPE" -d @$FILE || return 1 - #TODO check the returned XML } +function execute_bulk_action () { + local FILE=$1 + echo "Executing bulk action from $FILE..." + TMPFILE=$(mktemp /tmp/execbulkaction.XXXXXX) + + curl -k --silent --write-out "%{http_code}" --user administrator:5ecr3t -H "Content-Type: application/xml" -X POST "https://localhost:8443/midpoint/ws/rest/rpc/executeScript" -d @$FILE >$TMPFILE + local HTTP_CODE=$(sed '$!d' $TMPFILE) + sed -i '$ d' $TMPFILE + + if [ "$HTTP_CODE" -eq 200 ]; then + + local STATUS=$(xmllint --xpath "/*/*/*[local-name()='status']/text()" $TMPFILE) || (echo "Couldn't extract status from file:" ; cat $TMPFILE ; rm $TMPFILE; return 1) + if [ $STATUS = "success" ]; then + rm $TMPFILE + return 0 + else + echo "Bulk action status is not OK: $STATUS" + local CONSOLE_OUTPUT=$(xmllint --xpath "/*/*/*[local-name()='consoleOutput']/text()" $TMPFILE) || (echo "Couldn't extract console output from file:" ; cat $TMPFILE ; rm $TMPFILE; return 1) + echo "Console output: $CONSOLE_OUTPUT" + rm $TMPFILE + return 1 + fi + + else + echo "Error code: $HTTP_CODE" + if [ "$http_code" -eq 500 ]; then + echo "Error message: Internal server error. Unexpected error occurred, if necessary please contact system administrator." + fi + return 1 + fi +} + + # Tries to find an object with a given name # Results of the search are in the $SEARCH_RESULT_FILE # TODO check if the result is valid (i.e. not an error) - return 1 if invalid, otherwise return 0 ("no objects" is considered OK here) From 38f496df8d03c24de6bfc43005007ecf57e84bc1 Mon Sep 17 00:00:00 2001 From: skublik Date: Wed, 3 Oct 2018 10:26:22 +0000 Subject: [PATCH 2/2] removing mistake with comment --- demo/complex/tests/main.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/complex/tests/main.bats b/demo/complex/tests/main.bats index 99fec0d..279abac 100755 --- a/demo/complex/tests/main.bats +++ b/demo/complex/tests/main.bats @@ -22,7 +22,7 @@ load ../../../library wait_for_midpoint_start complex_midpoint-server_1 complex_midpoint-data_1 wait_for_shibboleth_idp_start complex_idp_1 rm $BATS_TMPDIR/not-started - TODO wait for shibboleth, grouper-ui, (also something other?) +# TODO wait for shibboleth, grouper-ui, (also something other?) } @test "040 Check midPoint health" {