/**
   * Tests message mutation. We can't verify the entire content, since mutation calls JavaMail,
   * which mangles the headers. We'll have to settle for confirming that the subject was updated
   * correctly.
   */
  public void testMimeMutator() throws Exception {
    MimeVisitor.registerMutator(TestMimeVisitor.class);

    String subject = NAME_PREFIX + " testMimeConverter oldsubject";
    String content = TestUtil.getTestMessage(subject, RECIPIENT_NAME, SENDER_NAME, null);

    // Test ParsedMessage created from byte[]
    ParsedMessage pm = new ParsedMessage(content.getBytes(), false);

    pm = new ParsedMessage(content.getBytes(), true);
    String substring = "newsubject";
    verifyMutatedMessage(pm, substring, true);

    // Test ParsedMessage created from File
    mFile = createTempFile(content);
    pm = new ParsedMessage(mFile, null, false);
    verifyMutatedMessage(pm, substring, true);
    mFile.delete();

    mFile = createTempFile(content);
    pm = new ParsedMessage(mFile, null, true);
    verifyMutatedMessage(pm, substring, true);

    // Test ParsedMessage created from MimeMessage, attachment indexing off.
    MimeMessage mimeMsg =
        new ZMimeMessage(
            JMSession.getSession(), new SharedByteArrayInputStream(content.getBytes()));
    pm = new ParsedMessage(mimeMsg, false);
    verifyMutatedMessage(pm, substring, true);

    // Test ParsedMessage created from MimeMessage, attachment indexing on.
    mimeMsg =
        new ZMimeMessage(
            JMSession.getSession(), new SharedByteArrayInputStream(content.getBytes()));
    pm = new ParsedMessage(mimeMsg, true);
    verifyMutatedMessage(pm, substring, true);
  }