summaryrefslogtreecommitdiff
path: root/tests/e2e/e2e-test-mail.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/e2e/e2e-test-mail.sh')
-rwxr-xr-xtests/e2e/e2e-test-mail.sh103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/e2e/e2e-test-mail.sh b/tests/e2e/e2e-test-mail.sh
new file mode 100755
index 00000000..8818147a
--- /dev/null
+++ b/tests/e2e/e2e-test-mail.sh
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# Dependencies
+# - swaks and uuid-runtime debian packages
+#
+#
+# Usage
+#
+# In order to send authenticated mail to the tmp_user you need to
+# export these environment variables before running this script:
+# - FROM_EXTERNAL_OPTS for sending mails from external mailservers to the tmp_user account
+#
+# as an example:
+# export FROM_EXTERNAL_OPTS='--tlsc --au user@example.or -ap MYPASSWORD -s smtp.example.org'
+#
+# then:
+#
+# source venv/bin/activate
+# make dev-latest-backend
+# make test_e2e
+#
+#
+# TODO:
+# - Timeout waiting for mail
+# - Decrease poll interval
+# - Make it less noisy (fix the vext warnings)
+# - move away from cdev.bm
+# - remove test user on success
+
+# exit if any commands returns non-zero status
+set -e
+
+# Check if scipt is run in debug mode so we can hide secrets
+if [[ "$-" =~ 'x' ]]
+then
+ echo 'Running with xtrace enabled!'
+ xtrace=true
+else
+ echo 'Running with xtrace disabled!'
+ xtrace=false
+fi
+
+PROVIDER='ci.leap.se'
+INVITE_CODE=${BITMASK_INVITE_CODE:?"Need to set BITMASK_INVITE_CODE non-empty"}
+
+BCTL='bitmaskctl'
+LEAP_HOME="$HOME/.config/leap"
+MAIL_UUID=$(uuidgen)
+
+username="tmp_user_$(date +%Y%m%d%H%M%S)"
+user="${username}@${PROVIDER}"
+pw="$(head -c 10 < /dev/urandom | base64)"
+SWAKS="swaks --h-Subject $MAIL_UUID --silent 2 --helo ci.leap.se -f ci@leap.se -t $user"
+
+# Stop any previously started bitmaskd
+# and start a new instance
+"$BCTL" stop
+
+[ -d "$LEAP_HOME" ] && rm -rf "$LEAP_HOME"
+
+"$BCTL" start
+
+# Register a new user
+
+# Disable xtrace
+set +x
+"$BCTL" user create "$user" --pass "$pw" --invite "$INVITE_CODE"
+# Enable xtrace again only if it was set at beginning of script
+[[ $xtrace == true ]] && set -x
+
+# Authenticate
+"$BCTL" user auth "$user" --pass "$pw" > /dev/null
+
+# Note that imap_pw is the same for smtp
+
+imap_pw="None"
+
+# FIXME -- this would be prettier if we had the auth command block on
+# the first-time run, so that we just return when the key has been generated
+# and explicitely raise any error found
+
+while [[ $imap_pw == *"None"* ]]; do
+ response=$("$BCTL" mail get_token)
+ sleep 2
+ imap_pw=$(echo "$response" | head -n 1 | sed 's/ */ /g' | cut -d' ' -f 2)
+done
+
+$SWAKS $FROM_EXTERNAL_OPTS
+
+
+echo "IMAP/SMTP PASSWD: $imap_pw"
+
+# Send testmail
+$SWAKS $FROM_EXTERNAL_OPTS
+
+# wait until we the get mail we just sent.
+while ! ./tests/e2e/getmail --mailbox INBOX --subject "$MAIL_UUID" "$user" "$imap_pw" > /dev/null
+do
+ echo "Waiting for incoming test mail..."
+ sleep 10
+done
+
+echo "Succeeded - mail arrived"