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)