JAMES-2553 Rewrite FixingGhostMailboxTest test in JUNIT 5

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

Branch: refs/heads/master
Commit: 485122c526728efb68000336a9e769a7e1c98b78
Parents: e6ab27c
Author: Benoit Tellier <[email protected]>
Authored: Mon Oct 1 11:58:13 2018 +0700
Committer: Benoit Tellier <[email protected]>
Committed: Thu Oct 4 17:48:43 2018 +0700

----------------------------------------------------------------------
 .../org/apache/james/CassandraExtension.java    |   6 +-
 .../apache/james/FixingGhostMailboxTest.java    | 134 +++++++++----------
 2 files changed, 70 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/485122c5/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraExtension.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraExtension.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraExtension.java
index ef7280f..41767e3 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraExtension.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraExtension.java
@@ -28,7 +28,11 @@ class CassandraExtension implements GuiceModuleTestExtension 
{
     private final DockerCassandraRule cassandra;
 
     CassandraExtension() {
-        this.cassandra = new DockerCassandraRule();
+        this(new DockerCassandraRule());
+    }
+
+    public CassandraExtension(DockerCassandraRule cassandra) {
+        this.cassandra = cassandra;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/485122c5/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
index e5f5f42..51e1e7d 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
@@ -25,6 +25,7 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
+import static 
org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
 import static 
org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -45,16 +46,18 @@ import 
org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTask;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV2Table;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.probe.ACLProbe;
+import org.apache.james.mailbox.store.search.PDFTextExtractor;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.modules.ACLProbeImpl;
 import org.apache.james.modules.MailboxProbeImpl;
-import org.apache.james.probe.DataProbe;
+import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.server.CassandraProbe;
 import org.apache.james.task.TaskManager;
 import org.apache.james.utils.DataProbeImpl;
@@ -64,11 +67,9 @@ import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.CassandraMailboxMergingRoutes;
 import org.apache.james.webadmin.routes.TasksRoutes;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.Session;
@@ -79,23 +80,33 @@ import io.restassured.http.ContentType;
 import io.restassured.specification.RequestSpecification;
 
 public class FixingGhostMailboxTest {
-
+    private static final int LIMIT_TO_10_MESSAGES = 10;
     private static final String NAME = "[0][0]";
     private static final String ARGUMENTS = "[0][1]";
     private static final String FIRST_MAILBOX = ARGUMENTS + ".list[0]";
 
-    @ClassRule
-    public static DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraJmapTestRule rule = 
CassandraJmapTestRule.defaultTestRule();
+    private static final String DOMAIN = "domain.tld";
+    private static final String CEDRIC = "cedric@" + DOMAIN;
+    private static final String BOB = "bob@" + DOMAIN;
+    private static final String ALICE = "alice@" + DOMAIN;
+    private static final String ALICE_SECRET = "aliceSecret";
+    private static final String BOB_SECRET = "bobSecret";
+
+    public static final DockerCassandraRule cassandra = new 
DockerCassandraRule();
+
+    @RegisterExtension
+    static JamesServerExtension testExtension = new 
JamesServerExtensionBuilder()
+        .extension(new EmbeddedElasticSearchExtension())
+        .extension(new CassandraExtension(cassandra))
+        .server(configuration -> 
GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(ALL_BUT_JMX_CASSANDRA_MODULE)
+            .overrideWith(binder -> 
binder.bind(TextExtractor.class).to(PDFTextExtractor.class))
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class)
+                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION)))
+        .build();
 
     private AccessToken accessToken;
-    private String domain;
-    private String alice;
-    private String bob;
-    private String cedric;
-    private GuiceJamesServer jmapServer;
     private MailboxProbeImpl mailboxProbe;
     private ACLProbe aclProbe;
     private Session session;
