@Override public String toString() { final StringBuffer sb = new StringBuffer("MimeMessageWrapper{"); try { sb.append("From=").append(Arrays.toString(getFrom().toArray())); sb.append("; To=").append(Arrays.toString(getRecipients(Message.RecipientType.TO).toArray())); sb.append("; Content=").append(getContentString()); }catch (MessagingException x) { sb.append("Message=").append(mimeMessage); }catch (IOException x) { sb.append("Message=").append(mimeMessage); } sb.append('}'); return sb.toString(); } }
@Override public synchronized void send(MimeMessage mimeMessage) throws MailException { if (getMaxMessages()>0) { sentMessages.add(new MimeMessageWrapper(mimeMessage)); } while (sentMessages.size()>getMaxMessages()) { sentMessages.remove(0); } }
String link = mockMvcTestClient.extractLink(message.getContentString()); assertTrue(message.getContentString().contains(subdomain + "zone")); assertThat(message.getMessage().getHeader("From"), hasItemInArray(subdomain + "zone <admin@localhost>")); assertFalse(message.getContentString().contains("Cloud Foundry")); assertFalse(message.getContentString().contains("Pivotal")); assertFalse(isEmpty(link)); assertTrue(link.contains(subdomain + ".localhost"));
String link = mockMvcTestClient.extractLink(message.getContentString()); assertFalse(isEmpty(link)); assertTrue(link.contains(subdomain + ".localhost"));
assertTrue(message.getContentString().contains("Cloud Foundry")); assertThat(message.getMessage().getHeader("From"), hasItemInArray("Cloud Foundry <admin@localhost>"));
@Test void testCreatingAnAccountWithNoClientRedirect() throws Exception { PredictableGenerator generator = new PredictableGenerator(); JdbcExpiringCodeStore store = webApplicationContext.getBean(JdbcExpiringCodeStore.class); store.setGenerator(generator); mockMvc.perform(post("/create_account.do") .with(cookieCsrf()) .param("email", userEmail) .param("password", "secr3T") .param("password_confirmation", "secr3T")) .andExpect(status().isFound()) .andExpect(redirectedUrl("accounts/email_sent")); FakeJavaMailSender.MimeMessageWrapper message = fakeJavaMailSender.getSentMessages().get(0); assertTrue(message.getContentString().contains("Cloud Foundry")); assertThat(message.getMessage().getHeader("From"), hasItemInArray("Cloud Foundry <admin@localhost>")); mockMvc.perform(get("/verify_user") .param("code", "test" + generator.counter.get())) .andExpect(status().isFound()) .andExpect(redirectedUrl(LOGIN_REDIRECT)) .andReturn(); MvcResult mvcResult = loginWithAccount("") .andExpect(authenticated()) .andReturn(); SecurityContext securityContext = (SecurityContext) mvcResult.getRequest().getSession().getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY); Authentication authentication = securityContext.getAuthentication(); assertThat(authentication.getPrincipal(), instanceOf(UaaPrincipal.class)); UaaPrincipal principal = (UaaPrincipal) authentication.getPrincipal(); assertThat(principal.getEmail(), equalTo(userEmail)); assertThat(principal.getOrigin(), equalTo(OriginKeys.UAA)); }
@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); } } }
@Test public void correct_url_gets_generated_by_default() throws Exception { ScimUser user = getScimUser(); FakeJavaMailSender sender = webApplicationContext.getBean(FakeJavaMailSender.class); sender.clearMessage(); mockMvc.perform( post("/forgot_password.do") .header("Host", "localhost") .header("X-Forwarded-Host", "other.host.com") .param("username", user.getUserName()) ) .andExpect(redirectedUrl("email_sent?code=reset_password")); assertThat(sender.getSentMessages().get(0).getContentString(), containsString("http://localhost/reset_password?code=")); assertThat(sender.getSentMessages().get(0).getContentString(), not(containsString("other.host.com"))); }
@Test public void testSendDoesntCreateMemoryLeak() throws Exception { FakeJavaMailSender sender = new FakeJavaMailSender(); sender.setMaxMessages(100); MimeMessage m = sender.createMimeMessage(); for (int i=0; i<200; i++) { sender.send(m); } assertEquals(100, sender.getMaxMessages()); assertEquals(100, sender.getSentMessages().size()); MimeMessage lastMessage = sender.createMimeMessage(); sender.send(lastMessage); assertEquals(100, sender.getSentMessages().size()); assertSame(lastMessage, sender.getSentMessages().get(99).getMessage()); }
@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>")); }