INT-4098: IMAP Content Rendering Consistency

JIRA: https://jira.spring.io/browse/INT-4098

Polishing - What's New

Schema Polishing

Also fix a test to align it with changes to the test mail server.
This commit is contained in:
Gary Russell
2016-08-17 16:45:35 -04:00
committed by Artem Bilan
parent 76bb3ada32
commit dfb6ab1e08
14 changed files with 178 additions and 7 deletions

View File

@@ -159,7 +159,29 @@ public class ImapMailReceiverTests {
testIdleWithServerGuts(receiver, true);
}
public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped) throws MessagingException {
@Test
public void testIdleWithServerDefaultSearchSimple() throws Exception {
ImapMailReceiver receiver = new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getPort()
+ "/INBOX");
receiver.setSimpleContent(true);
testIdleWithServerGuts(receiver, false, true);
assertTrue(imapIdleServer.assertReceived("searchWithUserFlag"));
}
@Test
public void testIdleWithMessageMappingSimple() throws Exception {
ImapMailReceiver receiver = new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getPort()
+ "/INBOX");
receiver.setSimpleContent(true);
receiver.setHeaderMapper(new DefaultMailHeaderMapper());
testIdleWithServerGuts(receiver, true, true);
}
public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped) throws Exception {
testIdleWithServerGuts(receiver, mapped, false);
}
public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped, boolean simple) throws Exception {
imapIdleServer.resetServer();
Properties mailProps = new Properties();
mailProps.put("mail.debug", "true");
@@ -187,6 +209,14 @@ public class ImapMailReceiverTests {
assertNotNull(received);
assertNotNull(received.getPayload().getReceivedDate());
assertTrue(received.getPayload().getLineCount() > -1);
if (simple) {
assertThat(received.getPayload().getContent(),
equalTo(TestMailServer.MailServer.MailHandler.BODY + "\r\n"));
}
else {
assertThat(received.getPayload().getContent(),
equalTo(TestMailServer.MailServer.MailHandler.MESSAGE + "\r\n"));
}
}
else {
org.springframework.messaging.Message<?> received = channel.receive(10000);
@@ -199,6 +229,12 @@ public class ImapMailReceiverTests {
assertThat((String) received.getHeaders().get(MailHeaders.FROM), equalTo("Bar <bar@baz>"));
assertThat(((String[]) received.getHeaders().get(MailHeaders.TO))[0], equalTo("Foo <foo@bar>"));
assertThat((String) received.getHeaders().get(MailHeaders.SUBJECT), equalTo("Test Email"));
if (simple) {
assertThat(received.getPayload(), equalTo(TestMailServer.MailServer.MailHandler.BODY + "\r\n"));
}
else {
assertThat(received.getPayload(), equalTo(TestMailServer.MailServer.MailHandler.MESSAGE + "\r\n"));
}
}
assertNotNull(channel.receive(10000)); // new message after idle
assertNull(channel.receive(10000)); // no new message after second and third idle

View File

@@ -36,6 +36,7 @@
channel="channel"
auto-startup="false"
header-mapper="mapper"
simple-content="true"
embedded-parts-as-bytes="false"
should-delete-messages="true"/>

View File

@@ -86,6 +86,7 @@ public class ImapIdleChannelAdapterParserTests {
assertNull(adapterAccessor.getPropertyValue("adviceChain"));
assertEquals(Boolean.FALSE, receiverAccessor.getPropertyValue("embeddedPartsAsBytes"));
assertNotNull(receiverAccessor.getPropertyValue("headerMapper"));
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("simpleContent"));
}
@Test
@@ -109,6 +110,7 @@ public class ImapIdleChannelAdapterParserTests {
assertSame(context.getBean("errorChannel"), adapterAccessor.getPropertyValue("errorChannel"));
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("embeddedPartsAsBytes"));
assertNull(receiverAccessor.getPropertyValue("headerMapper"));
assertEquals(Boolean.FALSE, receiverAccessor.getPropertyValue("simpleContent"));
}
@Test

View File

@@ -24,6 +24,7 @@
<mail:inbound-channel-adapter id="imapShouldDeleteTrue"
store-uri="imap:test" channel="testChannel" should-delete-messages="true"
simple-content="true"
auto-startup="false" />
<mail:inbound-channel-adapter id="imapShouldDeleteFalse"

View File

@@ -105,16 +105,20 @@ public class InboundChannelAdapterParserTests {
public void imapShouldDeleteTrue() {
AbstractMailReceiver receiver = this.getReceiver("imapShouldDeleteTrue");
assertEquals(ImapMailReceiver.class, receiver.getClass());
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldDeleteMessages");
DirectFieldAccessor receiverAccessor = new DirectFieldAccessor(receiver);
Boolean value = (Boolean) receiverAccessor.getPropertyValue("shouldDeleteMessages");
assertTrue(value);
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("simpleContent"));
}
@Test
public void imapShouldDeleteFalse() {
AbstractMailReceiver receiver = this.getReceiver("imapShouldDeleteFalse");
assertEquals(ImapMailReceiver.class, receiver.getClass());
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldDeleteMessages");
DirectFieldAccessor receiverAccessor = new DirectFieldAccessor(receiver);
Boolean value = (Boolean) receiverAccessor.getPropertyValue("shouldDeleteMessages");
assertFalse(value);
assertEquals(Boolean.FALSE, receiverAccessor.getPropertyValue("simpleContent"));
}

View File

@@ -67,7 +67,7 @@ public class Pop3Tests {
assertEquals("Foo <foo@bar>", headers.get(MailHeaders.TO, String[].class)[0]);
assertEquals("Bar <bar@baz>", headers.get(MailHeaders.FROM));
assertEquals("Test Email", headers.get(MailHeaders.SUBJECT));
assertEquals("foo\r\n", message.getPayload());
assertEquals("foo\r\n\r\n", message.getPayload());
}
}