@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 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 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 testDoesntStore0Messages() throws Exception { FakeJavaMailSender sender = new FakeJavaMailSender(); sender.setMaxMessages(-1); MimeMessage m = sender.createMimeMessage(); for (int i=0; i<200; i++) { sender.send(m); } assertEquals(0, sender.getMaxMessages()); assertEquals(0, sender.getSentMessages().size()); } }
@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)); }
.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>"));
@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); } } }
.andExpect(redirectedUrl("accounts/email_sent")); FakeJavaMailSender.MimeMessageWrapper message = fakeJavaMailSender.getSentMessages().get(0); String link = mockMvcTestClient.extractLink(message.getContentString()); assertFalse(isEmpty(link));
.andExpect(redirectedUrl("accounts/email_sent")); FakeJavaMailSender.MimeMessageWrapper message = fakeJavaMailSender.getSentMessages().get(0); String link = mockMvcTestClient.extractLink(message.getContentString()); assertTrue(message.getContentString().contains(subdomain + "zone"));