package org.wahlzeit.handlers; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.RuleChain; import org.junit.rules.TestRule; import org.wahlzeit.model.UserSession; import org.wahlzeit.services.EmailAddress; import org.wahlzeit.services.SessionManager; import org.wahlzeit.testEnvironmentProvider.LocalDatastoreServiceTestConfigProvider; import org.wahlzeit.testEnvironmentProvider.RegisteredOfyEnvironmentProvider; import org.wahlzeit.testEnvironmentProvider.SysConfigProvider; import org.wahlzeit.testEnvironmentProvider.UserSessionProvider; import org.wahlzeit.testEnvironmentProvider.WebFormHandlerProvider; import org.wahlzeit.webparts.WebPart; import java.util.Collections; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertTrue; /** * Acceptance tests for the TellFriend feature. */ public class TellFriendTest { @ClassRule public static SysConfigProvider sysConfigProvider = new SysConfigProvider(); @ClassRule public static WebFormHandlerProvider webFormHandlerProvider = new WebFormHandlerProvider(); @Rule public TestRule chain = RuleChain. outerRule(new LocalDatastoreServiceTestConfigProvider()). around(new RegisteredOfyEnvironmentProvider()). around(new UserSessionProvider()); private UserSession session; private WebFormHandler handler; @Before public void setUp() { session = (UserSession) SessionManager.getThreadLocalSession(); handler = webFormHandlerProvider.getWebFormHandler(); } /** * */ @Test public void testTellFriendMakeWebPart() { WebPart part = handler.makeWebPart(session); // no failure is good behavior EmailAddress to = EmailAddress.getFromString("engel@himmel.de"); Map<String, String> args = new HashMap<String, String>(); args.put(TellFriendFormHandler.EMAIL_TO, to.asString()); String expectedSubject = "Oh well..."; args.put(TellFriendFormHandler.EMAIL_SUBJECT, expectedSubject); handler.handlePost(session, args); part = handler.makeWebPart(session); String expectedRecipient = to.asString(); String recipient = part.getValue(TellFriendFormHandler.EMAIL_TO).toString(); assertTrue("Recipient not as expected, instead: " + recipient, recipient.equals(expectedRecipient)); String subject = part.getValue(TellFriendFormHandler.EMAIL_SUBJECT).toString(); assertTrue("Subject not as expected, instead: " + subject, expectedSubject.equals(subject)); } /** * */ @Test public void testTellFriendPost() { EmailAddress from = EmailAddress.getFromString("info@wahlzeit.org"); EmailAddress to = EmailAddress.getFromString("fan@yahoo.com"); EmailAddress bcc = session.getClient().getLanguageConfiguration().getAuditEmailAddress(); String subject = "Coolest website ever!"; String body = "You've got to check this out!"; Map<String, String> args = new HashMap<String, String>(); args.put(TellFriendFormHandler.EMAIL_FROM, from.asString()); args.put(TellFriendFormHandler.EMAIL_TO, to.asString()); args.put(TellFriendFormHandler.EMAIL_SUBJECT, subject); args.put(TellFriendFormHandler.EMAIL_BODY, body); handler.handlePost(session, args); handler.handlePost(session, Collections.EMPTY_MAP); // will fail if email is sent } }