@Before public void setUp() throws Exception { dummySession = mock(ImapSession.class); final ImapEncoder stubNextEncoderInChain = mock(ImapEncoder.class); subject = new NamespaceResponseEncoder(stubNextEncoderInChain); mockComposer = mock(ImapResponseComposer.class); }
@Override protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException { final NamespaceResponse response = (NamespaceResponse) acceptableMessage; composer.untagged(); composer.commandName(ImapConstants.NAMESPACE_COMMAND_NAME); final List<NamespaceResponse.Namespace> personal = response.getPersonal(); encode(personal, composer); final List<NamespaceResponse.Namespace> users = response.getUsers(); encode(users, composer); final List<NamespaceResponse.Namespace> shared = response.getShared(); encode(shared, composer); composer.end(); }
@Test public void testNamespaceResponseIsAcceptable() { assertThat(subject.isAcceptable(mock(ImapMessage.class))).isFalse(); assertThat(subject .isAcceptable(new NamespaceResponse(null, null, null))).isTrue(); }
@Test public void testAllNullShouldWriteAllNIL() throws Exception { subject.doEncode(new NamespaceResponse(null, null, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(3)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
@Test public void testOnePersonalNamespaceShouldWritePrefixThenDeliminatorThenNilNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(namespaces, null, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
final ListRightsResponseEncoder listRightsResponseEncoder = new ListRightsResponseEncoder(myRightsResponseEncoder); final ACLResponseEncoder aclResponseEncoder = new ACLResponseEncoder(listRightsResponseEncoder); final NamespaceResponseEncoder namespaceEncoder = new NamespaceResponseEncoder(aclResponseEncoder); final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(namespaceEncoder, localizer); final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(statusResponseEncoder);
@Override protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException { final NamespaceResponse response = (NamespaceResponse) acceptableMessage; composer.untagged(); composer.commandName(ImapConstants.NAMESPACE_COMMAND_NAME); final List<NamespaceResponse.Namespace> personal = response.getPersonal(); encode(personal, composer); final List<NamespaceResponse.Namespace> users = response.getUsers(); encode(users, composer); final List<NamespaceResponse.Namespace> shared = response.getShared(); encode(shared, composer); composer.end(); }
@Test public void testOneSharedNamespaceShouldWriteNilThenPrefixThenDeliminatorThenNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(null, null, namespaces), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(1)).end(); }
final ListRightsResponseEncoder listRightsResponseEncoder = new ListRightsResponseEncoder(myRightsResponseEncoder); final ACLResponseEncoder aclResponseEncoder = new ACLResponseEncoder(listRightsResponseEncoder); final NamespaceResponseEncoder namespaceEncoder = new NamespaceResponseEncoder(aclResponseEncoder); final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(namespaceEncoder, localizer); final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(statusResponseEncoder);
private void encode(List<Namespace> namespaces, ImapResponseComposer composer) throws IOException { if (namespaces == null || namespaces.isEmpty()) { composer.nil(); } else { composer.openParen(); for (NamespaceResponse.Namespace namespace : namespaces) { encode(namespace, composer); } composer.closeParen(); } }
@Test public void testOneUsersNamespaceShouldWriteNilThenPrefixThenDeliminatorThenNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(null, namespaces, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(1)).nil(); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(1)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
private void encode(List<Namespace> namespaces, ImapResponseComposer composer) throws IOException { if (namespaces == null || namespaces.isEmpty()) { composer.nil(); } else { composer.openParen(); for (NamespaceResponse.Namespace namespace : namespaces) { encode(namespace, composer); } composer.closeParen(); } }
@Test public void testTwoPersonalNamespaceShouldWritePrefixThenDeliminatorThenNilNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; final String anotherPrefix = "Another Prefix"; final String anotherDeliminator = "^"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); namespaces.add(new NamespaceResponse.Namespace(anotherPrefix, anotherDeliminator.charAt(0))); subject.doEncode(new NamespaceResponse(namespaces, null, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(1)).closeParen(); inOrder.verify(mockComposer, times(1)).openParen(); inOrder.verify(mockComposer, times(1)).quote(anotherPrefix + anotherDeliminator); inOrder.verify(mockComposer, times(1)).quote(anotherDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(1)).end(); }