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 <daniele.depetr...@infocert.it>
Authored: Wed Jan 4 22:58:11 2017 +0100
Committer: benwa <btell...@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 \"t...@test.test\";" + "}";
+    
+    private static final String ENCODED_SUBJECT_MATCH = "if header :is 
\"subject\" \"Test però £ ù €\" { "
+            + "redirect \"t...@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: <depetr...@libero.it>
+To: Daniele Depetrini <depetr...@libero.it>
+From: Daniele Depetrini <depetr...@libero.it>
+Subject: =?UTF-8?B?VGVzdCBwZXLDsiDCoyDDuSDigqw=?=
+Message-ID: <2325dfff-55af-9391-6a91-1213426e3...@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: <depetr...@libero.it>
+To: Daniele Depetrini <depetr...@libero.it>
+From: Daniele Depetrini <depetr...@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: <4cb56dec-b7a4-8476-0327-6a1b52963...@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-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to