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

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 W…')
 
(El test con JUnit y Wiser)
 
(No se muestran 4 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
En el siguiente ejemplo de código se muestra una clase que envía un mail usando la API de JavaMail.  
+
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 [[Wiser]] en memoria y verificando que el mail haya llegado correctamente.
Luego, un Test de Junit prueba esta clase levantando el servidor de mail Wiser en memoria y verificando que el mail haya llegado correctamente.
 
  
 +
== La clase que manda mails ==
  
 
<code java="java">
 
<code java="java">
Línea 53: Línea 53:
 
</code>  
 
</code>  
  
== El test con JUnit ==
+
== El test con JUnit y Wiser ==
  
 
El siguiente test utiliza la clase anterior para maquetar el [[Servidor SMTP]].  
 
El siguiente test utiliza la clase anterior para maquetar el [[Servidor SMTP]].  
Línea 72: Línea 72:
 
public class MandaMailTest {
 
public class MandaMailTest {
  
 +
    private Wiser smtpServer;
  
 +
    @Before
 +
    public void startSmtpServer() {
 +
        smtpServer = new Wiser();
 +
        smtpServer.setPort(25);
 +
        smtpServer.start();
 +
    }
 +
 +
    @After
 +
    public void stopSmtpServer() {
 +
        smtpServer.stop();
 +
    }
  
 
     @Test
 
     @Test
Línea 79: Línea 91:
 
         MandaMail instance = new MandaMail();
 
         MandaMail instance = new MandaMail();
  
         String mailDestinatario = "destinatario@dumbster.com";
+
         String mailDestinatario = "destinatario@dosideas.com";
         String mailOrigen = "origen@dumbster.com";
+
         String mailOrigen = "origen@dosideas.com";
 
         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 Wiser";
 
 
        //arranca el servidor de mail de  Dumbster.
 
        Wiser server = new Wiser();
 
        server.setPort(9580);
 
        server.start();
 
  
 
         try {
 
         try {
Línea 96: Línea 103:
 
             fail("Unexpected exception: " + e);
 
             fail("Unexpected exception: " + e);
 
         }
 
         }
 
        //detiene el servidor de Dumbster
 
        server.stop();
 
  
 
         //verifica que se obtenga el mail y que tenga los datos enviados.
 
         //verifica que se obtenga el mail y que tenga los datos enviados.
         assertTrue(server.getMessages().size() == 1);
+
         assertTrue(smtpServer.getMessages().size() == 1);
         Iterator emailIter = server.getMessages().iterator();
+
         Iterator emailIter = smtpServer.getMessages().iterator();
 
         WiserMessage email = (WiserMessage) emailIter.next();
 
         WiserMessage email = (WiserMessage) emailIter.next();
 
         MimeMessage mmessage = email.getMimeMessage();
 
         MimeMessage mmessage = email.getMimeMessage();
Línea 111: Línea 115:
  
 
         //muestra el contenido
 
         //muestra el contenido
         System.out.println("Mensaje recibido en servidor Dumbster:");
+
         System.out.println("Mensaje recibido en servidor Wiser:");
 
         System.out.println("--------------------------------------");
 
         System.out.println("--------------------------------------");
 
         System.out.println("De: " + email.getEnvelopeSender());
 
         System.out.println("De: " + email.getEnvelopeSender());
Línea 117: Línea 121:
 
         System.out.println("Asunto: " + mmessage.getSubject());
 
         System.out.println("Asunto: " + mmessage.getSubject());
 
         System.out.println("Contenido: " + mmessage.getContent());
 
         System.out.println("Contenido: " + mmessage.getContent());
 
 
     }
 
     }
 
}
 
}

Revisión actual del 12:16 6 jul 2011

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 Wiser en memoria y verificando que el mail haya llegado correctamente.

La clase que manda mails

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 y Wiser

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

package com.dosideas.smtp;

import javax.mail.internet.MimeMessage; import org.subethamail.wiser.WiserMessage; import org.subethamail.wiser.Wiser; 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 {

   private Wiser smtpServer;
   @Before
   public void startSmtpServer() {
       smtpServer = new Wiser();
       smtpServer.setPort(25);
       smtpServer.start();
   }
   @After
   public void stopSmtpServer() {
       smtpServer.stop();
   }
   @Test
   public void testEnviarMail() throws Exception {
       MandaMail instance = new MandaMail();
       String mailDestinatario = "destinatario@dosideas.com";
       String mailOrigen = "origen@dosideas.com";
       String asunto = "Asunto del mail de prueba";
       String textoMensaje = "Este es un mail para probar el servidor de Wiser";
       try {
           //envia el mail.
           instance.enviarMail(mailOrigen, mailDestinatario, asunto, textoMensaje);
       } catch (Exception e) {
           e.printStackTrace();
           fail("Unexpected exception: " + e);
       }
       //verifica que se obtenga el mail y que tenga los datos enviados.
       assertTrue(smtpServer.getMessages().size() == 1);
       Iterator emailIter = smtpServer.getMessages().iterator();
       WiserMessage email = (WiserMessage) emailIter.next();
       MimeMessage mmessage = email.getMimeMessage();
       assertTrue(mmessage.getSubject().equals(asunto));
       assertTrue(email.getEnvelopeSender().equals(mailOrigen));
       assertTrue(email.getEnvelopeReceiver().equals(mailDestinatario));
       assertTrue(mmessage.getContent().toString().equals(textoMensaje));
       //muestra el contenido
       System.out.println("Mensaje recibido en servidor Wiser:");
       System.out.println("--------------------------------------");
       System.out.println("De: " + email.getEnvelopeSender());
       System.out.println("Para: " + email.getEnvelopeReceiver());
       System.out.println("Asunto: " + mmessage.getSubject());
       System.out.println("Contenido: " + mmessage.getContent());
   }

}

Ver también