package org.cloudfoundry.identity.uaa.login;
import org.cloudfoundry.identity.uaa.message.util.FakeJavaMailSender;
import org.cloudfoundry.identity.uaa.message.EmailService;
import org.cloudfoundry.identity.uaa.message.MessageType;
import org.cloudfoundry.identity.uaa.zone.BrandingInformation;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneConfiguration;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder;
import org.junit.Before;
import org.junit.Test;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertThat;
public class EmailServiceTests {
private FakeJavaMailSender mailSender;
@Before
public void setUp() throws Exception {
mailSender = new FakeJavaMailSender();
}
@Test
public void testSendOssMimeMessage() throws Exception {
EmailService emailService = new EmailService(mailSender, "http://login.example.com/login", null);
emailService.sendMessage("user@example.com", MessageType.CHANGE_EMAIL, "Test Message", "<html><body>hi</body></html>");
assertThat(mailSender.getSentMessages(), hasSize(1));
FakeJavaMailSender.MimeMessageWrapper mimeMessageWrapper = mailSender.getSentMessages().get(0);
assertThat(mimeMessageWrapper.getFrom(), hasSize(1));
InternetAddress fromAddress = (InternetAddress) mimeMessageWrapper.getFrom().get(0);
assertThat(fromAddress.getAddress(), equalTo("admin@login.example.com"));
assertThat(fromAddress.getPersonal(), equalTo("Cloud Foundry"));
assertThat(mimeMessageWrapper.getRecipients(Message.RecipientType.TO), hasSize(1));
assertThat(mimeMessageWrapper.getRecipients(Message.RecipientType.TO).get(0), equalTo((Address) new InternetAddress("user@example.com")));
assertThat(mimeMessageWrapper.getContentString(), equalTo("<html><body>hi</body></html>"));
}
@Test
public void testSendPivotalMimeMessage() throws Exception {
IdentityZoneConfiguration defaultConfig = IdentityZoneHolder.get().getConfig();
BrandingInformation branding = new BrandingInformation();
branding.setCompanyName("Best Company");
IdentityZoneConfiguration config = new IdentityZoneConfiguration();
config.setBranding(branding);
IdentityZoneHolder.get().setConfig(config);
try{
EmailService emailService = new EmailService(mailSender, "http://login.example.com/login", "something-specific@bestcompany.example.com");
emailService.sendMessage("user@example.com", MessageType.CHANGE_EMAIL, "Test Message", "<html><body>hi</body></html>");
FakeJavaMailSender.MimeMessageWrapper mimeMessageWrapper = mailSender.getSentMessages().get(0);
assertThat(mimeMessageWrapper.getFrom(), hasSize(1));
InternetAddress fromAddress = (InternetAddress) mimeMessageWrapper.getFrom().get(0);
assertThat(fromAddress.getAddress(), equalTo("something-specific@bestcompany.example.com"));
assertThat(fromAddress.getPersonal(), equalTo("Best Company"));
} finally {
IdentityZoneHolder.get().setConfig(defaultConfig);
}
}
}