package com.ozacc.mail.impl;
-import java.io.UnsupportedEncodingException;
-import java.util.Iterator;
-
-import javax.mail.internet.MimeUtility;
+import javax.mail.Message;
import junit.framework.TestCase;
import org.apache.log4j.BasicConfigurator;
+import org.jvnet.mock_javamail.Mailbox;
-import com.dumbster.smtp.SimpleSmtpServer;
-import com.dumbster.smtp.SmtpMessage;
import com.ozacc.mail.Mail;
import com.ozacc.mail.MailException;
/**
* SendMailImplクラスのテストケース。
- * <p>
- * Dumbsterを使用してテストしているが、サポートされていない機能が多い。
*
* @author Tomohiro Otsuka
* @version $Id: SendMailImplTest.java,v 1.3 2004/09/14 00:06:13 otsuka Exp $
private SendMailImpl sendMail;
- private SimpleSmtpServer server;
-
/*
* @see TestCase#setUp()
*/
BasicConfigurator.configure();
- int port = 2525;
- server = SimpleSmtpServer.start(port);
sendMail = new SendMailImpl();
- sendMail.setPort(port);
+ Mailbox.clearAll();
}
/**
BasicConfigurator.resetConfiguration();
}
- private String convertJisValue(String str) throws UnsupportedEncodingException {
- return new String(str.getBytes(), "JIS");
- }
-
/**
* 単発メールのテスト。
*
sendMail.send(mail);
- server.stop();
+ Mailbox inbox = Mailbox.get("info@example.com");
+ assertEquals("1", 1, inbox.size());
- assertEquals("1", 1, server.getReceievedEmailSize());
- Iterator inbox = server.getReceivedEmail();
- SmtpMessage email = (SmtpMessage)inbox.next();
+ Message email = inbox.get(0);
- assertEquals("2", mail.getTo()[0].toString(), email.getHeaderValue("To"));
- assertEquals("3", mail.getFrom().toString(), email.getHeaderValue("From"));
+ assertEquals("2", mail.getTo()[0].toString(), email.getHeader("To")[0]);
+ assertEquals("3", mail.getFrom().toString(), email.getHeader("From")[0]);
- assertEquals("4", mail.getSubject(), MimeUtility
- .decodeText(email.getHeaderValue("Subject")));
- assertEquals("5", mail.getText() + "\n", convertJisValue(email.getBody()));
+ assertEquals("4", mail.getSubject(), email.getSubject());
+ assertEquals("5", mail.getText() + "\n", email.getContent());
}
/**
mail3.setSubject(subject);
mail3.setText(text);
- // Dumbsterのバグが直ったら、mail1, mail2, mail3 を含めてテスト
- sendMail.send(new Mail[] { mail1 });
+ sendMail.send(new Mail[] { mail1, mail2, mail3 });
- server.stop();
+ Mailbox inbox = Mailbox.get("info@example.com");
- // Dumbsterのバグが直ったら、3 に。
- assertEquals("1", 1, server.getReceievedEmailSize());
+ assertEquals("1", 3, inbox.size());
- Iterator inbox = server.getReceivedEmail();
- SmtpMessage email = (SmtpMessage)inbox.next();
+ Message email1 = inbox.get(0);
- assertEquals("2", mail1.getTo()[0].toString(), email.getHeaderValue("To"));
- assertEquals("3", mail1.getFrom().toString(), email.getHeaderValue("From"));
+ assertEquals("2", mail1.getTo()[0].toString(), email1.getHeader("To")[0]);
+ assertEquals("3", mail1.getFrom().toString(), email1.getHeader("From")[0]);
- assertEquals("4", mail1.getSubject(), MimeUtility.decodeText(email
- .getHeaderValue("Subject")));
- assertEquals("5", mail1.getText() + "\n", convertJisValue(email.getBody()));
+ assertEquals("4", mail1.getSubject(), email1.getSubject());
+ assertEquals("5", mail1.getText() + "\n", email1.getContent());
}
public void testSendMailWithReturnPath() throws Exception {
sendMail.send(mail);
- server.stop();
+ Mailbox inbox = Mailbox.get("info@example.com");
- assertEquals(1, server.getReceievedEmailSize());
- Iterator inbox = server.getReceivedEmail();
- SmtpMessage email = (SmtpMessage)inbox.next();
+ assertEquals(1, inbox.size());
+ Message email = inbox.get(0);
// ヘッダー出力
- /*
- Iterator itr = email.getHeaderNames();
- while (itr.hasNext()) {
- String name = (String)itr.next();
- System.out.println(name + "='" + email.getHeaderValue(name) + "'");
- }
- */
-
- // Dumbsterでは、Return-Pathヘッダを保持していない
- //assertEquals(mail.getReturnPath().toString(), email.getHeaderValue("Return-Path"));
+ // Enumeration headers = email.getAllHeaders();
+ // while (headers.hasMoreElements()) {
+ // Header header = (Header)headers.nextElement();
+ // System.out.println(header.getName() + "='" + header.getValue() + "'");
+ // }
+
+ // Mock JavaMail では Return-Path ヘッダは付加されないようだ。
+ // assertEquals(mail.getReturnPath().toString(), email.getHeader("Return-Path"));
// 重要度を確認
- assertEquals(mail.getImportance(), email.getHeaderValue("Importance"));
- assertEquals("1", email.getHeaderValue("X-Priority"));
+ assertEquals(mail.getImportance(), email.getHeader("Importance")[0]);
+ assertEquals("1", email.getHeader("X-Priority")[0]);
}
/**