You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/11/08 07:29:55 UTC

[8/9] james-project git commit: PROTOCOL-117 cover ListingEncodingUtils with tests

PROTOCOL-117 cover ListingEncodingUtils with tests


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1411959d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1411959d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1411959d

Branch: refs/heads/master
Commit: 1411959de159366e35b4341938308ba463defb0a
Parents: 78f2390
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Nov 7 16:37:08 2017 +0100
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Nov 7 17:55:48 2017 +0100

----------------------------------------------------------------------
 .../imap/encode/LSubResponseEncoderTest.java    | 49 +++++------
 .../imap/encode/ListResponseEncoderTest.java    | 62 ++++----------
 .../imap/encode/ListingEncodingUtilsTest.java   | 86 ++++++++++++++------
 .../imap/encode/XListResponseEncoderTest.java   | 81 ++++++++++++++++++
 4 files changed, 183 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1411959d/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
index 23836f1..a0c9348 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.imap.encode;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -34,50 +35,44 @@ import org.junit.Before;
 import org.junit.Test;
 
 public class LSubResponseEncoderTest  {
+    private LSubResponseEncoder encoder;
 
-    LSubResponseEncoder encoder;
-
-    ImapEncoder mockNextEncoder;
-
-    ByteImapResponseWriter writer = new ByteImapResponseWriter();
-    ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
+    private ByteImapResponseWriter writer = new ByteImapResponseWriter();
+    private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
 
     private Mockery context = new JUnit4Mockery();
-    
+
     @Before
     public void setUp() throws Exception {
-        mockNextEncoder = context.mock(ImapEncoder.class);
-        encoder = new LSubResponseEncoder(mockNextEncoder);
+        encoder = new LSubResponseEncoder(context.mock(ImapEncoder.class));
     }
 
     @Test
-    public void testIsAcceptable() {
-        assertFalse(encoder.isAcceptable(new ListResponse(true, true, true,
-                true, false, false, "name", '.')));
-        assertTrue(encoder.isAcceptable(new LSubResponse("name", true, '.')));
-        assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
-        assertFalse(encoder.isAcceptable(null));
+    public void encoderShouldNotAcceptListResponse() {
+        assertThat(encoder.isAcceptable(new ListResponse(true, true, true,
+            true, false, false, "name", '.')))
+            .isFalse();
     }
 
     @Test
-	public void testName() throws Exception {
-        encoder.encode(new LSubResponse("INBOX.name", false, '.'), composer, new FakeImapSession());
-        assertEquals("* LSUB () \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldAcceptLsubResponse() {
+        assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isTrue();
     }
 
     @Test
-	public void testDelimiter() throws Exception {
-        encoder.encode(new LSubResponse("INBOX.name", false, '.'), composer, new FakeImapSession());
-        assertEquals("* LSUB () \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldNotAcceptImapMessage() {
+        assertThat(encoder.isAcceptable(context.mock(ImapMessage.class))).isFalse();
     }
 
     @Test
-    public void testNoSelect() throws Exception {
-        encoder.encode(new LSubResponse("INBOX.name", true, '.'), composer, new FakeImapSession());
-        assertEquals("* LSUB (\\Noselect) \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldNotAcceptNull() {
+        assertThat(encoder.isAcceptable(null)).isFalse();
+    }
 
+    @Test
+    public void encoderShouldIncludeLSUBCommand() throws Exception {
+        encoder.encode(new LSubResponse("name", true, '.'), composer, new FakeImapSession());
+        assertThat(writer.getString()).startsWith("* LSUB");
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1411959d/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
index 67bd1bc..e70572d 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.imap.encode;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -37,8 +38,6 @@ public class ListResponseEncoderTest {
 
     private ListResponseEncoder encoder;
 
-    private ImapEncoder mockNextEncoder;
-
     private ByteImapResponseWriter writer = new ByteImapResponseWriter();
     private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
 
@@ -46,63 +45,36 @@ public class ListResponseEncoderTest {
     
     @Before
     public void setUp() throws Exception {
-        mockNextEncoder = context.mock(ImapEncoder.class);
-        encoder = new ListResponseEncoder(mockNextEncoder);
-    }
-
-    @Test
-    public void testIsAcceptable() {
-        assertTrue(encoder.isAcceptable(new ListResponse(true, true, true,
-                true, false, false, "name", '.')));
-        assertFalse(encoder.isAcceptable(new LSubResponse("name", true, '.')));
-        assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
-        assertFalse(encoder.isAcceptable(null));
-    }
-
-    @Test
-	public void testName() throws Exception {     
-        encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST () \".\" \"INBOX.name\"\r\n", writer.getString());
-    }
-
-    @Test
-	public void testDelimiter() throws Exception {
-        encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST () \".\" \"INBOX.name\"\r\n", writer.getString());
+        encoder = new ListResponseEncoder(context.mock(ImapEncoder.class));
     }
 
-
     @Test
-    public void testAllAttributes() throws Exception {
-        encoder.encode(new ListResponse(true, true, true, true, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST (\\Noinferiors \\Noselect \\Marked \\Unmarked) \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldAcceptListResponse() {
+        assertThat(encoder.isAcceptable(new ListResponse(true, true, true,
+            true, false, false, "name", '.')))
+        .isTrue();
     }
 
     @Test
-    public void testNoInferiors() throws Exception {      
-        encoder.encode(new ListResponse(true, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST (\\Noinferiors) \".\" \"INBOX.name\"\r\n", writer.getString());
+    public void encoderShouldNotAcceptLsubResponse() {
+        assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isFalse();
+        assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
+        assertFalse(encoder.isAcceptable(null));
     }
 
     @Test
-    public void testNoSelect() throws Exception {
-        encoder.encode(new ListResponse(false, true, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST (\\Noselect) \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldNotAcceptImapMessage() {
+        assertThat(encoder.isAcceptable(context.mock(ImapMessage.class))).isFalse();
     }
 
     @Test
-    public void testMarked() throws Exception {
-        encoder.encode(new ListResponse(false, false, true, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST (\\Marked) \".\" \"INBOX.name\"\r\n", writer.getString());
-
+    public void encoderShouldNotAcceptNull() {
+        assertThat(encoder.isAcceptable(null)).isFalse();
     }
 
     @Test
-    public void testUnmarked() throws Exception {
-        encoder.encode(new ListResponse(false, false, false, true, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
-        assertEquals("* LIST (\\Unmarked) \".\" \"INBOX.name\"\r\n", writer.getString());
-
+	public void encoderShouldIncludeListCommand() throws Exception {
+        encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
+        assertThat(writer.getString()).startsWith("* LIST");
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1411959d/protocols/imap/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
index bb5b187..dc2f439 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
@@ -18,52 +18,92 @@
  ****************************************************************/
 package org.apache.james.imap.encode;
 
-import java.util.ArrayList;
-import java.util.List;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.imap.api.process.MailboxType;
 import org.apache.james.imap.encode.base.ByteImapResponseWriter;
 import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
 import org.apache.james.imap.message.response.ListResponse;
-import org.junit.Assert;
-import org.junit.Before;
+import org.apache.james.imap.message.response.XListResponse;
 import org.junit.Test;
 
 public class ListingEncodingUtilsTest  {
 
-    final String nameParameter = "LIST";
-    final String typeNameParameters = "A Type Name";
+    final String nameParameter = "mailbox";
+    final String typeNameParameters = "LIST";
     
-    List<String> attributesOutput;
-        
     private ByteImapResponseWriter writer = new ByteImapResponseWriter();
     private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
-    
-    @Before
-    public void setUp() throws Exception {
-        attributesOutput = new ArrayList<>();
-      
+
+    @Test
+    public void encodeShouldWriteNilDelimiterWhenUnassigned() throws Exception {
+        ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter, ((char) Character.UNASSIGNED));
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST (\\HasChildren) NIL \"mailbox\"\r\n");
     }
 
     @Test
-    public void testShouldAddHasChildrenToAttributes() throws Exception {
-        // Setup 
-        attributesOutput.add("\\HasChildren");
+    public void encodeShouldWriteAnyDelimiter() throws Exception {
+        ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter, '#');
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST (\\HasChildren) \"#\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldNotIncludeAttributeWhenNone() throws Exception {
+        ListResponse input = new ListResponse(false, false, false, false, false, false, nameParameter, '.');
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST () \".\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldAddHasChildrenToAttributes() throws Exception {
         ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter, '.');
             
-        // Exercise
         ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
-        Assert.assertEquals("* A Type Name (\\HasChildren) \".\" \"LIST\"\r\n", writer.getString());
+        assertThat(writer.getString()).isEqualTo("* LIST (\\HasChildren) \".\" \"mailbox\"\r\n");
     }
     
     @Test
-    public void testShouldAddHasNoChildrenToAttributes() throws Exception {
-        // Setup 
-        attributesOutput.add("\\HasNoChildren");
+    public void encodeShouldAddHasNoChildrenToAttributes() throws Exception {
         ListResponse input = new ListResponse(false, false, false, false, false, true, nameParameter, '.');
             
-        // Exercise
         ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
-        Assert.assertEquals("* A Type Name (\\HasNoChildren) \".\" \"LIST\"\r\n", writer.getString());
+        assertThat(writer.getString()).isEqualTo("* LIST (\\HasNoChildren) \".\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldAddSeveralAttributes() throws Exception {
+        ListResponse input = new ListResponse(true, true, false, false, false, true, nameParameter, '.');
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST (\\Noinferiors \\Noselect \\HasNoChildren) \".\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldAddMarkedAttribute() throws Exception {
+        ListResponse input = new ListResponse(false, false, true, false, false, false, nameParameter, '.');
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST (\\Marked) \".\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldAddUnmarkedAttribute() throws Exception {
+        ListResponse input = new ListResponse(false, false, false, true, false, false, nameParameter, '.');
+
+        ListingEncodingUtils.encodeListingResponse(typeNameParameters, composer, input);
+        assertThat(writer.getString()).isEqualTo("* LIST (\\Unmarked) \".\" \"mailbox\"\r\n");
+    }
+
+    @Test
+    public void encodeShouldAddXListAttributeWhenTypeIsInbox() throws Exception {
+        XListResponse input = new XListResponse(false, false, false, false, true, false, nameParameter, '.', MailboxType.INBOX);
 
+        ListingEncodingUtils.encodeListingResponse("XLIST", composer, input);
+        assertThat(writer.getString()).isEqualTo("* XLIST (\\HasChildren \\Inbox) \".\" \"mailbox\"\r\n");
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1411959d/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
new file mode 100644
index 0000000..7216dc8
--- /dev/null
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
@@ -0,0 +1,81 @@
+/****************************************************************
+ * 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.james.imap.encode;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertFalse;
+
+import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.process.MailboxType;
+import org.apache.james.imap.encode.base.ByteImapResponseWriter;
+import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
+import org.apache.james.imap.message.response.LSubResponse;
+import org.apache.james.imap.message.response.ListResponse;
+import org.apache.james.imap.message.response.XListResponse;
+import org.jmock.Mockery;
+import org.jmock.integration.junit4.JUnit4Mockery;
+import org.junit.Before;
+import org.junit.Test;
+
+public class XListResponseEncoderTest {
+
+    private XListResponseEncoder encoder;
+
+    private ByteImapResponseWriter writer = new ByteImapResponseWriter();
+    private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
+
+    private Mockery context = new JUnit4Mockery();
+    
+    @Before
+    public void setUp() throws Exception {
+        encoder = new XListResponseEncoder(context.mock(ImapEncoder.class));
+    }
+
+    @Test
+    public void encoderShouldAcceptXListResponse() {
+        assertThat(encoder.isAcceptable(new XListResponse(true, true, true,
+            true, false, false, "name", '.', MailboxType.INBOX)))
+        .isTrue();
+    }
+
+    @Test
+    public void encoderShouldNotAcceptLsubResponse() {
+        assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isFalse();
+        assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
+        assertFalse(encoder.isAcceptable(null));
+    }
+
+    @Test
+    public void encoderShouldNotAcceptImapMessage() {
+        assertThat(encoder.isAcceptable(context.mock(ImapMessage.class))).isFalse();
+    }
+
+    @Test
+    public void encoderShouldNotAcceptNull() {
+        assertThat(encoder.isAcceptable(null)).isFalse();
+    }
+
+    @Test
+	public void encoderShouldIncludeListCommand() throws Exception {
+        encoder.encode(new XListResponse(true, true, true,
+            true, false, false, "name", '.', MailboxType.INBOX), composer, new FakeImapSession());
+        assertThat(writer.getString()).startsWith("* XLIST");
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org