aurweb/util/sendmail
Kevin Morris 9fb1fbe32c
feat(testing): add email testing utilities
Changes:
- util/sendmail now populates email files in the 'test-emails' directory.
    - util/sendmail does this in a serialized fashion based off of
      the test suite and name retrieved from PYTEST_CURRENT_TEST
      in the format: `<test_suite>_<test_function>.n.txt` where n
      is increased by one every time sendmail is run.
- pytest conftest fixtures have been added for test email setup;
  it wipes out old emails for the particular test function being run.
- New aurweb.testing.email.Email class allows developers to test
  against emails stored by util/sendmail. Simple pass the serial
  you want to test against, starting at serial = 1; e.g. Email(serial).

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-28 19:55:10 -08:00

25 lines
668 B
Bash
Executable file

#!/bin/bash
# Send email to temporary filesystem for tests.
dir='test-emails'
filename='email.txt'
if [ ! -z ${PYTEST_CURRENT_TEST+x} ]; then
filename="$(echo $PYTEST_CURRENT_TEST | cut -d ' ' -f 1 | sed -r 's/(\/|\.|,|:)/_/g')"
fi
mkdir -p "$dir"
path="${dir}/${filename}"
serial_file="${path}.serial"
if [ ! -f $serial_file ]; then
echo 0 > $serial_file
fi
# Increment and update $serial_file.
serial=$(($(cat $serial_file) + 1))
echo $serial > $serial_file
# Use the serial we're on to mark the email file.
# Emails have the format: PYTEST_CURRENT_TEST.s.txt
# where s is the current serial for PYTEST_CURRENT_TEST.
cat > "${path}.${serial}.txt"
exit 0