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 2017/08/22 08:54:06 UTC
[1/5] james-jsieve git commit: JSIEVE-107 Added unit test to verify
issue JSIEVE-107
Repository: james-jsieve
Updated Branches:
refs/heads/master e0fb5e352 -> 697927f69
JSIEVE-107 Added unit test to verify issue JSIEVE-107
Project: http://git-wip-us.apache.org/repos/asf/james-jsieve/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-jsieve/commit/697927f6
Tree: http://git-wip-us.apache.org/repos/asf/james-jsieve/tree/697927f6
Diff: http://git-wip-us.apache.org/repos/asf/james-jsieve/diff/697927f6
Branch: refs/heads/master
Commit: 697927f69dd575b4173f53113a2badfc793bcee2
Parents: cc1688d
Author: Daniele Depetrini <da...@infocert.it>
Authored: Wed Jan 4 22:58:11 2017 +0100
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 15:53:23 2017 +0700
----------------------------------------------------------------------
util/pom.xml | 7 ++
.../util/check/ScriptCheckMailAdapter.java | 24 +++--
.../jsieve/util/ScriptCheckMailAdapterTest.java | 102 +++++++++++++++++++
.../apache/jsieve/util/EncodedSubjectEmail.eml | 12 +++
.../apache/jsieve/util/FoldedSubjectEmail.eml | 13 +++
5 files changed, 148 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/697927f6/util/pom.xml
----------------------------------------------------------------------
diff --git a/util/pom.xml b/util/pom.xml
index 36c4cf2..b80af42 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -52,6 +52,13 @@
</dependency>
<dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>${assertj.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/697927f6/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
index c9d6def..03aabf9 100644
--- a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
+++ b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
@@ -19,6 +19,18 @@
package org.apache.jsieve.util.check;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.mail.Header;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeUtility;
+
import org.apache.jsieve.SieveContext;
import org.apache.jsieve.exception.SieveException;
import org.apache.jsieve.mail.Action;
@@ -28,14 +40,6 @@ import org.apache.jsieve.mail.SieveMailException;
import org.apache.jsieve.parser.address.SieveAddressBuilder;
import org.apache.jsieve.parser.generated.address.ParseException;
-import javax.mail.internet.MimeUtility;
-import javax.mail.Header;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import java.io.IOException;
-import java.util.*;
-import java.io.UnsupportedEncodingException;
-
/**
* Checks script execution for an email. The wrapped email is set by called
* {@link #setMail}. Actions are recorded on {@link #executedActions} and can
@@ -168,7 +172,7 @@ public class ScriptCheckMailAdapter implements MailAdapter {
if (mail != null) {
try {
results = new ArrayList<String>();
- for (final Enumeration en = mail.getAllHeaders(); en
+ for (final Enumeration<?> en = mail.getAllHeaders(); en
.hasMoreElements(); ) {
final Header header = (Header) en.nextElement();
final String name = header.getName();
@@ -265,7 +269,7 @@ public class ScriptCheckMailAdapter implements MailAdapter {
try {
final SieveAddressBuilder builder = new SieveAddressBuilder();
- for (Enumeration en = message.getAllHeaders(); en.hasMoreElements(); ) {
+ for (Enumeration<?> en = message.getAllHeaders(); en.hasMoreElements(); ) {
final Header header = (Header) en.nextElement();
final String name = header.getName();
if (name.trim().equalsIgnoreCase(headerName)) {
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/697927f6/util/src/test/java/org/apache/jsieve/util/ScriptCheckMailAdapterTest.java
----------------------------------------------------------------------
diff --git a/util/src/test/java/org/apache/jsieve/util/ScriptCheckMailAdapterTest.java b/util/src/test/java/org/apache/jsieve/util/ScriptCheckMailAdapterTest.java
new file mode 100644
index 0000000..23508c6
--- /dev/null
+++ b/util/src/test/java/org/apache/jsieve/util/ScriptCheckMailAdapterTest.java
@@ -0,0 +1,102 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.jsieve.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.ByteArrayInputStream;
+
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.jsieve.ConfigurationManager;
+import org.apache.jsieve.SieveFactory;
+import org.apache.jsieve.mail.ActionRedirect;
+import org.apache.jsieve.parser.generated.Node;
+import org.apache.jsieve.util.check.ScriptCheckMailAdapter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ScriptCheckMailAdapterTest {
+
+ private static final String FOLDED_SUBJECT_MATCH = "if header :is \"subject\" \"Test with long long long long long long long long long "
+ + "long long long long long long long long long long long very very long folded subject email\" { "
+ + "redirect \"test@test.test\";" + "}";
+
+ private static final String ENCODED_SUBJECT_MATCH = "if header :is \"subject\" \"Test però £ ù €\" { "
+ + "redirect \"test@test.test\";" + "}";
+
+ private SieveFactory sieveFactory;
+
+
+ @Before
+ public void setUp() throws Exception {
+ this.sieveFactory = new ConfigurationManager().build();
+ }
+
+ @Test
+ public void askedActionMustBeExecutedWhenFoldedHeaderMatchs() throws Exception {
+
+ //Given
+ // Load test message file
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()),
+ ClassLoader.getSystemResourceAsStream("org/apache/jsieve/util/FoldedSubjectEmail.eml"));
+
+ // Associate it to the adapter
+ ScriptCheckMailAdapter testee = new ScriptCheckMailAdapter();
+ testee.setMail(message);
+
+ //When
+ // Parse sieve script
+ Node parsedSieve = sieveFactory.parse(new ByteArrayInputStream(FOLDED_SUBJECT_MATCH.getBytes("UTF-8")));
+
+ // Evaluate the script against the message
+ sieveFactory.evaluate(testee, parsedSieve);
+
+ //Then
+ // Test is OK if we have the "redirect" action
+ assertThat(testee.getActions()).hasSize(1);
+ assertThat(testee.getActions().get(0)).isInstanceOf(ActionRedirect.class);
+ }
+
+ @Test
+ public void askedActionMustBeExecutedWhenEncodedHeaderMatchs() throws Exception {
+
+ //Given
+ // Load test message file
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()),
+ ClassLoader.getSystemResourceAsStream("org/apache/jsieve/util/EncodedSubjectEmail.eml"));
+
+ // Associate it to the adapter
+ ScriptCheckMailAdapter testee = new ScriptCheckMailAdapter();
+ testee.setMail(message);
+
+ //When
+ // Parse sieve script
+ Node parsedSieve = sieveFactory.parse(new ByteArrayInputStream(ENCODED_SUBJECT_MATCH.getBytes("UTF-8")));
+
+ // Evaluate the script against the message
+ sieveFactory.evaluate(testee, parsedSieve);
+
+ //Then
+ // Test is OK if we have the "redirect" action
+ assertThat(testee.getActions()).hasSize(1);
+ assertThat(testee.getActions().get(0)).isInstanceOf(ActionRedirect.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/697927f6/util/src/test/resources/org/apache/jsieve/util/EncodedSubjectEmail.eml
----------------------------------------------------------------------
diff --git a/util/src/test/resources/org/apache/jsieve/util/EncodedSubjectEmail.eml b/util/src/test/resources/org/apache/jsieve/util/EncodedSubjectEmail.eml
new file mode 100644
index 0000000..3650a72
--- /dev/null
+++ b/util/src/test/resources/org/apache/jsieve/util/EncodedSubjectEmail.eml
@@ -0,0 +1,12 @@
+Return-Path: <de...@libero.it>
+To: Daniele Depetrini <de...@libero.it>
+From: Daniele Depetrini <de...@libero.it>
+Subject: =?UTF-8?B?VGVzdCBwZXLDsiDCoyDDuSDigqw=?=
+Message-ID: <23...@libero.it>
+Date: Wed, 4 Jan 2017 22:42:32 +0100
+MIME-Version: 1.0
+Content-Type: text/plain; charset=iso-8859-15
+Content-Transfer-Encoding: 7bit
+
+frff
+
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/697927f6/util/src/test/resources/org/apache/jsieve/util/FoldedSubjectEmail.eml
----------------------------------------------------------------------
diff --git a/util/src/test/resources/org/apache/jsieve/util/FoldedSubjectEmail.eml b/util/src/test/resources/org/apache/jsieve/util/FoldedSubjectEmail.eml
new file mode 100644
index 0000000..49c6841
--- /dev/null
+++ b/util/src/test/resources/org/apache/jsieve/util/FoldedSubjectEmail.eml
@@ -0,0 +1,13 @@
+Return-Path: <de...@libero.it>
+To: Daniele Depetrini <de...@libero.it>
+From: Daniele Depetrini <de...@libero.it>
+Subject: Test with long long long long long long long long long long long long
+ long long long long long long long long very very long folded subject email
+Message-ID: <4c...@libero.it>
+Date: Wed, 4 Jan 2017 17:17:38 +0100
+MIME-Version: 1.0
+Content-Type: text/plain; charset=iso-8859-15
+Content-Transfer-Encoding: 7bit
+
+asdfasdfa
+
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[5/5] james-jsieve git commit: JSIEVE-107 Unfold headers for address
matching
Posted by bt...@apache.org.
JSIEVE-107 Unfold headers for address matching
Project: http://git-wip-us.apache.org/repos/asf/james-jsieve/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-jsieve/commit/8ce6d21b
Tree: http://git-wip-us.apache.org/repos/asf/james-jsieve/tree/8ce6d21b
Diff: http://git-wip-us.apache.org/repos/asf/james-jsieve/diff/8ce6d21b
Branch: refs/heads/master
Commit: 8ce6d21b8476f37385e6baa3168ab77ee7319313
Parents: 2412c4f
Author: Daniele Depetrini <da...@infocert.it>
Authored: Tue Apr 26 17:30:34 2016 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 15:53:23 2017 +0700
----------------------------------------------------------------------
.../java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/8ce6d21b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
index 1f81402..fbb71c9 100644
--- a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
+++ b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
@@ -265,7 +265,7 @@ public class ScriptCheckMailAdapter implements MailAdapter {
final Header header = (Header) en.nextElement();
final String name = header.getName();
if (name.trim().equalsIgnoreCase(headerName)) {
- builder.addAddresses(header.getValue());
+ builder.addAddresses(MimeUtility.unfold(header.getValue()));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/5] james-jsieve git commit: JSIEVE-107 Minor cosmetic fixes
Posted by bt...@apache.org.
JSIEVE-107 Minor cosmetic fixes
Project: http://git-wip-us.apache.org/repos/asf/james-jsieve/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-jsieve/commit/cc1688d1
Tree: http://git-wip-us.apache.org/repos/asf/james-jsieve/tree/cc1688d1
Diff: http://git-wip-us.apache.org/repos/asf/james-jsieve/diff/cc1688d1
Branch: refs/heads/master
Commit: cc1688d1b9fcca25306c19168a5244a6e8d1aafc
Parents: 3f68001
Author: Daniele Depetrini <da...@infocert.it>
Authored: Wed Jan 4 15:08:01 2017 +0100
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 15:53:23 2017 +0700
----------------------------------------------------------------------
.../org/apache/jsieve/util/check/ScriptCheckMailAdapter.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/cc1688d1/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
index 6a06c5c..c9d6def 100644
--- a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
+++ b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
@@ -28,12 +28,12 @@ import org.apache.jsieve.mail.SieveMailException;
import org.apache.jsieve.parser.address.SieveAddressBuilder;
import org.apache.jsieve.parser.generated.address.ParseException;
+import javax.mail.internet.MimeUtility;
import javax.mail.Header;
import javax.mail.Message;
import javax.mail.MessagingException;
import java.io.IOException;
import java.util.*;
-import javax.mail.internet.MimeUtility;
import java.io.UnsupportedEncodingException;
/**
@@ -139,10 +139,11 @@ public class ScriptCheckMailAdapter implements MailAdapter {
try {
String[] values = mail.getHeader(name);
if (values != null) {
- //We need to do unfold headers here
+ // We need to do unfold headers + decoding here
result = new LinkedList<String>();
- for (String value: values)
+ for (String value: values) {
result.add(MimeUtility.decodeText(MimeUtility.unfold(value)));
+ }
}
} catch (MessagingException e) {
throw new SieveMailException(e);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/5] james-jsieve git commit: JSIEVE-107 Decode headers before
returning back
Posted by bt...@apache.org.
JSIEVE-107 Decode headers before returning back
Project: http://git-wip-us.apache.org/repos/asf/james-jsieve/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-jsieve/commit/3f68001e
Tree: http://git-wip-us.apache.org/repos/asf/james-jsieve/tree/3f68001e
Diff: http://git-wip-us.apache.org/repos/asf/james-jsieve/diff/3f68001e
Branch: refs/heads/master
Commit: 3f68001e82d1679d969d39b509cae2ef34245c0d
Parents: 8ce6d21
Author: Daniele Depetrini <da...@infocert.it>
Authored: Mon Jun 6 15:40:52 2016 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 15:53:23 2017 +0700
----------------------------------------------------------------------
.../apache/jsieve/util/check/ScriptCheckMailAdapter.java | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/3f68001e/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
index fbb71c9..6a06c5c 100644
--- a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
+++ b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
@@ -34,6 +34,7 @@ import javax.mail.MessagingException;
import java.io.IOException;
import java.util.*;
import javax.mail.internet.MimeUtility;
+import java.io.UnsupportedEncodingException;
/**
* Checks script execution for an email. The wrapped email is set by called
@@ -141,10 +142,12 @@ public class ScriptCheckMailAdapter implements MailAdapter {
//We need to do unfold headers here
result = new LinkedList<String>();
for (String value: values)
- result.add(MimeUtility.unfold(value));
+ result.add(MimeUtility.decodeText(MimeUtility.unfold(value)));
}
} catch (MessagingException e) {
throw new SieveMailException(e);
+ } catch (UnsupportedEncodingException e) {
+ throw new SieveMailException(e);
}
}
return result;
@@ -265,7 +268,7 @@ public class ScriptCheckMailAdapter implements MailAdapter {
final Header header = (Header) en.nextElement();
final String name = header.getName();
if (name.trim().equalsIgnoreCase(headerName)) {
- builder.addAddresses(MimeUtility.unfold(header.getValue()));
+ builder.addAddresses(MimeUtility.decodeText(MimeUtility.unfold(header.getValue())));
}
}
@@ -274,6 +277,8 @@ public class ScriptCheckMailAdapter implements MailAdapter {
} catch (MessagingException ex) {
throw new SieveMailException(ex);
+ } catch (UnsupportedEncodingException ex) {
+ throw new SieveMailException(ex);
} catch (ParseException ex) {
throw new SieveMailException(ex);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/5] james-jsieve git commit: JSIEVE-107 Always do unfold headers to
fix long header test match
Posted by bt...@apache.org.
JSIEVE-107 Always do unfold headers to fix long header test match
Project: http://git-wip-us.apache.org/repos/asf/james-jsieve/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-jsieve/commit/2412c4f8
Tree: http://git-wip-us.apache.org/repos/asf/james-jsieve/tree/2412c4f8
Diff: http://git-wip-us.apache.org/repos/asf/james-jsieve/diff/2412c4f8
Branch: refs/heads/master
Commit: 2412c4f8cccec285fdb1af9986447f35a9f2284d
Parents: e0fb5e3
Author: Daniele Depetrini <da...@infocert.it>
Authored: Tue Mar 29 18:31:46 2016 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 15:53:23 2017 +0700
----------------------------------------------------------------------
.../org/apache/jsieve/util/check/ScriptCheckMailAdapter.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-jsieve/blob/2412c4f8/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
index 58d089e..1f81402 100644
--- a/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
+++ b/util/src/main/java/org/apache/jsieve/util/check/ScriptCheckMailAdapter.java
@@ -33,6 +33,7 @@ import javax.mail.Message;
import javax.mail.MessagingException;
import java.io.IOException;
import java.util.*;
+import javax.mail.internet.MimeUtility;
/**
* Checks script execution for an email. The wrapped email is set by called
@@ -137,7 +138,10 @@ public class ScriptCheckMailAdapter implements MailAdapter {
try {
String[] values = mail.getHeader(name);
if (values != null) {
- result = Arrays.asList(values);
+ //We need to do unfold headers here
+ result = new LinkedList<String>();
+ for (String value: values)
+ result.add(MimeUtility.unfold(value));
}
} catch (MessagingException e) {
throw new SieveMailException(e);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org