# $Id: 110-ezmlm-reject 257 2005-04-07 16:53:11Z bruce $

###################################################
# account to receive digests and archive excerpts #
###################################################

if [ $SECT -eq 1 ]; then

#####################
# test ezmlm-reject #
#####################

  prompt "ezmlm-reject:         "
  FROM="$EZTEST"
  TO="$EZTEST-__tstlist@$HOST"
  SUBJECT="test"
  CONTENT="multipart/mixed"
  CC="<>"
  BODY=''
 
  ${EZBIN}/ezmlm-reject "${DIR}" </dev/null >/dev/null 2>&1 && \
        { ${ECHO} "failed to reject missing \$SENDER"; \
          exit 100; }

  SENDER=''; export SENDER
  ${EZBIN}/ezmlm-reject "${DIR}" </dev/null >/dev/null 2>&1 && \
        { ${ECHO} "failed to reject empty sender"; \
          exit 100; }

  SENDER="${SND}@$HOST"; export SENDER

# with directory
  make_message | ${EZBIN}/ezmlm-reject "${DIR}" || \
	{ ${ECHO} "failed to accept good message with dir"; \
	exit 100; }
# without directory

  make_message | ${EZBIN}/ezmlm-reject || \
	{ ${ECHO} "failed to accept good message without dir: $?"; \
	exit 100; }

#too small
  ${ECHO} "5000:1000" > "${DIR}/msgsize"
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } >/dev/null 2>&1 && \
	{ ${ECHO} "ezmlm-reject failed to reject too small message"; \
		exit 100; }

# just right
  ${ECHO} "500:5" > "${DIR}/msgsize"
  make_message | ${EZBIN}/ezmlm-reject "${DIR}" || \
	{ ${ECHO} "failed to accept message of ok size"; \
	exit 100; }

#too large
  ${ECHO} "20:10" > "${DIR}/msgsize"
  { make_message  | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
        { ${ECHO} "ezmlm-reject failed to reject too large message"; \
                exit 100; }

# restore
  ${RM} -f "${DIR}/msgsize"

# without subject
  SUBJECT=''
   { make_message  | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
        { ${ECHO} "ezmlm-reject failed to reject null subject"; \
                exit 100; }
   { make_message  | ${EZBIN}/ezmlm-reject ; } > /dev/null 2>&1 && \
        { ${ECHO} "ezmlm-reject failed to reject null subject"; \
                exit 100; }		

# with empty subject
  SUBJECT='(NUll)'
   { make_message  | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
        { ${ECHO} "ezmlm-reject failed to reject null subject with dir"; \
                exit 100; }
   { make_message  | ${EZBIN}/ezmlm-reject; } > /dev/null 2>&1 && \
        { ${ECHO} "ezmlm-reject failed to reject null subject without dir"; \
                exit 100; }
# testing -S
  { make_message | ${EZBIN}/ezmlm-reject -S "${DIR}"; } > /dev/null || \
	{ ${ECHO} "-S switch failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject -S; } > /dev/null || \
	{ ${ECHO} "-S switch failed without dir"; exit 100; }

# with command subject
  SUBJECT='REmOVE'
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
	{ ${ECHO} "failed to reject command subject with dir"; \
		exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
	{ ${ECHO} "failed to reject command subject without dir"; \
		exit 100; }
# testing -C
  { make_message | ${EZBIN}/ezmlm-reject -C "${DIR}"; } > /dev/null || \
	{ ${ECHO} "-C switch failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject -C;  } > /dev/null || \
	{ ${ECHO} "-C switch failed without dir"; exit 100; }

SUBJECT='test'

# Test with list name in Cc:
  CC="$TO"
  TO="nobody@$HOST"
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null || \
	{ ${ECHO} "failed to accept good Cc: with dir"; \
		exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject; } > /dev/null || \
	{ ${ECHO} "failed to accept good Cc: without dir"; \
		exit 100; }

# Bad To/Cc
  CC="$TO"
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1 && \
		{ ${ECHO} "failed to reject bad To/Cc with dir"; \
		exit 100; }
  if [ "$?" != "100" ]; then
	  ${ECHO} "failed to exit 100 on error"; exit 100
  fi
  { make_message | ${EZBIN}/ezmlm-reject -q "${DIR}"; } > /dev/null 2>&1 && \
		{ ${ECHO} "failed to reject bad To/Cc with dir"; \
		exit 100; }
  if [ "$?" -ne "99" ]; then
	  ${ECHO} "-q failed"; exit 100
  fi

# testing -T
  { make_message | ${EZBIN}/ezmlm-reject -T "${DIR}"; } > /dev/null || \
	{ ${ECHO} "-T switch failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject -T; } > /dev/null || \
	{ ${ECHO} "-T switch failed without dir"; exit 100; }

# restore good TO
  TO="$EZTEST-__tstlist@$HOST"

# if part is mimereject message should be rejected
  touch "${DIR}"/mimeremove
  ${ECHO} "text/html" > "${DIR}"/mimereject
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; }  > /dev/null 2>&1 && \
	{ ${ECHO} "mimereject failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject; } > /dev/null || \
	{ ${ECHO} "mimereject without dir"; exit 100; }

# if part is removed ezmlm-reject should not reject
  ${ECHO} "tExt/htMl" > "${DIR}"/mimeremove
  ${ECHO} "" > "${DIR}"/mimereject 
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null || \
	{ ${ECHO} "mimeremove failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject; } > /dev/null || \
	{ ${ECHO} "mimeremove without dir"; exit 100; }

# test content-type with something after boundary=xxx
  AFTERBOUND=';micalg=pgp-md5'
  ${ECHO} "text/html" > "${DIR}"/mimereject
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}" 2>&1; } > /dev/null 2>&1 && \
	{ ${ECHO} "err with text after boundary: 0.30 bug fixed in 0.322"
	  prompt "ezmlm-reject.......   "
	  BUG="${BUG} reject_bound"
	}

# restore
  ${RM} "${DIR}"/mimereject
  AFTERBOUND=''

# if entire message is mimeremove type is should be rejected
  ${ECHO} "multipart/mixed" > "${DIR}"/mimeremove
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null 2>&1  && \
	{ ${ECHO} "mimereject failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject; } > /dev/null || \
	{ ${ECHO} "mimereject without dir"; exit 100; }

# restore
  ${RM} "${DIR}"/mimeremove

# test headerreject
  ${ECHO} "Content-TYPE" > "${DIR}"/headerreject
  { make_message | ${EZBIN}/ezmlm-reject -H "${DIR}"; } > /dev/null || \
	{ ${ECHO} "headerreject -H failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject -h "${DIR}"; } > /dev/null 2>&1 && \
	{ ${ECHO} "headerreject failed with dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject; } > /dev/null || \
	{ ${ECHO} "headerreject failed without dir"; exit 100; }
  { make_message | ${EZBIN}/ezmlm-reject -h; }  > /dev/null 2>&1  && \
	{ ${ECHO} "-h was accepted without dir"; exit 100; }

# Suppress content-type header
  CONTENT=''
  { make_message | ${EZBIN}/ezmlm-reject "${DIR}"; } > /dev/null || \
	{ ${ECHO} "headerreject rejected even though header isn't there"; \
	exit 100; }

  CONTENT='multIpart/mIXed'

  ${ECHO} "OK"

fi
