You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/05/10 03:27:06 UTC
[james-project] 05/07: JAMES-2743 Need HeaderCollection to use
encoded(raw) value when parsing
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 4b3d611e7c71af3ddc0ce790e5cfa070dc06ba33
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Apr 26 18:54:47 2019 +0700
JAMES-2743 Need HeaderCollection to use encoded(raw) value when parsing
---
.../james/mailbox/elasticsearch/json/HeaderCollection.java | 13 +++++++------
.../mailbox/elasticsearch/json/HeaderCollectionTest.java | 2 --
.../jmap/methods/integration/GetMessageListMethodTest.java | 10 +++++-----
.../james/jmap/memory/MemoryGetMessageListMethodTest.java | 7 +++++++
4 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
index 4782f74..f007e69 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
@@ -71,12 +71,13 @@ public class HeaderCollection {
public Builder add(Field field) {
Preconditions.checkNotNull(field);
String headerName = field.getName().toLowerCase(Locale.US);
- String sanitizedValue = MimeUtil.unscrambleHeaderValue(field.getBody());
+ String rawHeaderValue = field.getBody();
+ String sanitizedValue = MimeUtil.unscrambleHeaderValue(rawHeaderValue);
if (!headerName.contains(".")) {
headers.put(headerName, sanitizedValue);
}
- handleSpecificHeader(headerName, sanitizedValue);
+ handleSpecificHeader(headerName, sanitizedValue, rawHeaderValue);
return this;
}
@@ -92,14 +93,14 @@ public class HeaderCollection {
sentDate, messageID);
}
- private void handleSpecificHeader(String headerName, String headerValue) {
+ private void handleSpecificHeader(String headerName, String headerValue, String rawHeaderValue) {
switch (headerName) {
case TO:
case FROM:
case CC:
case BCC:
case REPLY_TO:
- manageAddressField(headerName, headerValue);
+ manageAddressField(headerName, rawHeaderValue);
break;
case SUBJECT:
subjectSet.add(headerValue);
@@ -113,9 +114,9 @@ public class HeaderCollection {
}
}
- private void manageAddressField(String headerName, String headerValue) {
+ private void manageAddressField(String headerName, String rawHeaderValue) {
LenientAddressParser.DEFAULT
- .parseAddressList(headerValue)
+ .parseAddressList(rawHeaderValue)
.stream()
.flatMap(this::convertAddressToMailboxStream)
.map((mailbox) -> new EMailer(SearchUtil.getDisplayAddress(mailbox), mailbox.getAddress()))
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
index db73f08..647bdf8 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
@@ -25,7 +25,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.time.format.DateTimeFormatter;
import java.util.stream.Stream;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.ParameterizedTest;
@@ -94,7 +93,6 @@ class HeaderCollectionTest {
.containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"));
}
- @Disabled("JAMES-2743 HeaderCollection doesn't support Q encoding")
@ParameterizedTest
@ArgumentsSource(UTF8FromHeaderTestSource.class)
void displayNamesShouldBeRetrievedWhenEncodedWord(String encodedFromHeader, String nameOfFromAddress) {
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
index ce45654..1ac3d65 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
@@ -213,7 +213,7 @@ public abstract class GetMessageListMethodTest {
@Category(BasicFeature.class)
@Test
- public void searchByFromFieldDoesntSupportUTF8FromName() throws Exception {
+ public void searchByFromFieldShouldSupportUTF8FromName() throws Exception {
String toUsername = "username1@" + DOMAIN;
String password = "password";
dataProbe.addUser(toUsername, password);
@@ -247,11 +247,11 @@ public abstract class GetMessageListMethodTest {
.body()
.path(ARGUMENTS + ".created." + messageCreationId + ".id");
- calmlyAwait.atMost(Duration.TEN_SECONDS)
- .until(() -> searchFirstMessageByFromField(fromAddress), Matchers.notNullValue());
+ String searchedMessageId = calmlyAwait.atMost(Duration.TEN_SECONDS)
+ .until(() -> searchFirstMessageByFromField(fromName), Matchers.notNullValue());
- assertThat(searchFirstMessageByFromField(fromName))
- .isNull();
+ assertThat(searchedMessageId)
+ .isEqualTo(messageId);
}
private String searchFirstMessageByFromField(String from) {
diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryGetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryGetMessageListMethodTest.java
index 5871e88..589b007 100644
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryGetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryGetMessageListMethodTest.java
@@ -49,4 +49,11 @@ public class MemoryGetMessageListMethodTest extends GetMessageListMethodTest {
@Test
public void getMessageListShouldIncludeMessagesWhenTextFilterMatchesBodyWithStemming() {
}
+
+ @Override
+ @Ignore("JAMES-2756 Memory James Server uses the SimpleMessageSearchIndex, " +
+ "it doesn't support to search on the encoded header value's names")
+ @Test
+ public void searchByFromFieldShouldSupportUTF8FromName() {
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org