Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.chrisbaur.test.mailaction;
- import static org.junit.Assert.assertTrue;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import org.junit.Rule;
- import org.junit.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.chrisbaur.mailaction.BasicSendAndReceive;
- import com.chrisbaur.mailbean.MailBean;
- import com.chrisbaur.properties.MailConfigBean;
- import com.chrisbaur.test.MethodLogger;
- import jodd.mail.EmailAttachment;
- /**
- * A basic test method that determines if a simple message sent is the same
- * message received
- *
- * @author Ken Fogel
- *
- */
- public class MailActionTest {
- // A Rule is implemented as a class with methods that are associated
- // with the lifecycle of a unit test. These methods run when required.
- // Avoids the need to cut and paste code into every test method.
- @Rule
- public MethodLogger methodLogger = new MethodLogger();
- // Real programmers use logging, not System.out.println
- private final Logger log = LoggerFactory.getLogger(getClass().getName());
- //Email accounts and passwords
- private final String receiver = "christo.receive@gmail.com";
- private final String sender = "christo.send@gmail.com";
- private final String rPass = "Receivemail!";
- private final String sPass = "Sendmail!";
- private final String email1 = "chriskbaur@gmail.com";
- private final String email2 = "christobaur@hotmail.fr";
- private final String email3 = "c-baur@hotmail.com";
- private final String email4 = "christoffer.baur@dawsoncollege.qc.ca";
- private final EmailAttachment e1 = EmailAttachment.attachment().bytes(new File("cat.jpg")).setInline("cat.jpg").create();
- private final EmailAttachment e2 = EmailAttachment.attachment().bytes(new File("cat.jpg")).setInline("cat.jpg").create();
- private final EmailAttachment a1 = EmailAttachment.attachment().bytes(new File("cat.jpg")).create();
- private final EmailAttachment a2 = EmailAttachment.attachment().bytes(new File("cat.jpg")).create();
- private final ArrayList<String> twoReceiver = new ArrayList<String>();
- private final ArrayList<String> TwoMemberCc = new ArrayList<String>(Arrays.asList(email1, email2));
- private final ArrayList<String> TwoMemberBcc = new ArrayList<String>(Arrays.asList(email3, email4));
- private final ArrayList<String> oneMemberCc = new ArrayList<String>(Arrays.asList(email1));
- private final ArrayList<String> oneMemberBcc = new ArrayList<String>(Arrays.asList(email3));
- private final ArrayList<String> noMemberCc = new ArrayList<String>();
- private final ArrayList<String> noMemberBcc = new ArrayList<String>();
- private final ArrayList<EmailAttachment> oneEmbedded = new ArrayList<EmailAttachment>(Arrays.asList(e1));
- private final ArrayList<EmailAttachment> twoEmbedded = new ArrayList<EmailAttachment>(Arrays.asList(e1, e2));
- private final ArrayList<EmailAttachment> oneAttach = new ArrayList<EmailAttachment>(Arrays.asList(a1));
- private final ArrayList<EmailAttachment> twoAttach = new ArrayList<EmailAttachment>(Arrays.asList(a1, a2));
- private final ArrayList<EmailAttachment> noEmbedded = new ArrayList<EmailAttachment>();
- private final ArrayList<EmailAttachment> noAttach = new ArrayList<EmailAttachment>();
- private final ArrayList<EmailAttachment> BothAttach = new ArrayList<EmailAttachment>(Arrays.asList(e1,a1));
- /**
- * Test method for
- * {@link com.chrisbaur.mailaction.BasicSendAndReceive#sendEmail(com.chrisbaur.mailbean.MailBean, com.chrisbaur.properties.MailConfigBean)}
- * .
- *
- * In this test a message is created, sent, received and compared.
- */
- @Test
- public void testSendEmail() {
- twoReceiver.add(receiver);
- twoReceiver.add(email1);
- sendEmail(twoReceiver, "First Test", "This test has no cc, bcc, attachments, html", null, "Sent", null, null, null );
- // A better test approach is to have a custom equals and hashCode method
- // in the MailBean. This way you could just write:
- // assertEquals(mailSendbean, mailReceiveBean);
- // I leave this for you to implement. Here is the crude implementation.
- // if (mailBeanSend.getToField().get(0).trim().equals(mailBeansReceive.get(0).getToField().get(0).trim())) {
- // if (mailBeanSend.getFromField().trim().equals(mailBeansReceive.get(0).getFromField().trim())) {
- // if (mailBeanSend.getSubjectField().trim().equals(mailBeansReceive.get(0).getSubjectField().trim())) {
- // if (mailBeanSend.getTextMessageField().trim()
- // .equals(mailBeansReceive.get(0).getTextMessageField().trim())) {
- // test = true;
- // }
- // }
- // }
- // }
- // Testing by using hashCode, and equals if necessary
- //if(mailBeanSend.hashCode() == mailBeanReceive.hashCode()))
- // It would be better if we were informed which fields did not match.
- // Another feature left to you.
- }
- /**
- *
- * @param receivers
- * @param subjectField
- * @param textMessage
- * @param htmlMessage
- * @param folder
- * @param cc
- * @param bcc
- * @param emailattachments
- */
- private void sendEmail(ArrayList<String> receivers, String subjectField, String textMessage, String htmlMessage,
- String folder, ArrayList<String> cc, ArrayList<String> bcc, ArrayList<EmailAttachment> emailAttachments){
- MailConfigBean sendConfigBean = new MailConfigBean("smtp.gmail.com", sender, sPass);
- MailConfigBean receiveConfigBean = new MailConfigBean("imap.gmail.com", receiver, rPass);
- BasicSendAndReceive basicSendAndReceive = new BasicSendAndReceive();
- MailBean mailBeanSend = new MailBean(receivers, sendConfigBean.getUserEmailAddress(), subjectField, textMessage, htmlMessage, folder, 0, cc,
- bcc, emailAttachments);
- for(String s : receivers)
- mailBeanSend.getToField().add(s);
- mailBeanSend.setFromField(sendConfigBean.getUserEmailAddress());
- mailBeanSend.setSubjectField(subjectField);
- mailBeanSend.setTextMessageField(textMessage);
- mailBeanSend.setHtmlMessageField(htmlMessage);
- mailBeanSend.setFolder(folder);
- mailBeanSend.setMailStatus(0);
- mailBeanSend.setCcField(cc);
- mailBeanSend.setBccField(bcc);
- mailBeanSend.setAttachments(emailAttachments);
- String messageId = basicSendAndReceive.sendEmail(mailBeanSend, sendConfigBean);
- log.info("MessageId is " + messageId);
- // Add a five second pause to allow the Gmail server to receive what has
- // been sent
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- log.error("Threaded sleep failed", e);
- }
- ArrayList<MailBean> mailBeanReceive = basicSendAndReceive.receiveEmail(receiveConfigBean);
- boolean test = false;
- // An optional block of log statements so that you can see the message
- log.info(" To: " + mailBeanSend.getToField().get(0) + " : " + mailBeanReceive.get(0).getToField().get(0));
- log.info(" From: " + mailBeanSend.getFromField() + " : " + mailBeanReceive.get(0).getFromField());
- log.info("Subject: " + mailBeanSend.getSubjectField() + " : " + mailBeanReceive.get(0).getSubjectField());
- log.info(" Text: " + mailBeanSend.getTextMessageField() + "=" + mailBeanSend.getTextMessageField().length()
- + " : " + mailBeanReceive.get(0).getTextMessageField() + "="
- + mailBeanReceive.get(0).getTextMessageField().length());
- assertTrue("Messages are not the same", test);
- }
- // EmailMessage htmlMessage = new EmailMessage(
- // "<html><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">" +
- // "<body><h1>Hey!</h1><img src='cid:c.png'><h2>Hay!</h2></body></html>",
- // MimeTypes.MIME_TEXT_HTML);
- // email.addMessage(htmlMessage);
- // if (attachment.getContentId() != null)
- // mailBean.getEmbedded().add(attachment);
- // else
- // mailBean.getAttachments().add(attachment);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement