Author: btellier
Date: Thu Dec 17 15:13:00 2015
New Revision: 1720601

URL: http://svn.apache.org/viewvc?rev=1720601&view=rev
Log:
JAMES-1620 Tests for core Sieve functionnalities defined in RFC-5228 
integration in James

Added:
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFrom.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeTo.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script
Removed:
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelope.script
Modified:
    
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
    
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
    
james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllBcc.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllCc.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllFrom.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-From.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-To.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllSender.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllTo.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressDomain.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressLocalPart.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllFalse.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllTrue.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofOneFalse.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllFalse.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllTrue.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofOneFalse.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/exists.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/false.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/fileinto.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/header.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notFalse.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notTrue.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/redirect.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeOver.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeUnder.script
    
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/true.script

Modified: 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
 (original)
+++ 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
 Thu Dec 17 15:13:00 2015
@@ -171,4 +171,8 @@ public class FakeMail implements Mail {
     public void setRemoteAddr(String remoteAddr) {
         this.remoteAddr = remoteAddr;
     }
+
+    public void setSender(MailAddress sender) {
+        this.sender = sender;
+    }
 }

Modified: 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
 (original)
+++ 
james/project/trunk/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
 Thu Dec 17 15:13:00 2015
@@ -30,15 +30,69 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 
 public class FakeMailContext implements MailetContext {
+
+    public static class SentMail {
+
+        private MailAddress sender;
+        private Collection<MailAddress> recipients;
+        private MimeMessage msg;
+
+        public SentMail(MailAddress sender, Collection<MailAddress> 
recipients, MimeMessage msg) {
+            this.sender = sender;
+            this.recipients = recipients;
+            this.msg = msg;
+        }
+
+        public MailAddress getSender() {
+            return sender;
+        }
+
+        public Collection<MailAddress> getRecipients() {
+            return recipients;
+        }
+
+        public MimeMessage getMsg() {
+            return msg;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            SentMail sentMail = (SentMail) o;
+
+            if (sender != null ? !sender.equals(sentMail.sender) : 
sentMail.sender != null) return false;
+            return !(recipients != null ? 
!recipients.equals(sentMail.recipients) : sentMail.recipients != null);
+
+        }
+
+        @Override
+        public int hashCode() {
+            int result = sender != null ? sender.hashCode() : 0;
+            result = 31 * result + (recipients != null ? recipients.hashCode() 
: 0);
+            return result;
+        }
+
+        @Override
+        public String toString() {
+            return "SentMail{" +
+                "recipients=" + recipients +
+                ", sender=" + sender +
+                '}';
+        }
+    }
     
     HashMap<String, Object> attributes = new HashMap<String, Object>();
-    private MimeMessage sentMessage;
+
+    List<SentMail> sentMails = new ArrayList<SentMail>();
 
     public void bounce(Mail mail, String message) throws MessagingException {
         // trivial implementation
@@ -114,19 +168,19 @@ public class FakeMailContext implements
     }
 
     public void sendMail(MimeMessage mimemessage) throws MessagingException {
-        sentMessage = mimemessage;
+        sentMails.add(new SentMail(null, new ArrayList<MailAddress>(), 
mimemessage));
     }
 
     public void sendMail(MailAddress sender, Collection<MailAddress> 
recipients, MimeMessage msg) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
+        sentMails.add(new SentMail(sender, recipients, msg));
     }
 
     public void sendMail(MailAddress sender, Collection<MailAddress> 
recipients, MimeMessage msg, String state) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
+        sentMails.add(new SentMail(sender, recipients, msg));
     }
 
     public void sendMail(Mail mail) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
+        sentMails.add(new SentMail(mail.getSender(), mail.getRecipients(), 
mail.getMessage()));
     }
 
     public void setAttribute(String name, Serializable object) {
@@ -161,7 +215,7 @@ public class FakeMailContext implements
         return null;   // trivial implementation
     }
 
-    public MimeMessage getSentMessage() {
-        return sentMessage;
+    public List<SentMail> getSentMails() {
+        return sentMails;
     }
 }

Modified: 
james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
 Thu Dec 17 15:13:00 2015
@@ -20,20 +20,19 @@
 package org.apache.james.transport.mailets.delivery;
 
 import com.google.common.collect.Lists;
-import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.apache.james.transport.mailets.LocalDelivery;
 import org.apache.james.transport.mailets.SieveMailet;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
 import org.junit.Before;
 import org.junit.Test;
@@ -53,31 +52,48 @@ import javax.mail.util.ByteArrayDataSour
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Date;
+import java.util.List;
 import java.util.Properties;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
 public class SieveMailetTest {
 
+    class Header {
+        String name;
+        String value;
+
+        public Header(String name, String value) {
+            this.name = name;
+            this.value = value;
+        }
+    }
+
+    public static final MailboxPath NOT_SELECTED_MAILBOX = new 
MailboxPath("#private", "receiver", "INBOX.not.selected");
+    public static final MailboxPath SELECTED_MAILBOX = new 
MailboxPath("#private", "receiver", "INBOX.select");
+    public static final MailboxPath INBOX = new MailboxPath("#private", 
"receiver", "INBOX");
+
     private UsersRepository usersRepository;
-    private RecipientRewriteTable recipientRewriteTable;
     private MailboxManager mailboxManager;
-    private DomainList domainList;
     private SieveRepository sieveRepository;
     private SieveMailet sieveMailet;
+    private FakeMailContext fakeMailContext;
+    private FakeMailetConfig fakeMailetConfig;
 
     @Before
     public void setUp() throws Exception {
         sieveRepository = mock(SieveRepository.class);
         usersRepository = mock(UsersRepository.class);
-        recipientRewriteTable = mock(RecipientRewriteTable.class);
         mailboxManager = mock(MailboxManager.class);
-        domainList = mock(DomainList.class);
-
+        fakeMailContext = new FakeMailContext();
+        fakeMailetConfig = new FakeMailetConfig("sieveMailet", 
fakeMailContext);
         sieveMailet = new SieveMailet(usersRepository, mailboxManager, 
sieveRepository, "INBOX");
     }
 
@@ -89,32 +105,9 @@ public class SieveMailetTest {
             }
         });
         when(sieveRepository.getActive("[email protected]")).thenThrow(new 
ScriptNotFoundException());
-        MailboxPath inbox = new MailboxPath("#private", "[email protected]", 
"INBOX");
-        final MessageManager messageManager = mock(MessageManager.class);
-        when(mailboxManager.getMailbox(eq(inbox), 
any(MailboxSession.class))).thenAnswer(new Answer<MessageManager>() {
-            public MessageManager answer(InvocationOnMock invocationOnMock) 
throws Throwable {
-                return messageManager;
-            }
-        });
-        final MailboxSession session = mock(MailboxSession.class);
-        when(session.getPathDelimiter()).thenAnswer(new Answer<Character>() {
-            @Override
-            public Character answer(InvocationOnMock invocationOnMock) throws 
Throwable {
-                return '.';
-            }
-        });
-        when(mailboxManager.createSystemSession(any(String.class), 
any(Logger.class))).thenAnswer(new Answer<MailboxSession>() {
-            @Override
-            public MailboxSession answer(InvocationOnMock invocationOnMock) 
throws Throwable {
-                return session;
-            }
-        });
-
-        Mail mail = createMail();
-
-        sieveMailet.init(new FakeMailetConfig());
-        sieveMailet.service(mail);
-
+        final MessageManager messageManager = prepareMessageManagerOn(new 
MailboxPath("#private", "[email protected]", "INBOX"));
+        sieveMailet.init(fakeMailetConfig);
+        sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
     }
 
@@ -126,38 +119,619 @@ public class SieveMailetTest {
             }
         });
         when(sieveRepository.getActive("receiver")).thenThrow(new 
ScriptNotFoundException());
-        MailboxPath inbox = new MailboxPath("#private", "receiver", "INBOX");
-        final MessageManager messageManager = mock(MessageManager.class);
-        when(mailboxManager.getMailbox(eq(inbox), 
any(MailboxSession.class))).thenAnswer(new Answer<MessageManager>() {
-            public MessageManager answer(InvocationOnMock invocationOnMock) 
throws Throwable {
-                return messageManager;
-            }
-        });
-        final MailboxSession session = mock(MailboxSession.class);
-        when(session.getPathDelimiter()).thenAnswer(new Answer<Character>() {
-            @Override
-            public Character answer(InvocationOnMock invocationOnMock) throws 
Throwable {
-                return '.';
-            }
-        });
-        when(mailboxManager.createSystemSession(any(String.class), 
any(Logger.class))).thenAnswer(new Answer<MailboxSession>() {
-            @Override
-            public MailboxSession answer(InvocationOnMock invocationOnMock) 
throws Throwable {
-                return session;
-            }
-        });
+        final MessageManager messageManager = prepareMessageManagerOn(INBOX);
+        sieveMailet.init(fakeMailetConfig);
+        sieveMailet.service(createMail());
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void keepScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/keep.script");
+        final MessageManager messageManager = prepareMessageManagerOn(INBOX);
+
+        sieveMailet.service(createMail());
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void discardScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/discard.script");
+
+        sieveMailet.service(createMail());
+        verifyNoMoreInteractions(mailboxManager);
+    }
+
+    @Test
+    public void fileintoScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/fileinto.script");
+        final MessageManager messageManager = prepareMessageManagerOn(new 
MailboxPath("#private", "receiver", "INBOX.any"));
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void allOfAllFalseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofAllFalse.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
 
