JAMES-2019 Add integration testing
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ae36fda5 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ae36fda5 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ae36fda5 Branch: refs/heads/master Commit: ae36fda5b33ad6d493f4953df865e87a1f63ee9e Parents: 6573fc8 Author: quynhn <[email protected]> Authored: Mon May 8 14:45:00 2017 +0700 Committer: benwa <[email protected]> Committed: Mon May 15 08:10:48 2017 +0700 ---------------------------------------------------------------------- .../cucumber/GetMessagesMethodStepdefs.java | 18 +- .../test/resources/cucumber/GetMessages.feature | 10 +- .../eml/htmlWithLongAndComplicatedContent.eml | 1995 ++++++++++++++++++ 3 files changed, 2021 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ae36fda5/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java index a88c824..bde6f87 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java @@ -37,10 +37,12 @@ import javax.inject.Inject; import javax.mail.Flags; import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.client.fluent.Request; import org.apache.james.jmap.DefaultMailboxes; import org.apache.james.jmap.methods.integration.cucumber.util.TableRow; +import org.apache.james.jmap.model.MessagePreviewGenerator; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; @@ -228,6 +230,11 @@ public class GetMessagesMethodStepdefs { appendMessage(messageName, "eml/windows1252charset.eml"); } + @Given("^the user has a message \"([^\"]*)\" in \"([^\"]*)\" mailbox with long and complicated HTML content$") + public void appendMessageWithSpecialCase(String messageName, String mailbox) throws Throwable { + appendMessage(messageName, "eml/htmlWithLongAndComplicatedContent.eml"); + } + private void appendMessage(String messageName, String emlFileName) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); MessageId id = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser, @@ -421,10 +428,19 @@ public class GetMessagesMethodStepdefs { @Then("^the preview of the message is not empty$") public void assertPreviewOfTheFirstMessageIsNotEmpty() throws Throwable { - String actual = jsonPath.<String>read(FIRST_MESSAGE + ".preview").replace("\n", " ").trim(); + String actual = jsonPath.<String>read(FIRST_MESSAGE + ".preview"); assertThat(actual).isNotEmpty(); } + @Then("^the preview should not contain consecutive spaces or blank characters$") + public void assertPreviewShouldBeNormalized() throws Throwable { + String actual = jsonPath.<String>read(FIRST_MESSAGE + ".preview"); + assertThat(actual).hasSize(MessagePreviewGenerator.MAX_PREVIEW_LENGTH) + .doesNotMatch(" ") + .doesNotContain(StringUtils.CR) + .doesNotContain(StringUtils.LF); + } + @Then("^the headers of the message contains:$") public void assertHeadersOfTheFirstMessage(DataTable headers) throws Throwable { assertThat(jsonPath.<Map<String, String>>read(FIRST_MESSAGE + ".headers")).containsAllEntriesOf(headers.asMap(String.class, String.class)); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae36fda5/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature index 7d35ac4..f1ea2e7 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature @@ -276,7 +276,7 @@ Feature: GetMessages method And the list should contain 1 message And the hasAttachment of the message is "false" And the list of attachments of the message contains only one attachment with cid "[email protected]" - + Scenario: Preview and bodies should respect given charset Given the user has a message "m1" in "INBOX" mailbox with specific charset When the user ask for messages "m1" @@ -285,3 +285,11 @@ Feature: GetMessages method And the preview of the message is "à à à à éééé èèèè" And the textBody of the message is "à à à à \r\n\r\néééé\r\n\r\nèèèè\r\n" And the htmlBody of the message is "<html>\r\n <p>à à à à </p>\r\n <p>éééé</p>\r\n <p>èèèè</p>\r\n</html>\r\n" + + Scenario: Preview should be normalized in case of long and complicated HTML content + Given the user has a message "m1" in "INBOX" mailbox with long and complicated HTML content + When the user ask for messages "m1" + Then no error is returned + And the list should contain 1 message + And the preview of the message is not empty + And the preview should not contain consecutive spaces or blank characters --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
