#!/usr/share/ucs-test/runner bash
## desc: Create OX group
## bugs: [34140]
## 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

username1="$(user_randomname)"
usermail1="$(random_mailaddress)@$domainname"
username2="$(user_randomname)"
usermail2="$(random_mailaddress)@$domainname"
username3="$(user_randomname)"
usermail3="$(random_mailaddress)@$domainname"
groupname="$(ox_group_randomname)"
groupmail="$(random_mailaddress)@$domainname"

create_ox_user "$username1" "$usermail1"
create_ox_user "$username2" "$usermail2"
create_ox_user "$username3" "$usermail3"
MAILADDR="${groupmail%@$domainname}" group_create "$groupname" \
	--append users="uid=$username1,cn=users,$ldap_base" \
	--append users="uid=$username2,cn=users,$ldap_base" \
	--set isOxGroup=OK ||
	fail_test 110 "Failed to create OX group"

wait_for_replication

send_mail () {
	mail -s "ucs-test $0 $$ $*" "$groupmail" <"$0"
	for ((i=0;i<60;i++))
	do
		sleep 1
		mailq | grep -q "Mail queue is empty" && break
	done
}
send_mail "1/2"

check_mail () {
	local username="$1" password="$2" count="$3"
	local session res id
	ox_login "$username" "$password" || fail_test 110 "Login as OX user was denied"
	session="$(ox_session)"
	res="$(ox_ajax folders action=root session="$session" columns=1,300 allowed_modules=mail)"
	id="$(echo "$res" | sed -rne 's/.*\["([^"]+)","Persönliche Ordner"\].*/\1/p')"
	res="$(ox_ajax folders action=list session="$session" columns=1,300 parent="$id")"
	id="$(echo "$res" | sed -rne 's/.*\["([^"]+)","E-Mail"\].*/\1/p')"
	res="$(ox_ajax folders action=list session="$session" columns=1,300 parent="$id")"
	id="$(echo "$res" | sed -rne 's/.*\["([^"]+)","Posteingang"\].*/\1/p')"
	res="$(ox_ajax mail action=count session="$session" folder="$id")"
	res="$(echo "$res" | sed -rne 's/.*"data":([0-9]+).*/\1/p')"
	[ "$count" -eq "$res" ] || fail_test 110 "Unexpected mail count: $count != $res"
}
check_mail "$username1" "univention" 1
check_mail "$username2" "univention" 1
check_mail "$username3" "univention" 0

group_removeuser "$username2" "$groupname"
group_adduser "$username3" "$groupname"

wait_for_replication

send_mail "2/2"
check_mail "$username1" "univention" 2
check_mail "$username2" "univention" 1
check_mail "$username3" "univention" 1

group_remove "$groupname"
user_remove "$username1"
user_remove "$username2"
user_remove "$username3"

wait_for_replication

exit $RETVAL
# vim:set ft=sh:
