Diferencia entre revisiones de «Mock de un servidor de correo smtp con Dumbster»

De Dos Ideas.
Saltar a: navegación, buscar
(Página creada con 'En el siguiente ejemplo de código se muestra una clase que envía un mail usando la API de JavaMail. Luego, un Test de Junit prueba esta clase levantando el servidor de mail D…')
 
Línea 71: Línea 71:
 
  */
 
  */
 
public class MandaMailTest {
 
public class MandaMailTest {
 +
 +
  
 
     @Test
 
     @Test
 
     public void testEnviarMail() throws Exception {
 
     public void testEnviarMail() throws Exception {
 +
 +
        MandaMail instance = new MandaMail();
  
 
         String mailDestinatario = "destinatario@dumbster.com";
 
         String mailDestinatario = "destinatario@dumbster.com";
Línea 79: Línea 83:
 
         String asunto = "Asunto del mail de prueba";
 
         String asunto = "Asunto del mail de prueba";
 
         String textoMensaje = "Este es un mail para probar el servidor de dumbster";
 
         String textoMensaje = "Este es un mail para probar el servidor de dumbster";
       
+
 
         MandaMail instance = new MandaMail();
+
         //arranca el servidor de mail de  Dumbster.
 
         SimpleSmtpServer server = SimpleSmtpServer.start();
 
         SimpleSmtpServer server = SimpleSmtpServer.start();
 +
 
         try {
 
         try {
 +
            //envia el mail.
 
             instance.enviarMail(mailOrigen, mailDestinatario, asunto, textoMensaje);
 
             instance.enviarMail(mailOrigen, mailDestinatario, asunto, textoMensaje);
 
         } catch (Exception e) {
 
         } catch (Exception e) {
Línea 89: Línea 95:
 
         }
 
         }
  
 +
        //detiene el servidor de Dumbster
 
         server.stop();
 
         server.stop();
  
 +
        //verifica que se obtenga el mail y que tenga los datos enviados.
 
         assertTrue(server.getReceivedEmailSize() == 1);
 
         assertTrue(server.getReceivedEmailSize() == 1);
 
         Iterator emailIter = server.getReceivedEmail();
 
         Iterator emailIter = server.getReceivedEmail();
 
         SmtpMessage email = (SmtpMessage) emailIter.next();
 
         SmtpMessage email = (SmtpMessage) emailIter.next();
        System.out.println(
 
                "Mensaje recibido en servidor Dumbster:");
 
        System.out.println(
 
                "--------------------------------------");
 
        System.out.println("De: " + email.getHeaderValue("From"));
 
        System.out.println("Para: " + email.getHeaderValue("To"));
 
        System.out.println(
 
                "Asunto: " + email.getHeaderValue("Subject"));
 
        System.out.println(
 
                "Contenido: " + email.getBody());
 
 
 
         assertTrue(email.getHeaderValue("Subject").equals(asunto));
 
         assertTrue(email.getHeaderValue("Subject").equals(asunto));
 
         assertTrue(email.getHeaderValue("From").equals(mailOrigen));
 
         assertTrue(email.getHeaderValue("From").equals(mailOrigen));
 
         assertTrue(email.getHeaderValue("To").equals(mailDestinatario));
 
         assertTrue(email.getHeaderValue("To").equals(mailDestinatario));
 
         assertTrue(email.getBody().equals(textoMensaje));
 
         assertTrue(email.getBody().equals(textoMensaje));
 +
       
 +
        //muestra el contenido
 +
        System.out.println("Mensaje recibido en servidor Dumbster:");
 +
        System.out.println("--------------------------------------");
 +
        System.out.println("De: " + email.getHeaderValue("From"));
 +
        System.out.println("Para: " + email.getHeaderValue("To"));
 +
        System.out.println("Asunto: " + email.getHeaderValue("Subject"));
 +
        System.out.println("Contenido: " + email.getBody());
  
 
     }
 
     }
 
}
 
}
 
 
</code>
 
</code>

Revisión del 19:38 5 ene 2010

En el siguiente ejemplo de código se muestra una clase que envía un mail usando la API de JavaMail. Luego, un Test de Junit prueba esta clase levantando el servidor de mail Dumbster en memoria y verificando que el mail haya llegado correctamente.


package com.dosideas.smtp;

import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;

/**

* Clase que envía un email.
*/

public class MandaMail {

   public void enviarMail(String mailOrigen, String mailDestinatario, String asunto, String textoMensaje)
               throws AddressException, MessagingException {
       //se puede poner en true para ver la interaccion del protocolo smtp por stdout.
       boolean debug = false;
       //setea el host y puerto donde esta el servidor de mail.
       Properties props = new Properties();
       props.put("mail.smtp.host", "localhost");
       props.put("mail.smtp.port", 25);
       Session session = Session.getDefaultInstance(props, null);
       session.setDebug(debug);
       // create a message
       Message msg = new MimeMessage(session);
       // set the from and to address
       InternetAddress addressFrom = new InternetAddress(mailOrigen);
       msg.setFrom(addressFrom);
       InternetAddress addressTo = new InternetAddress(mailDestinatario);
       msg.setRecipient(Message.RecipientType.TO, addressTo);
       // Setting the Subject and Content Type
       msg.setSubject(asunto);
       msg.setContent(textoMensaje, "text/plain");
       Transport.send(msg);
   }

}

El test con JUnit

El siguiente test utiliza la clase anterior para maquetar el Servidor SMTP.

package com.dosideas.smtp;

import com.dumbster.smtp.SimpleSmtpServer; import com.dumbster.smtp.SmtpMessage; import java.util.Iterator; import org.junit.Test; import static org.junit.Assert.*;

/**

* Test de envio de mail con Junit y Dumbster
*/

public class MandaMailTest {


   @Test
   public void testEnviarMail() throws Exception {
       MandaMail instance = new MandaMail();
       String mailDestinatario = "destinatario@dumbster.com";
       String mailOrigen = "origen@dumbster.com";
       String asunto = "Asunto del mail de prueba";
       String textoMensaje = "Este es un mail para probar el servidor de dumbster";
       //arranca el servidor de mail de  Dumbster.
       SimpleSmtpServer server = SimpleSmtpServer.start();
       try {
           //envia el mail.
           instance.enviarMail(mailOrigen, mailDestinatario, asunto, textoMensaje);
       } catch (Exception e) {
           e.printStackTrace();
           fail("Unexpected exception: " + e);
       }
       //detiene el servidor de Dumbster
       server.stop();
       //verifica que se obtenga el mail y que tenga los datos enviados.
       assertTrue(server.getReceivedEmailSize() == 1);
       Iterator emailIter = server.getReceivedEmail();
       SmtpMessage email = (SmtpMessage) emailIter.next();
       assertTrue(email.getHeaderValue("Subject").equals(asunto));
       assertTrue(email.getHeaderValue("From").equals(mailOrigen));
       assertTrue(email.getHeaderValue("To").equals(mailDestinatario));
       assertTrue(email.getBody().equals(textoMensaje));
       
       //muestra el contenido
       System.out.println("Mensaje recibido en servidor Dumbster:");
       System.out.println("--------------------------------------");
       System.out.println("De: " + email.getHeaderValue("From"));
       System.out.println("Para: " + email.getHeaderValue("To"));
       System.out.println("Asunto: " + email.getHeaderValue("Subject"));
       System.out.println("Contenido: " + email.getBody());
   }

}