/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.notification;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.api.context.Context;
import org.openmrs.test.BaseContextSensitiveTest;
/**
* Unit tests for the MessageService.
*/
public class MessageServiceTest extends BaseContextSensitiveTest {
private static final String NO_SMTP_SERVER_ERROR = "Could not connect to SMTP host:";
MessageService ms = null;
/**
* Run this before each unit test in this class. The "@Before" method in
* {@link BaseContextSensitiveTest} is run right before this method.
*
* @throws Exception
*/
@Before
public void runBeforeEachTest() {
executeDataSet("org/openmrs/notification/include/MessageServiceTest-initial.xml");
ms = Context.getMessageService();
}
/**
* @throws MessageException
* @see MessageService#createMessage(String,String,String,String)
*/
@Test
public void createMessage_shouldCreateMessage() throws MessageException {
String recipients = "foo@bar.com,marco@polo.com";
String sender = "me@mydomain.com";
String subject = "foo";
String message = "content";
String attachment = "inga";
String attachmentContentType = "text/plain";
String attachmentFileName = "inga.txt";
Message msg1 = ms.createMessage(recipients, sender, subject, message);
Message msg2 = ms.createMessage(subject, message);
Message msg3 = ms.createMessage(sender, subject, message);
Message msg4 = ms.createMessage(recipients, sender, subject, message, attachment, attachmentContentType,
attachmentFileName);
assertEquals(recipients, msg1.getRecipients());
assertEquals(recipients, msg4.getRecipients());
assertEquals(sender, msg1.getSender());
assertEquals(sender, msg3.getSender());
assertEquals(sender, msg4.getSender());
assertEquals(subject, msg1.getSubject());
assertEquals(subject, msg2.getSubject());
assertEquals(subject, msg3.getSubject());
assertEquals(subject, msg4.getSubject());
assertEquals(message, msg1.getContent());
assertEquals(message, msg2.getContent());
assertEquals(message, msg3.getContent());
assertEquals(message, msg4.getContent());
assertEquals(attachment, msg4.getAttachment());
assertEquals(attachmentContentType, msg4.getAttachmentContentType());
assertEquals(attachmentFileName, msg4.getAttachmentFileName());
}
/**
* @throws MessageException
* @see MessageService#sendMessage(Message)
*/
@Test
public void sendMessage_shouldSendMessage() throws MessageException {
Message tryToSend1 = ms.createMessage("recipient@example.com", "sender@example.com", "subject", "content");
try {
ms.sendMessage(tryToSend1);
}
catch (MessageException e) {
//So that this test doesn't fail just because the user isn't running an SMTP server.
if (!e.getMessage().contains(NO_SMTP_SERVER_ERROR)) {
e.printStackTrace();
fail();
}
}
Message tryToSend2 = ms.createMessage("recipient@example.com,recipient2@example.com", "openmrs.emailer@gmail.com",
"subject", "content", "moo", "text/plain", "moo.txt");
try {
ms.sendMessage(tryToSend2);
}
catch (MessageException e) {
//So that this test doesn't fail just because the user isn't running an SMTP server.
if (!e.getMessage().contains(NO_SMTP_SERVER_ERROR)) {
e.printStackTrace();
fail();
}
}
}
}