-        Mail mail = createMail();
+    @Test
+    public void allOfOneFalseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofOneFalse.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void allOfAllTrueScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofAllTrue.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void anyOfAllFalseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofAllFalse.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void falseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/false.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void trueScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/true.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void notFalseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/notFalse.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void notTrueScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/notTrue.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void anyOfOneFalseScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofOneFalse.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
 
-        sieveMailet.init(new FakeMailetConfig());
+    @Test
+    public void anyOfAllTrueScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofAllTrue.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void stopScriptShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/stop.script");
+        final MessageManager messageManager = prepareMessageManagerOn(INBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void headerScriptShouldWorkIfHeaderIsAbsent() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/header.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void headerScriptShouldWorkIfHeaderIsPresent() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/header.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubject("JAMES-1620 revolution"));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void sizeOverScriptShouldWorkIfUnderLimit() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeOver.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        FakeMail mail = createMail();
+        mail.setMessageSize(100);
+        sieveMailet.service(mail);
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void sizeUnderScriptShouldWorkIfUnderLimit() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeUnder.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        FakeMail mail = createMail();
+        mail.setMessageSize(100);
+        sieveMailet.service(mail);
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void sizeOverScriptShouldWorkIfOverLimit() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeOver.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        FakeMail mail = createMail();
+        mail.setMessageSize(1000);
+        sieveMailet.service(mail);
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void sizeUnderScriptShouldWorkIfOverLimit() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeUnder.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        FakeMail mail = createMail();
+        mail.setMessageSize(1000);
         sieveMailet.service(mail);
 
         verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
     }
 
