You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/03/22 02:03:49 UTC
[james-project] 20/25: JAMES-3722 Manage SocketChannel in IMAP QRESYNC test with JUNIT
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 4d9962ae7a7ebfaa7a31f5485937f8943af8db80
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Mar 9 17:13:00 2022 +0700
JAMES-3722 Manage SocketChannel in IMAP QRESYNC test with JUNIT
---
.../james/imapserver/netty/IMAPServerTest.java | 328 ++++++++-------------
1 file changed, 131 insertions(+), 197 deletions(-)
diff --git a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
index 058884e..0aa7f20 100644
--- a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
+++ b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
@@ -1437,7 +1437,6 @@ class IMAPServerTest {
@Nested
class QResync {
IMAPServer imapServer;
- private int port;
private MailboxSession mailboxSession;
private MessageManager inbox;
private SocketChannel clientConnection;
@@ -1445,7 +1444,7 @@ class IMAPServerTest {
@BeforeEach
void beforeEach() throws Exception {
imapServer = createImapServer("imapServer.xml");
- port = imapServer.getListenAddresses().get(0).getPort();
+ int port = imapServer.getListenAddresses().get(0).getPort();
mailboxSession = memoryIntegrationResources.getMailboxManager().createSystemSession(USER);
memoryIntegrationResources.getMailboxManager()
.createMailbox(MailboxPath.inbox(USER), mailboxSession);
@@ -1454,11 +1453,16 @@ class IMAPServerTest {
clientConnection = SocketChannel.open();
clientConnection.connect(new InetSocketAddress(LOCALHOST_IP, port));
setUpTestingData();
+
+ clientConnection = SocketChannel.open();
+ clientConnection.connect(new InetSocketAddress(LOCALHOST_IP, port));
+ readBytes(clientConnection);
}
@AfterEach
- void tearDown() {
+ void tearDown() throws Exception {
imapServer.destroy();
+ clientConnection.close();
}
@Test
@@ -1470,17 +1474,13 @@ class IMAPServerTest {
.getMailbox(MailboxPath.inbox(USER), mailboxSession)
.getMailboxEntity().getUidValidity();
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d 88 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d 88 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("VANISHED"))
.isEmpty();
}
@@ -1500,17 +1500,13 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.delete(ImmutableList.of(MessageUid.of(10)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10"))
.hasSize(1);
}
@@ -1530,17 +1526,13 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.delete(ImmutableList.of(MessageUid.of(10)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10"))
.hasSize(1);
}
@@ -1561,17 +1553,13 @@ class IMAPServerTest {
MessageUid.of(25), MessageUid.of(26),
MessageUid.of(32)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 5:11,28:36 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 5:11,28:36 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10:11,32"))
.hasSize(1);
}
@@ -1592,21 +1580,17 @@ class IMAPServerTest {
MessageUid.of(25), MessageUid.of(26),
MessageUid.of(32)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
// MSN 1 => UID 2 MATCH
// MSN 13 => UID 17 MATCH
// MSN 28 => UID 30 MISMATCH stored value is 34
// Thus we know we can skip resynchronisation for UIDs up to 17
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 1:37 (1,13,28 2,17,30)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 1:37 (1,13,28 2,17,30)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 25:26,32"))
.hasSize(1);
}
@@ -1627,21 +1611,17 @@ class IMAPServerTest {
MessageUid.of(25), MessageUid.of(26),
MessageUid.of(32)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
// MSN 1 => UID 2 MATCH
// MSN 13 => UID 17 MATCH
// MSN 28 => UID 32 MISMATCH stored value is 34 (32 not being stored)
// Thus we know we can skip resynchronisation for UIDs up to 17
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 1:37 (1,13,28 2,17,32)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 1:37 (1,13,28 2,17,32)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 25:26,32"))
.hasSize(1);
}
@@ -1661,17 +1641,13 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.delete(ImmutableList.of(MessageUid.of(10)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10"))
.hasSize(1);
}
@@ -1691,17 +1667,13 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.delete(ImmutableList.of(MessageUid.of(10)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10"))
.hasSize(1);
}
@@ -1722,17 +1694,13 @@ class IMAPServerTest {
MessageUid.of(25), MessageUid.of(26),
MessageUid.of(32)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 SELECT INBOX (QRESYNC (%d %d 2:37 (1,10,28 2,11,29)))\r\n", uidValidity.asLong(), highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 10:12,25:26,32"))
.hasSize(1);
}
@@ -1753,18 +1721,14 @@ class IMAPServerTest {
MessageUid.of(25), MessageUid.of(26),
MessageUid.of(32)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap("I00104 SELECT INBOX\r\n".getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap("I00104 SELECT INBOX\r\n".getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("I00104 OK [READ-WRITE] SELECT completed."));
- server.write(ByteBuffer.wrap(("a2 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(("a2 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- List<String> replies = readStringUntil(server, s -> s.contains("a2 OK ENABLE completed."));
+ List<String> replies = readStringUntil(clientConnection, s -> s.contains("a2 OK ENABLE completed."));
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(replies)
.filteredOn(s -> s.contains("* OK [HIGHESTMODSEQ 41] Highest"))
@@ -1783,16 +1747,12 @@ class IMAPServerTest {
@Test
void fetchShouldAllowChangedSinceModifier() throws Exception {
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.ANSWERED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
@@ -1800,34 +1760,30 @@ class IMAPServerTest {
ModSeq highestModSeq = memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.getMetaData(false, mailboxSession, MessageManager.MailboxMetaData.FetchGroup.NO_COUNT)
.getHighestModSeq();
- server.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 1:37 (FLAGS) (CHANGEDSINCE %d)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 1:37 (FLAGS) (CHANGEDSINCE %d)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK FETCH completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK FETCH completed.")))
.filteredOn(s -> s.contains("* 10 FETCH (MODSEQ (39) FLAGS (\\Answered \\Recent) UID 10)"))
.hasSize(1);
}
@Test
void fetchShouldNotReturnChangedItemsOutOfRange() throws Exception {
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
inbox.setFlags(new Flags(Flags.Flag.ANSWERED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
ModSeq highestModSeq = memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.getMetaData(false, mailboxSession, MessageManager.MailboxMetaData.FetchGroup.NO_COUNT)
.getHighestModSeq();
- server.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 12:37 (FLAGS) (CHANGEDSINCE %d)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 12:37 (FLAGS) (CHANGEDSINCE %d)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK FETCH completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK FETCH completed.")))
.filteredOn(s -> s.contains("FLAGS")) // No FLAGS FETCH responses
.hasSize(1);
}
@@ -1836,16 +1792,12 @@ class IMAPServerTest {
void fetchShouldSupportVanishedModifiedWithEarlierTag() throws Exception {
inbox.delete(ImmutableList.of(MessageUid.of(14)), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.ANSWERED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
@@ -1855,25 +1807,21 @@ class IMAPServerTest {
ModSeq highestModSeq = memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.getMetaData(false, mailboxSession, MessageManager.MailboxMetaData.FetchGroup.NO_COUNT)
.getHighestModSeq();
- server.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 12:37 (FLAGS) (CHANGEDSINCE %d VANISHED)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 UID FETCH 12:37 (FLAGS) (CHANGEDSINCE %d VANISHED)\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK FETCH completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK FETCH completed.")))
.filteredOn(s -> s.contains("* VANISHED (EARLIER) 14"))
.hasSize(1);
}
@Test
void unsolicitedNotificationsShouldBeSent() throws Exception {
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.ANSWERED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
@@ -1885,25 +1833,21 @@ class IMAPServerTest {
ModSeq highestModSeq = memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.getMetaData(false, mailboxSession, MessageManager.MailboxMetaData.FetchGroup.NO_COUNT)
.getHighestModSeq();
- server.write(ByteBuffer.wrap(String.format("I00104 NOOP\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(String.format("I00104 NOOP\r\n", highestModSeq.asLong()).getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK NOOP completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK NOOP completed.")))
.filteredOn(s -> s.contains("* VANISHED 14"))
.hasSize(1);
}
@Test
void expungeShouldReturnVanishedWhenQResyncIsActive() throws Exception {
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
@@ -1918,25 +1862,21 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(31)), mailboxSession);
- server.write(ByteBuffer.wrap(("I00104 EXPUNGE\r\n").getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(("I00104 EXPUNGE\r\n").getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [HIGHESTMODSEQ 44] EXPUNGE completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [HIGHESTMODSEQ 44] EXPUNGE completed.")))
.filteredOn(s -> s.contains("* VANISHED 10:12,25:26,31"))
.hasSize(1);
}
@Test
void uidExpungeShouldReturnExpungededWhenQResyncIsActive() throws Exception {
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
-
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(10)), mailboxSession);
@@ -1951,9 +1891,9 @@ class IMAPServerTest {
memoryIntegrationResources.getMailboxManager().getMailbox(MailboxPath.inbox(USER), mailboxSession)
.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.one(MessageUid.of(31)), mailboxSession);
- server.write(ByteBuffer.wrap(("I00104 UID EXPUNGE 1:37\r\n").getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(("I00104 UID EXPUNGE 1:37\r\n").getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("I00104 OK [HIGHESTMODSEQ 44] EXPUNGE completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("I00104 OK [HIGHESTMODSEQ 44] EXPUNGE completed.")))
.filteredOn(s -> s.contains("* VANISHED 10:12,25:26,31"))
.hasSize(1);
}
@@ -1962,20 +1902,17 @@ class IMAPServerTest {
void implicitMailboxSelectionChangesShouldReturnClosedNotifications() throws Exception {
memoryIntegrationResources.getMailboxManager()
.createMailbox(MailboxPath.forUser(USER, "other"), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
- server.write(ByteBuffer.wrap(("a3 SELECT other\r\n").getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(("a3 SELECT other\r\n").getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("a3 OK [READ-WRITE] SELECT completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("a3 OK [READ-WRITE] SELECT completed.")))
.filteredOn(s -> s.contains("* OK [CLOSED]"))
.hasSize(1);
}
@@ -1985,21 +1922,18 @@ class IMAPServerTest {
// See https://www.rfc-editor.org/errata_search.php?rfc=5162
memoryIntegrationResources.getMailboxManager()
.createMailbox(MailboxPath.forUser(USER, "other"), mailboxSession);
- SocketChannel server = SocketChannel.open();
- server.connect(new InetSocketAddress(LOCALHOST_IP, port));
- readBytes(server);
- server.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
- readBytes(server);
- server.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a1 OK ENABLE completed."));
+ clientConnection.write(ByteBuffer.wrap(String.format("a0 LOGIN %s %s\r\n", USER.asString(), USER_PASS).getBytes(StandardCharsets.UTF_8)));
+ readBytes(clientConnection);
+ clientConnection.write(ByteBuffer.wrap(("a1 ENABLE QRESYNC\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a1 OK ENABLE completed."));
- server.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
- readStringUntil(server, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
+ clientConnection.write(ByteBuffer.wrap(("a2 SELECT INBOX\r\n").getBytes(StandardCharsets.UTF_8)));
+ readStringUntil(clientConnection, s -> s.contains("a2 OK [READ-WRITE] SELECT completed."));
- server.write(ByteBuffer.wrap(("a3 CLOSE\r\n").getBytes(StandardCharsets.UTF_8)));
+ clientConnection.write(ByteBuffer.wrap(("a3 CLOSE\r\n").getBytes(StandardCharsets.UTF_8)));
- assertThat(readStringUntil(server, s -> s.contains("a3 OK CLOSE completed.")))
+ assertThat(readStringUntil(clientConnection, s -> s.contains("a3 OK CLOSE completed.")))
.isNotNull();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org