#!/bin/sh ###################################################### # # Test the use of the Attach: header # ###################################################### if test -z "${MH_OBJ_DIR}"; then srcdir=`dirname "$0"`/../.. MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR fi . "$MH_OBJ_DIR/test/common.sh" setup_test require_locale en_US.utf-8 en_US.utf8 LC_ALL=en_US.UTF-8; export LC_ALL draft="$MH_TEST_DIR/$$.draft" backup="${MH_TEST_DIR}/`mhparam sbackup`$$.draft.orig" expected="$MH_TEST_DIR/$$.expected" # # Test out a simple draft, one part. # cat > "$draft" < cc: Fcc: +outbox Attach: ${srcdir}/test/mhbuild/tiny.jpg ------ EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox MIME-Version: 1.0 Content-Type: image/jpeg; name="tiny.jpg" Content-Description: tiny.jpg Content-Disposition: attachment; filename="tiny.jpg" Content-Transfer-Encoding: base64 /9g= EOF check "$draft" "$expected" # # Check out more common case, one (or more) attachments # along with message text. # cat > "$draft" < cc: Fcc: +outbox Attach: ${srcdir}/test/mhbuild/tiny.jpg Attach: ${srcdir}/test/mhbuild/nulls ------ This is a test EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" This is a test ------- =_aaaaaaaaaa0 Content-Type: image/jpeg; name="tiny.jpg" Content-Description: tiny.jpg Content-Disposition: attachment; filename="tiny.jpg" Content-Transfer-Encoding: base64 /9g= ------- =_aaaaaaaaaa0 Content-Type: application/octet-stream; name="nulls" Content-Description: nulls Content-Disposition: attachment; filename="nulls" Content-Transfer-Encoding: base64 AAAAAAAAAAAAAAAAAAAA ------- =_aaaaaaaaaa0-- EOF check "$draft" "$expected" # # An empty Attach header # cat > "$draft" < cc: Fcc: +outbox Attach: ------ This is a test of an empty attach header. EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" This is a test of an empty attach header. EOF check "$draft" "$expected" # # Check a completely empty message # cat > "$draft" < cc: Fcc: +outbox Subject: Test of an empty body EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: Test of an empty body MIME-Version: 1.0 Content-Type: text/plain EOF # # Check an md5'd attachment # cat > "$draft" < cc: Fcc: +outbox Subject: Test of digested part #text/plain; name="textplain" [ - ] ${srcdir}/test/mhbuild/textplain EOF mhbuild -check "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: Test of digested part MIME-Version: 1.0 Content-Type: text/plain; name="textplain"; charset="us-ascii" Content-Description: - Content-MD5: x3hNJn10cGowZv+ILUkycw== Content-Transfer-Encoding: quoted-printable This is a text/plain part. EOF check "$draft" "$expected" # # Make sure we fail if we run into a MIME-Version header # cat > "$draft" < cc: Fcc: +outbox Subject: Test of an already-MIMEified message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" This is a preformatted MIME content test. EOF set +e run_test 'eval mhbuild "$draft"' "mhbuild: draft shouldn't contain MIME-Version: field" set -e # # Run it again using -auto # run_prog mhbuild -auto "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: Test of an already-MIMEified message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" This is a preformatted MIME content test. EOF check "$draft" "$expected" # # Make sure -dist does nothing but encode headers # cat > "$draft" < cc: Fcc: +outbox Subject: An empty dist test EOF run_prog mhbuild -dist "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: An empty dist test EOF check "$draft" "$expected" # # Two parts, one attachment; make sure mixing of multiparts at different # levels works # cat > "$draft" < cc: Fcc: +outbox Subject: A more complete multipart test Attach: ${srcdir}/test/mhbuild/tiny.jpg -------- #begin alternative # This is some HTML tëxt. #end EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: A more complete multipart test MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-Transfer-Encoding: 8bit ------- =_aaaaaaaaaa0 Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1" Content-Transfer-Encoding: 8bit ------- =_aaaaaaaaaa1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit This is some tëxt. ------- =_aaaaaaaaaa1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit This is some HTML tëxt. ------- =_aaaaaaaaaa1-- ------- =_aaaaaaaaaa0 Content-Type: image/jpeg; name="tiny.jpg" Content-Description: tiny.jpg Content-Disposition: attachment; filename="tiny.jpg" Content-Transfer-Encoding: base64 /9g= ------- =_aaaaaaaaaa0-- EOF check "$draft" "$expected" # # One attachment, text/plain containing some binary characters, # include NUL bytes. # cat > "$draft" < cc: Fcc: +outbox Subject: Testing some binary chars -------- This is some tëxt. #text/plain; name="somebinary" [ - ] {attachment} ${srcdir}/test/mhbuild/somebinary EOF run_prog mhbuild "$draft" cat > "$expected" < cc: Fcc: +outbox Subject: Testing some binary chars MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-Transfer-Encoding: 8bit ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit This is some tëxt. ------- =_aaaaaaaaaa0 Content-Type: text/plain; name="somebinary"; charset="us-ascii" Content-Description: - Content-Disposition: attachment; filename="somebinary" Content-Transfer-Encoding: quoted-printable =46rom here on, this is only = a test, though it contains =13ome =00odd=00 bytes. ------- =_aaaaaaaaaa0-- EOF check "$draft" "$expected" [ ${failed:=0} -eq 0 ] && rm -f ${backup} exit ${failed:-0}