-    private Mail createMail() throws MessagingException, IOException {
+    @Test
+    public void addressLocalPartShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressLocalPart.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+
+    @Test
+    public void addressLocalPartShouldOnlyMatchLocalPart() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressLocalPart.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+
+    @Test
+    public void addressDomainShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressDomain.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+
+    @Test
+    public void addressDomainShouldOnlyMatchLocalPart() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressDomain.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressBccAllShouldNotMatchOtherHeaders() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressBccAllShouldMatchSpecifiedAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Bcc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressBccAllShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Bcc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressBccAllShouldNotMatchOtherDomain() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Bcc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void redirectShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/redirect.script");
+        sieveMailet.service(createMail());
+        verifyZeroInteractions(mailboxManager);
+
+        List<FakeMailContext.SentMail> sentMails = 
fakeMailContext.getSentMails();
+        assertEquals(sentMails.size(), 1);
+        assertEquals(sentMails.get(0), new FakeMailContext.SentMail(new 
MailAddress("[email protected]"), Lists.newArrayList(new 
MailAddress("[email protected]")), null));
+    }
+
+    @Test
+    public void addressCcAllShouldNotMatchOtherHeaders() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressCcAllShouldMatchSpecifiedAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressCcAllShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressCcAllShouldNotMatchOtherDomain() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressFromAllShouldNotMatchOtherHeaders() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Cc", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressFromAllShouldMatchSpecifiedAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressFromAllShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressFromAllShouldNotMatchOtherDomain() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressToAllShouldNotMatchOtherHeaders() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resent-To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressToAllShouldMatchSpecifiedAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressToAllShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressToAllShouldNotMatchOtherDomain() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressSenderAllShouldNotMatchOtherHeaders() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressSenderAllShouldMatchSpecifiedAddress() throws Exception 
{
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Sender", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressSenderAllShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Sender", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressSenderAllShouldNotMatchOtherDomain() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Sender", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_FromAllShouldNotMatchOtherHeaders() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_FromAllShouldMatchSpecifiedAddress() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_FromAllShouldNotMatchOtherAddress() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_FromAllShouldNotMatchOtherDomain() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_ToAllShouldNotMatchOtherHeaders() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_ToAllShouldMatchSpecifiedAddress() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_ToAllShouldNotMatchOtherAddress() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void addressResent_ToAllShouldNotMatchOtherDomain() throws 
Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("Resend-To", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void envelopeFromShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeFrom.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMailWithSubjectAndHeaders("Default", new 
Header("From", "[email protected]")));
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void envelopeFromShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void envelopeToShouldWork() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeTo.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    @Test
+    public void envelopeToShouldNotMatchOtherAddress() throws Exception {
+        
prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script");
+        final MessageManager messageManager = 
prepareMessageManagerOn(NOT_SELECTED_MAILBOX);
+
+        sieveMailet.service(createMail());
+
+        verify(messageManager).appendMessage(any(InputStream.class), 
any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+    }
+
+    // TODO Body extension....
+
+    private void prepareTestUsingScript(final String script) throws Exception {
+        when(usersRepository.supportVirtualHosting()).thenReturn(false);
+        
when(sieveRepository.getActive("receiver")).thenReturn(ClassLoader.getSystemResourceAsStream(script));
+        sieveMailet.init(fakeMailetConfig);
+    }
+
+    private MessageManager prepareMessageManagerOn(MailboxPath inbox) throws 
MailboxException {
+        final MessageManager messageManager = mock(MessageManager.class);
+        when(mailboxManager.getMailbox(eq(inbox), 
any(MailboxSession.class))).thenReturn(messageManager);
+        final MailboxSession session = mock(MailboxSession.class);
+        when(session.getPathDelimiter()).thenReturn('.');
+        when(mailboxManager.createSystemSession(any(String.class), 
any(Logger.class))).thenReturn(session);
+        return messageManager;
+    }
+
+    private FakeMail createMail() throws MessagingException, IOException {
+        return createMailWithSubject("Subject");
+    }
+
+    private FakeMail createMailWithSubject(String subject) throws 
MessagingException, IOException {
+        return createMailWithSubjectAndHeaders(subject);
+    }
+
+    private FakeMail createMailWithSubjectAndHeaders(String subject, Header... 
headers) throws MessagingException, IOException {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        message.setSubject("Subject");
+        message.setSubject(subject);
         message.setSender(new InternetAddress("[email protected]"));
         message.setRecipient(MimeMessage.RecipientType.TO, new 
InternetAddress("[email protected]"));
         MimeMultipart multipart = new MimeMultipart();
@@ -165,7 +739,7 @@ public class SieveMailetTest {
         scriptPart.setDataHandler(
             new DataHandler(
                 new ByteArrayDataSource(
-                    "toto",
+                    "A text to match",
                     "application/sieve; charset=UTF-8")
             ));
         scriptPart.setDisposition(MimeBodyPart.ATTACHMENT);
@@ -173,10 +747,14 @@ public class SieveMailetTest {
         scriptPart.setFileName("file.txt");
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
+        for (Header header : headers) {
+            message.addHeader(header.name, header.value);
+        }
         message.saveChanges();
-        Mail mail = new FakeMail(message);
+        FakeMail mail = new FakeMail(message);
         mail.setState(Mail.DEFAULT);
         mail.setRecipients(Lists.newArrayList(new 
MailAddress("[email protected]")));
+        mail.setSender(new MailAddress("[email protected]"));
         return mail;
     }
 

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllBcc.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllBcc.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllBcc.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllBcc.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "Bcc" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllCc.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllCc.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllCc.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllCc.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "Cc" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllFrom.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllFrom.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllFrom.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllFrom.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "from" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-From.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-From.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-From.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-From.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "Resend-From" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-To.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-To.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-To.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllResend-To.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "Resend-To" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllSender.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllSender.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllSender.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllSender.script
 Thu Dec 17 15:13:00 2015
@@ -20,7 +20,7 @@
 require "fileinto";
 
 if address :is :all "Sender" "[email protected]" {
-    fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+     fileinto "INBOX.select";
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllTo.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllTo.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllTo.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressAllTo.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if address :is :all "To" "[email protected]" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressDomain.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressDomain.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressDomain.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressDomain.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if address :is :domain "from" "[email protected]" {
+if address :is :domain "Cc" "domain.com" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressLocalPart.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressLocalPart.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressLocalPart.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/addressLocalPart.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if address :is :localpart "from" "[email protected]" {
+if address :is :localpart "Cc" "source" {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllFalse.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllFalse.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllFalse.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllFalse.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if alloff (false, false) {
+if allof (false, false) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllTrue.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllTrue.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllTrue.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofAllTrue.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if alloff (true, true) {
+if allof (true, true) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofOneFalse.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofOneFalse.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofOneFalse.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/allofOneFalse.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if alloff (true, false) {
+if allof (true, false) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllFalse.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllFalse.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllFalse.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllFalse.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if anyoff (false, false) {
+if anyof (false, false) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllTrue.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllTrue.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllTrue.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofAllTrue.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if anyoff (true, true) {
+if anyof (true, true) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofOneFalse.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofOneFalse.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofOneFalse.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/anyofOneFalse.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if anyoff (true, false) {
+if anyof (true, false) {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Added: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFrom.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFrom.script?rev=1720601&view=auto
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFrom.script
 (added)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFrom.script
 Thu Dec 17 15:13:00 2015
@@ -0,0 +1,27 @@
+################################################################
+# 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.                                           #
+################################################################
+
+require "fileinto";
+require "envelope";
+
+if envelope :all "from" "[email protected]" {
+    fileinto "INBOX.select";
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Added: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script?rev=1720601&view=auto
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script
 (added)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script
 Thu Dec 17 15:13:00 2015
@@ -0,0 +1,27 @@
+################################################################
+# 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.                                           #
+################################################################
+
+require "fileinto";
+require "envelope";
+
+if envelope :is :all "from" "[email protected]" {
+    fileinto "INBOX.select";
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Added: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeTo.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeTo.script?rev=1720601&view=auto
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeTo.script
 (added)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeTo.script
 Thu Dec 17 15:13:00 2015
@@ -0,0 +1,27 @@
+################################################################
+# 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.                                           #
+################################################################
+
+require "fileinto";
+require "envelope";
+
+if envelope :all "to" "[email protected]" {
+    fileinto "INBOX.select";
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Added: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script?rev=1720601&view=auto
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script
 (added)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script
 Thu Dec 17 15:13:00 2015
@@ -0,0 +1,27 @@
+################################################################
+# 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.                                           #
+################################################################
+
+require "fileinto";
+require "envelope";
+
+if envelope :is :all "to" "[email protected]" {
+    fileinto "INBOX.select";
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/exists.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/exists.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/exists.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/exists.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if exists ["Cc","Bcc"] {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/false.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/false.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/false.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/false.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if true {
+if false {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/fileinto.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/fileinto.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/fileinto.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/fileinto.script
 Thu Dec 17 15:13:00 2015
@@ -19,4 +19,4 @@
 
 require "fileinto";
 
-fileinto "INBOX.any"
\ No newline at end of file
+fileinto "INBOX.any";
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/header.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/header.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/header.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/header.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if header :is :contains ["Subject"] ["JAMES-1620"] {
+if header :contains ["Subject"] ["JAMES-1620"] {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notFalse.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notFalse.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notFalse.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notFalse.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if not false {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notTrue.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notTrue.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notTrue.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/notTrue.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if not true {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/redirect.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/redirect.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/redirect.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/redirect.script
 Thu Dec 17 15:13:00 2015
@@ -17,4 +17,4 @@
 # under the License.                                           #
 ################################################################
 
-redirect "[email protected]";
\ No newline at end of file
+redirect "[email protected]";
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeOver.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeOver.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeOver.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeOver.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if size :over 1000 {
+if size :over 500 {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeUnder.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeUnder.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeUnder.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/sizeUnder.script
 Thu Dec 17 15:13:00 2015
@@ -19,8 +19,8 @@
 
 require "fileinto";
 
-if size :under 1000 {
+if size :under 500 {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+    fileinto "INBOX.not.selected";
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/true.script
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/true.script?rev=1720601&r1=1720600&r2=1720601&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/true.script
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/test/resources/org/apache/james/transport/mailets/delivery/true.script
 Thu Dec 17 15:13:00 2015
@@ -21,6 +21,6 @@ require "fileinto";
 
 if true {
     fileinto "INBOX.select";
-}
-
-keep;
\ No newline at end of file
+} else {
+     fileinto "INBOX.not.selected";
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to