X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/e4f6d48f7af4db62523d5351e2cf2849caa6ce54..63aa290b4202ee837a5afeca9bdd093b5505c5e2:/test/mhbuild/test-attach?ds=sidebyside diff --git a/test/mhbuild/test-attach b/test/mhbuild/test-attach index 8bd3a64e..11e05512 100755 --- a/test/mhbuild/test-attach +++ b/test/mhbuild/test-attach @@ -14,12 +14,45 @@ fi 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" -actual="$MH_TEST_DIR/$$.actual" # -# Test out a simple draft +# 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 ------ -Test +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 -mhbuild "$draft" +check "$draft" "$expected" -cat $draft +[ ${failed:=0} -eq 0 ] && rm -f ${backup} -exit $failed +exit ${failed:-0}