Selaa lähdekoodia

make more tests for subscribing and make member alias case insensitive

Pi 1 vuosi sitten
vanhempi
sitoutus
455b23f74a
3 muutettua tiedostoa jossa 66 lisäystä ja 15 poistoa
  1. 3 3
      filters/postmaster@localhost
  2. 1 1
      subunsub.sh
  3. 62 11
      tests/test-signup.sh

+ 3 - 3
filters/postmaster@localhost

@@ -25,14 +25,14 @@ if ($DISPATCH)
    gdbmopen($MLIST, "C")
    SUFFIX=0
    KEY=$MEMBERALIAS
-   EXISTS=gdbmfetch($KEY)
+   EXISTS=gdbmfetch(tolower($KEY))
    while ($EXISTS ne "" && $EXISTS ne tolower($FROM))
    {
       SUFFIX=($SUFFIX + 1)
       KEY="$MEMBERALIAS $SUFFIX"
-      EXISTS=gdbmfetch($KEY)
+      EXISTS=gdbmfetch(tolower($KEY))
    }
-   if (gdbmstore(tolower($FROM), $KEY) || gdbmstore($KEY, tolower($FROM)))
+   if (gdbmstore(tolower($FROM), $KEY) || gdbmstore(tolower($KEY), tolower($FROM)))
    {
       gdbmclose
       EXITCODE=$FATAL

+ 1 - 1
subunsub.sh

@@ -4,7 +4,7 @@ exec 4<>"${SLIST}.txt" 5>"${SLIST}.txt.new"
 flock -n 4
 flock -n 5
 if [ "${1}" == "UNSUBSCRIBE" ]; then
-        grep -Fivx -e "${2}" -e "${3}" <&4 || true
+        grep -Fivx -e "${2}" -e "${3}" <&4 || ! grep -Fqx -e "${2}" -e "${3}"
 else
         grep -Fix -e "${2}" -e "${3}" <&4 || cat "${SLIST}.txt" - <<EOF
 ${2}

+ 62 - 11
tests/test-signup.sh

@@ -33,26 +33,77 @@ EOF
 	grep -Fx 'Admin' "${group}/alist.txt" #|| cat "${group}/alist.txt" && exit 1
 	grep -Fx 'admin@mail.com' "${group}/alist.txt"
 
-	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE admin@mail.com <<EOF 1> reply.out 2> reply.err #|| cat reply.err && exit 1
-X-GROUP: $group
-EOF
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE admin@mail.com <<-EOF 1> reply.out 2> reply.err #|| cat reply.err && exit 1
+	X-GROUP: $group
+	EOF
 	grep 'Your subscription status has been updated successfully' reply.out
 	grep -Fx 'Admin' "${group}/slist.txt"
 	grep -Fx 'admin@mail.com' "${group}/slist.txt"
 
-	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP non-admin@mail.com <<EOF 1> reply.out 2> reply.err
-X-MEMBER-ALIAS: Non-admin
-X-GROUP-ALIAS: $alias
-X-GROUP: $group
-EOF
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	# TODO: subscribe when already subscribed should not generate an e-mail
+	#       when sent via postmaster
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fx 'Admin' "${group}/slist.txt"
+	grep -Fx 'admin@mail.com' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh UNSUBSCRIBE admin@mail.com <<-EOF 1> reply.out 2> reply.err #|| cat reply.err && exit 1
+	X-GROUP: $group
+	EOF
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fvx 'Admin' "${group}/slist.txt" || ! grep -Fxq 'Admin' "${group}/slist.txt"
+	grep -Fvx 'admin@mail.com' "${group}/slist.txt" || ! grep -Fxq 'admin@mail.com' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh UNSUBSCRIBE admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	# TODO: subscribe when already unsubscribed should not generate an e-mail
+	#       when sent via postmaster
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fvx 'Admin' "${group}/slist.txt" || ! grep -Fxq 'Admin' "${group}/slist.txt"
+	grep -Fvx 'admin@mail.com' "${group}/slist.txt" || ! grep -Fxq 'admin@mail.com' "${group}/slist.txt"
+
+
+	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP non-admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-MEMBER-ALIAS: Non-admin
+	X-GROUP-ALIAS: $alias
+	X-GROUP: $group
+	EOF
 	grep 'You have been registered as a member' reply.out
 	! grep -Fx 'Non-admin' "${group}/alist.txt"
 	! grep -Fx 'non-admin@mail.com' "${group}/alist.txt"
 
-	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE non-admin@mail.com <<EOF 1> reply.out 2> reply.err
-X-GROUP: $group
-EOF
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE non-admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fx 'Non-admin' "${group}/slist.txt"
+	grep -Fx 'non-admin@mail.com' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE non-admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	# TODO: subscribe when already subscribed should not generate an e-mail
+	#       when sent via postmaster
 	grep 'Your subscription status has been updated successfully' reply.out
 	grep -Fx 'Non-admin' "${group}/slist.txt"
 	grep -Fx 'non-admin@mail.com' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh UNSUBSCRIBE non-admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fvx 'Non-admin' "${group}/slist.txt" || ! grep -Fqx 'Non-admin' "${group}/slist.txt"
+	grep -Fvx 'non-admin@mail.com' "${group}/slist.txt" || ! grep -Fqx 'non-admin@mail.com' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh UNSUBSCRIBE non-admin@mail.com <<-EOF 1> reply.out 2> reply.err
+	X-GROUP: $group
+	EOF
+	# TODO: subscribe when already unsubscribed should not generate an e-mail
+	#       when sent via postmaster
+	grep 'Your subscription status has been updated successfully' reply.out
+	grep -Fvx 'Non-admin' "${group}/slist.txt" || ! grep -Fqx 'Non-admin' "${group}/slist.txt"
+	grep -Fvx 'non-admin@mail.com' "${group}/slist.txt" || ! grep -Fqx 'non-admin@mail.com' "${group}/slist.txt"
 done