@@ -103,45 +114,35 @@ public class FixingGhostMailboxTest {
     private MailboxId aliceGhostInboxId;
     private MailboxPath aliceInboxPath;
     private ComposedMessageId message2;
-    private WebAdminGuiceProbe webAdminProbe;
     private RequestSpecification webadminSpecification;
 
-    @Before
-    public void setup() throws Throwable {
-        jmapServer = rule.jmapServer(cassandra.getModule(),
-            binder -> binder.bind(WebAdminConfiguration.class)
-            .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
-        jmapServer.start();
-        webAdminProbe = jmapServer.getProbe(WebAdminGuiceProbe.class);
-        mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
-        aclProbe = jmapServer.getProbe(ACLProbeImpl.class);
+    @BeforeEach
+    void setup(GuiceJamesServer server) throws Throwable {
+        WebAdminGuiceProbe webAdminProbe = 
server.getProbe(WebAdminGuiceProbe.class);
+        mailboxProbe = server.getProbe(MailboxProbeImpl.class);
+        aclProbe = server.getProbe(ACLProbeImpl.class);
 
         RestAssured.requestSpecification = new RequestSpecBuilder()
             .setContentType(ContentType.JSON)
             .setAccept(ContentType.JSON)
             
.setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort())
             .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
         webadminSpecification = 
WebAdminUtils.buildRequestSpecification(webAdminProbe.getWebAdminPort())
             .build();
 
-        domain = "domain.tld";
-        alice = "alice@" + domain;
-        String alicePassword = "aliceSecret";
-        bob = "bob@" + domain;
-        cedric = "cedric@" + domain;
-        DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
-        dataProbe.addDomain(domain);
-        dataProbe.addUser(alice, alicePassword);
-        dataProbe.addUser(bob, "bobSecret");
-        accessToken = authenticateJamesUser(baseUri(jmapServer), alice, 
alicePassword);
+        server.getProbe(DataProbeImpl.class).fluent()
+            .addDomain(DOMAIN)
+            .addUser(ALICE, ALICE_SECRET)
+            .addUser(BOB, BOB_SECRET);
+        accessToken = authenticateJamesUser(baseUri(server), ALICE, 
ALICE_SECRET);
 
         session = Cluster.builder()
             .addContactPoint(cassandra.getIp())
             .withPort(cassandra.getMappedPort(9042))
             .build()
-            .connect(jmapServer.getProbe(CassandraProbe.class).getKeyspace());
+            .connect(server.getProbe(CassandraProbe.class).getKeyspace());
 
         simulateGhostMailboxBug();
     }
@@ -149,16 +150,16 @@ public class FixingGhostMailboxTest {
     private void simulateGhostMailboxBug() throws MailboxException, 
IOException {
         // State before ghost mailbox bug
         // Alice INBOX is delegated to Bob and contains one message
-        aliceInboxPath = MailboxPath.forUser(alice, MailboxConstants.INBOX);
-        aliceGhostInboxId = 
mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
-        aclProbe.addRights(aliceInboxPath, bob, MailboxACL.FULL_RIGHTS);
-        message1 = mailboxProbe.appendMessage(alice, aliceInboxPath, 
AppendCommand.from(generateMessageContent()));
-        rule.await();
+        aliceInboxPath = MailboxPath.forUser(ALICE, MailboxConstants.INBOX);
+        aliceGhostInboxId = 
mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
+        aclProbe.addRights(aliceInboxPath, BOB, MailboxACL.FULL_RIGHTS);
+        message1 = mailboxProbe.appendMessage(ALICE, aliceInboxPath, 
AppendCommand.from(generateMessageContent()));
+        testExtension.await();
 
         // Simulate ghost mailbox bug
         session.execute(delete().from(CassandraMailboxPathV2Table.TABLE_NAME)
             .where(eq(CassandraMailboxPathV2Table.NAMESPACE, 
MailboxConstants.USER_NAMESPACE))
-            .and(eq(CassandraMailboxPathV2Table.USER, alice))
+            .and(eq(CassandraMailboxPathV2Table.USER, ALICE))
             .and(eq(CassandraMailboxPathV2Table.MAILBOX_NAME, 
MailboxConstants.INBOX)));
 
         // trigger provisioning
@@ -171,8 +172,8 @@ public class FixingGhostMailboxTest {
             .statusCode(200);
 
         // Received a new message
-        message2 = mailboxProbe.appendMessage(alice, aliceInboxPath, 
AppendCommand.from(generateMessageContent()));
-        rule.await();
+        message2 = mailboxProbe.appendMessage(ALICE, aliceInboxPath, 
AppendCommand.from(generateMessageContent()));
+        testExtension.await();
     }
 
     private Message generateMessageContent() throws IOException {
@@ -182,21 +183,16 @@ public class FixingGhostMailboxTest {
             .build();
     }
 
-    @After
-    public void teardown() {
-        jmapServer.stop();
-    }
-
     @Test
-    public void ghostMailboxBugShouldChangeMailboxId() throws Exception {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
+    void ghostMailboxBugShouldChangeMailboxId() {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
 
         assertThat(aliceGhostInboxId).isNotEqualTo(newAliceInbox);
     }
 
     @Test
-    public void ghostMailboxBugShouldDiscardOldContent() throws Exception {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
+    void ghostMailboxBugShouldDiscardOldContent() {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -212,8 +208,8 @@ public class FixingGhostMailboxTest {
     }
 
     @Test
-    public void webadminCanMergeTwoMailboxes() throws Exception {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
+    void webadminCanMergeTwoMailboxes() {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
 
         fixGhostMailboxes(newAliceInbox);
 
@@ -232,9 +228,9 @@ public class FixingGhostMailboxTest {
     }
 
     @Test
-    public void webadminCanMergeTwoMailboxesRights() throws Exception {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
-        aclProbe.addRights(aliceInboxPath, cedric, MailboxACL.FULL_RIGHTS);
+    void webadminCanMergeTwoMailboxesRights() throws Exception {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
+        aclProbe.addRights(aliceInboxPath, CEDRIC, MailboxACL.FULL_RIGHTS);
 
         fixGhostMailboxes(newAliceInbox);
 
@@ -246,14 +242,14 @@ public class FixingGhostMailboxTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxes"))
-            .body(FIRST_MAILBOX + ".sharedWith", hasKey(bob))
-            .body(FIRST_MAILBOX + ".sharedWith", hasKey(cedric));
+            .body(FIRST_MAILBOX + ".sharedWith", hasKey(BOB))
+            .body(FIRST_MAILBOX + ".sharedWith", hasKey(CEDRIC));
     }
 
     @Test
-    public void oldGhostedMailboxShouldNoMoreBeAccessible() throws Exception {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
-        aclProbe.addRights(aliceInboxPath, cedric, MailboxACL.FULL_RIGHTS);
+    void oldGhostedMailboxShouldNoMoreBeAccessible() throws Exception {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
+        aclProbe.addRights(aliceInboxPath, CEDRIC, MailboxACL.FULL_RIGHTS);
 
         fixGhostMailboxes(newAliceInbox);
 
@@ -269,8 +265,8 @@ public class FixingGhostMailboxTest {
     }
 
     @Test
-    public void mergingMailboxTaskShouldBeInformative() {
-        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, alice, 
MailboxConstants.INBOX);
+    void mergingMailboxTaskShouldBeInformative() {
+        MailboxId newAliceInbox = 
mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, 
MailboxConstants.INBOX);
 
         String taskId = fixGhostMailboxes(newAliceInbox);
 
@@ -308,7 +304,7 @@ public class FixingGhostMailboxTest {
             .spec(webadminSpecification)
             .basePath(TasksRoutes.BASE)
             .get(taskId + "/await");
-        rule.await();
+        testExtension.await();
         return taskId;
     }
 


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

Reply via email to