OSDN Git Service

テストで Dumbster を使用していた箇所を Mock JavaMail に変更(テスト時に J2SE 1.5 が必要となるが、ozacc-mail 自体は引き続き...
[spring-ext/ozacc-mail.git] / src / test / java / com / ozacc / mail / impl / SendMailImplTest.java
index ad26413..63491d5 100644 (file)
@@ -1,23 +1,17 @@
 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 $
@@ -26,8 +20,6 @@ public class SendMailImplTest extends TestCase {
 
        private SendMailImpl sendMail;
 
-       private SimpleSmtpServer server;
-
        /*
         * @see TestCase#setUp()
         */
@@ -36,10 +28,8 @@ public class SendMailImplTest extends TestCase {
 
                BasicConfigurator.configure();
 
-               int port = 2525;
-               server = SimpleSmtpServer.start(port);
                sendMail = new SendMailImpl();
-               sendMail.setPort(port);
+               Mailbox.clearAll();
        }
 
        /**
@@ -49,10 +39,6 @@ public class SendMailImplTest extends TestCase {
                BasicConfigurator.resetConfiguration();
        }
 
-       private String convertJisValue(String str) throws UnsupportedEncodingException {
-               return new String(str.getBytes(), "JIS");
-       }
-
        /**
         * 単発メールのテスト。
         * 
@@ -73,18 +59,16 @@ public class SendMailImplTest extends TestCase {
 
                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());
        }
 
        /**
@@ -120,23 +104,19 @@ public class SendMailImplTest extends TestCase {
                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 {
@@ -157,26 +137,23 @@ public class SendMailImplTest extends TestCase {
 
                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]);
        }
 
        /**