#!/usr/share/ucs-test/runner bash
## desc: Create and remove OX resource
## bugs: [34349]
## packages:
##  - univention-ox
## tags:
##  - apptest
##  - SKIP
## exposure: dangerous

. "/usr/share/univention-lib/all.sh" || exit 137
. "ox.sh" || exit 137

eval "$(/usr/sbin/ucr shell)"

RETVAL=100

username="$(user_randomname)"
mail="$(random_mailaddress)@$domainname"
create_ox_user "$username" "$mail"
wait_for_replication

resname="$(ox_group_randomname)"
displayname="$(user_randomname)"
resmail="$(random_mailaddress)@$domainname"
udm-test oxresources/oxresources create \
	--position "cn=oxresources,cn=open-xchange,$ldap_base" \
	--set name="$resname" \
	--set displayname="$displayname" \
	--set resourceMailAddress="$resmail" \
	--set resourceadmin=$(getent passwd "$username" | cut -d: -f3) || fail_test 110 "Failed to create OX resource"
wait_for_replication

check_ajax () {
	ox_login "$username" "univention" ||
		{ fail_test 110 "Login to account denied"; return 1; }
	session="$(ox_session)"
	res="$(ox_ajax resource action=all session="$session")"
	idlist="$(echo "$res" | sed -rne 's/.*"data":\[([0-9,]+)\].*/\1/p')"
	for id in $(echo "$idlist" | tr "," " ") ; do
		res="$(ox_ajax resource action=get session="$session" id="$id")"
		echo "$res" | fgrep ",\"name\":\"$resname\"," && return 0
	done
	fail_test 110 "Failed to find resource: $res"
}
check_ajax

check_cli () {
	ox_csv_setup
	ox_sudo listresource --searchpattern "$resname" --csv >"$csv"
	declare -a CSV=(
		"id=${CSVANY}"
		"name='${resname}'"
		"displayname='${displayname}'"
		"email='${resmail}'"
		"available='true'"
		"description=${CSVANY}"
	)
	ox_check_csv "${CSV[@]}" || fail_test 110 "Failed to verify resource CSV"
}
check_cli

udm-test oxresources/oxresources remove \
	--dn "cn=$resname,cn=oxresources,cn=open-xchange,$ldap_base"
wait_for_replication

# check if resource has been removed
ox_sudo listresource --searchpattern "$resname" --csv >"$csv"
lines="$(wc -l <"$csv")"
[ "$lines" = "1" ] || fail_test 110 "OX resource has not been removed: $count lines"

user_remove "$username"

wait_for_replication

exit $RETVAL
# vim:set ft=sh:
