#!/usr/share/ucs-test/runner bash
## desc: Create zarafa users and test the login
## bugs: [31870]
## packages:
##  - zarafa4ucs
## tags:
##  - apptest
## exposure: dangerous

. "$TESTLIBPATH/base.sh" || exit 137
. "$TESTLIBPATH/user.sh" || exit 137
. "$TESTLIBPATH/random.sh" || exit 137
. "$TESTLIBPATH/zarafa.sh" || exit 137
. "/usr/share/univention-lib/all.sh" || exit 137

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

RETVAL=100

create_zarafa_user ()
{
	username="$1"
	mail="$2"

	echo "Create zarafa user $username with password univention"

	udm-test users/user create \
		--position "cn=users,$ldap_base" \
		--set username="$username" \
		--set firstname="$(random_string)" \
		--set lastname="$(random_string)" \
		--set password="univention" \
		--set mailPrimaryAddress="$mail" || fail_test 110 "Failed to create zarafa-user"
}

create_non_zarafa_user ()
{
	username="$1"

	echo "Create non-zarafa user $username with password univention"

	udm-test users/user create \
		--position "cn=users,$ldap_base" \
		--set username="$username" \
		--set firstname="$(random_string)" \
		--set lastname="$(random_string)" \
		--set password="univention" || fail_test 110 "Failed to create non-zarafa-user"
}

change_password ()
{
	username="$1"
	new_password="$2"
	echo "Change password for user $username to $new_password"
	
	udm-test users/user modify \
		--dn "uid=$username,cn=users,$ldap_base" \
		--set password="$new_password" || fail_test 110 "Failed to change password"
}

username1="$(random_chars 8)"
mail1="$(random_mailaddress)@$domainname"

username2="$(random_chars 8)"

username3="$(random_chars 8)"
mail3="$(random_mailaddress)@$domainname"

create_zarafa_user "$username1" "$mail1"
create_non_zarafa_user "$username2"
create_zarafa_user "$username3" "$mail3"

wait_for_replication

zarafa_login "$username1" "univention" || fail_test 110 "Login as zarafa user was denied"
zarafa_login "$username1" "univention1" && fail_test 110 "Permitted login with a wrong password"
zarafa_login "$username1" "geheim" && fail_test 110 "Permitted login with a wrong password"
zarafa_login "$username2" "univention" && fail_test 110 "Login as non-zarafa user was allowd"
zarafa_login "$username3" "univention" || fail_test 110 "Login as zarafa user was denied"

new_password="$(random_chars 10)"
change_password "$username3" "$new_password"

wait_for_replication

zarafa_login "$username3" "$new_password" || fail_test 110 "Login as zarafa user with the new password was denied"
zarafa_login "$username3" "univention" && fail_test 110 "Login as zarafa user with the old password was allowed"

user_remove "$username1"
user_remove "$username2"
user_remove "$username3"

wait_for_replication

exit $RETVAL

