JAMES-1978 Make Subscription tests more generic

With many thanks to:

    Nguyen Thi Mai and Le Thi Huong Lai for their work on Quotas and In memory 
subscriptions
    Tran Thi & My Linh for their work on TooMuchLines
    txc1996 & Van Thanh For improving readability of SMTPAuthIsSuccessfulTest
    thienan090196 & Tran Thi & My Linh for their tests on RecipientIsLocalTest

>From Passerelle Numeriques VietNam


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

Branch: refs/heads/master
Commit: 4b11646e11a89240c99d893f3ed34f69d913795e
Parents: f1ea122
Author: benwa <btell...@linagora.com>
Authored: Fri Mar 24 09:55:23 2017 +0700
Committer: benwa <btell...@linagora.com>
Committed: Wed Mar 29 08:00:16 2017 +0700

----------------------------------------------------------------------
 .../user/CassandraSubscriptionMapperTest.java   | 158 ++-----------------
 .../user/InMemorySubscriptionMapperTest.java    | 107 +------------
 .../store/user/SubscriptionMapperTest.java      | 128 +++++++++++++++
 3 files changed, 144 insertions(+), 249 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4b11646e/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index 5637108..63510ad 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -18,162 +18,24 @@
  ****************************************************************/
 package org.apache.james.mailbox.cassandra.user;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.store.user.model.Subscription;
-import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.datastax.driver.core.Session;
+import org.apache.james.mailbox.store.user.SubscriptionMapper;
+import org.apache.james.mailbox.store.user.SubscriptionMapperTest;
+import org.junit.After;
 
-/**
- * Runs tests for SubscriptionMapper.
- * 
- */
-public class CassandraSubscriptionMapperTest {
+public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
-    private static final Logger LOG = 
LoggerFactory.getLogger(CassandraSubscriptionMapperTest.class);
     private static final CassandraCluster CLUSTER = 
CassandraCluster.create(new CassandraSubscriptionModule());
-    private static Session session;
-    private static CassandraSubscriptionMapper mapper;
-    private static Map<String, List<SimpleSubscription>> subscriptionList;
-    private static final int USERS = 5;
-    private static final int MAILBOX_NO = 5;
 
-    @Before
-    public void setUp() throws Exception {
+    @Override
+    protected SubscriptionMapper createSubscriptionMapper() {
         CLUSTER.ensureAllTables();
-        CLUSTER.clearAllTables();
-        session = CLUSTER.getConf();
-        mapper = new CassandraSubscriptionMapper(session);
-        fillSubscriptionList();
-    }
-
-    private static void fillSubscriptionList() {
-        LOG.info("Creating subscription list");
-        SimpleSubscription subscription;
-        String user, mailbox;
-        subscriptionList = new HashMap<>();
-        for (int i = 0; i < USERS; i++) {
-            user = "user" + i;
-            final List<SimpleSubscription> mailboxes = new ArrayList<>();
-            subscriptionList.put(user, mailboxes);
-
-            for (int j = 0; j < MAILBOX_NO; j++) {
-                if (j == 0) {
-                    mailbox = "INBOX";
-                } else {
-                    mailbox = "BOX" + j;
-                }
-                if ((i % 2 == 0) && (j > 0)) {
-                    continue;
-                }
-                subscription = new SimpleSubscription(user, mailbox);
-                mailboxes.add(subscription);
-                mapper.save(subscription);
-                LOG.info("Adding subscription " + subscription);
-            }
-        }
-    }
-
-    /**
-     * Test of findMailboxSubscriptionForUser method, of class
-     * CassandraSubscriptionMapper.
-     */
-    @Test
-    public void testFindMailboxSubscriptionForUser() throws Exception {
-        LOG.info("findMailboxSubscriptionForUser");
-
-        final SimpleSubscription fake1 = new SimpleSubscription("user1", 
"FAKEBOX");
-        final SimpleSubscription fake2 = new SimpleSubscription("fakeUser", 
"INBOX");
-
-        for (String user : subscriptionList.keySet()) {
-            LOG.info("Searching for all subscriptions for user:{}", user);
-            for (SimpleSubscription subscription : subscriptionList.get(user)) 
{
-                final Subscription result = 
mapper.findMailboxSubscriptionForUser(user, subscription.getMailbox());
-                assertEquals(subscription.getMailbox(), result.getMailbox());
-                assertEquals(subscription.getUser(), result.getUser());
-            }
-        }
-        assertNull(mapper.findMailboxSubscriptionForUser(fake1.getUser(), 
fake1.getMailbox()));
-        assertNull(mapper.findMailboxSubscriptionForUser(fake2.getUser(), 
fake2.getMailbox()));
-    }
-
-    /**
-     * Test of save method, of class CassandraSubscriptionMapper.
-     */
-    @Test
-    public void testSave() throws Exception {
-        LOG.info("save");
-        final List<SimpleSubscription> subscriptions = mapper.list();
-        for (String user : subscriptionList.keySet()) {
-            for (Subscription subscription : subscriptionList.get(user)) {
-                assertTrue(containSubscription(subscriptions, subscription));
-            }
-        }
-    }
-
-    /**
-     * Test of findSubscriptionsForUser method, of class
-     * CassandraSubscriptionMapper.
-     */
-    @Test
-    public void testFindSubscriptionsForUser() throws Exception {
-        LOG.info("findSubscriptionsForUser");
-        final SimpleSubscription fake2 = new SimpleSubscription("fakeUser", 
"INBOX");
-        for (String user : subscriptionList.keySet()) {
-            LOG.info("Searching for all subscriptions for user: " + user);
-            final List<Subscription> found = 
mapper.findSubscriptionsForUser(user);
-            assertEquals(subscriptionList.get(user).size(), found.size());
-            // TODO: patch Subscription to implement equals
-            // 
assertTrue(subscriptionList.get(user).containsAll(foundSubscriptions));
-            // 
assertTrue(foundSubscriptions.containsAll(subscriptionList.get(user)));
-            // assertFalse(foundSubscriptions.contains(fake1));
-            // assertFalse(foundSubscriptions.contains(fake2));
-        }
-        // TODO: check what value we should return in case of no subscriptions:
-        // null or empty list
-        
assertEquals(mapper.findSubscriptionsForUser(fake2.getMailbox()).size(), 0);
-
-    }
-
-    /**
-     * Test of delete method, of class CassandraSubscriptionMapper.
-     */
-    @Test
-    public void testDelete() throws Exception {
-        LOG.info("delete");
-        for (String user : subscriptionList.keySet()) {
-            LOG.info("Deleting subscriptions for user: " + user);
-            for (SimpleSubscription subscription : subscriptionList.get(user)) 
{
-                LOG.info("Deleting subscription : " + subscription);
-                mapper.delete(subscription);
-                assertFalse(containSubscription(mapper.list(), subscription));
-            }
-        }
-        fillSubscriptionList();
+        return new CassandraSubscriptionMapper(CLUSTER.getConf());
     }
 
-    private boolean containSubscription(List<SimpleSubscription> 
subscriptions, Subscription subscription) {
-        for (SimpleSubscription s : subscriptions) {
-            if (subscription.getMailbox().equals(s.getMailbox()) && 
subscription.getUser().equals(s.getUser())) {
-                return true;
-            }
-        }
-        return false;
+    @After
+    public void tearDown() {
+        CLUSTER.clearAllTables();
     }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4b11646e/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapperTest.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapperTest.java
index 8ef5b2e..d9f227d 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapperTest.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapperTest.java
@@ -19,108 +19,13 @@
 
 package org.apache.james.mailbox.inmemory.user;
 
-import static org.assertj.core.api.Assertions.assertThat;
+import org.apache.james.mailbox.store.user.SubscriptionMapper;
+import org.apache.james.mailbox.store.user.SubscriptionMapperTest;
 
-import java.util.List;
+public class InMemorySubscriptionMapperTest extends SubscriptionMapperTest {
 
-import org.apache.james.mailbox.store.user.model.Subscription;
-import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
-import org.junit.Before;
-import org.junit.Test;
-
-public class InMemorySubscriptionMapperTest {
-
-    private static final String USER_1 = "user1";
-    private static final String USER_2 = "user2";
-    private static final String MAILBOX_1 = "mailbox1";
-    private static final String MAILBOX_2 = "mailbox2";
-
-    private InMemorySubscriptionMapper testee;
-
-    @Before
-    public void setUp() {
-        testee = new InMemorySubscriptionMapper();
-    }
-
-    @Test
-    public void findSubscriptionsForUserShouldBeEmptyByDefault() {
-        List<Subscription> subscriptions = 
testee.findSubscriptionsForUser(USER_1);
-
-        assertThat(subscriptions).isEmpty();
-    }
-
-    @Test
-    public void findMailboxSubscriptionForUserShouldReturnNullByDefault() {
-        Subscription subscriptions = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
-
-        assertThat(subscriptions).isNull();
-    }
-
-    @Test
-    public void findMailboxSubscriptionForUserShouldReturnSubscription() {
-        SimpleSubscription subscription = new SimpleSubscription(USER_1, 
MAILBOX_1);
-        testee.save(subscription);
-
-        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
-
-        assertThat(results).containsOnly(subscription);
-    }
-
-    @Test
-    public void findSubscriptionsForUserShouldReturnSubscriptions() {
-        SimpleSubscription subscription1 = new SimpleSubscription(USER_1, 
MAILBOX_1);
-        SimpleSubscription subscription2 = new SimpleSubscription(USER_1, 
MAILBOX_2);
-        testee.save(subscription1);
-        testee.save(subscription2);
-
-        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
-
-        assertThat(results).containsOnly(subscription1, subscription2);
-    }
-
-    @Test
-    public void findSubscriptionsForUserShouldReturnOnlyUserSubscriptions() {
-        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
-        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_2,MAILBOX_2);
-        testee.save(subscription1);
-        testee.save(subscription2);
-
-        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
-
-        assertThat(results).containsOnly(subscription1);
-    }
-
-    @Test
-    public void 
findMailboxSubscriptionForUserShouldReturnOnlyUserSubscriptions() {
-        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
-        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_2,MAILBOX_1);
-        testee.save(subscription1);
-        testee.save(subscription2);
-
-        Subscription result = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
-
-        assertThat(result).isEqualTo(result);
-    }
-
-    @Test
-    public void 
findMailboxSubscriptionForUserShouldReturnSubscriptionConcerningTheMailbox() {
-        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
-        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_1,MAILBOX_2);
-        testee.save(subscription1);
-        testee.save(subscription2);
-
-        Subscription result = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
-
-        assertThat(result).isEqualTo(result);
-    }
-
-    @Test
-    public void deleteShouldRemoveSubscription() {
-        SimpleSubscription subscription = new SimpleSubscription(USER_1, 
MAILBOX_1);
-        testee.save(subscription);
-
-        testee.delete(subscription);
-
-        assertThat(testee.findSubscriptionsForUser(USER_1)).isEmpty();
+    @Override
+    protected SubscriptionMapper createSubscriptionMapper() {
+        return new InMemorySubscriptionMapper();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4b11646e/mailbox/store/src/test/java/org/apache/james/mailbox/store/user/SubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/user/SubscriptionMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/user/SubscriptionMapperTest.java
new file mode 100644
index 0000000..e4feba0
--- /dev/null
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/user/SubscriptionMapperTest.java
@@ -0,0 +1,128 @@
+/****************************************************************
+ * 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.mailbox.store.user;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.james.mailbox.exception.SubscriptionException;
+import org.apache.james.mailbox.store.user.model.Subscription;
+import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
+import org.junit.Before;
+import org.junit.Test;
+
+public abstract class SubscriptionMapperTest {
+    private static final String USER_1 = "user1";
+    private static final String USER_2 = "user2";
+    private static final String MAILBOX_1 = "mailbox1";
+    private static final String MAILBOX_2 = "mailbox2";
+
+    private SubscriptionMapper testee;
+
+    protected abstract SubscriptionMapper createSubscriptionMapper();
+
+    @Before
+    public void setUp() {
+        testee = createSubscriptionMapper();
+    }
+
+    @Test
+    public void findSubscriptionsForUserShouldBeEmptyByDefault() throws 
SubscriptionException {
+        List<Subscription> subscriptions = 
testee.findSubscriptionsForUser(USER_1);
+
+        assertThat(subscriptions).isEmpty();
+    }
+
+    @Test
+    public void findMailboxSubscriptionForUserShouldReturnNullByDefault() 
throws SubscriptionException {
+        Subscription subscriptions = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
+
+        assertThat(subscriptions).isNull();
+    }
+
+    @Test
+    public void findMailboxSubscriptionForUserShouldReturnSubscription() 
throws SubscriptionException {
+        SimpleSubscription subscription = new SimpleSubscription(USER_1, 
MAILBOX_1);
+        testee.save(subscription);
+
+        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
+
+        assertThat(results).containsOnly(subscription);
+    }
+
+    @Test
+    public void findSubscriptionsForUserShouldReturnSubscriptions() throws 
SubscriptionException {
+        SimpleSubscription subscription1 = new SimpleSubscription(USER_1, 
MAILBOX_1);
+        SimpleSubscription subscription2 = new SimpleSubscription(USER_1, 
MAILBOX_2);
+        testee.save(subscription1);
+        testee.save(subscription2);
+
+        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
+
+        assertThat(results).containsOnly(subscription1, subscription2);
+    }
+
+    @Test
+    public void findSubscriptionsForUserShouldReturnOnlyUserSubscriptions() 
throws SubscriptionException {
+        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
+        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_2,MAILBOX_2);
+        testee.save(subscription1);
+        testee.save(subscription2);
+
+        List<Subscription> results = testee.findSubscriptionsForUser(USER_1);
+
+        assertThat(results).containsOnly(subscription1);
+    }
+
+    @Test
+    public void 
findMailboxSubscriptionForUserShouldReturnOnlyUserSubscriptions() throws 
SubscriptionException {
+        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
+        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_2,MAILBOX_1);
+        testee.save(subscription1);
+        testee.save(subscription2);
+
+        Subscription result = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
+
+        assertThat(result).isEqualTo(result);
+    }
+
+    @Test
+    public void 
findMailboxSubscriptionForUserShouldReturnSubscriptionConcerningTheMailbox() 
throws SubscriptionException {
+        SimpleSubscription subscription1 = new 
SimpleSubscription(USER_1,MAILBOX_1);
+        SimpleSubscription subscription2 = new 
SimpleSubscription(USER_1,MAILBOX_2);
+        testee.save(subscription1);
+        testee.save(subscription2);
+
+        Subscription result = 
testee.findMailboxSubscriptionForUser(USER_1,MAILBOX_1);
+
+        assertThat(result).isEqualTo(result);
+    }
+
+    @Test
+    public void deleteShouldRemoveSubscription() throws SubscriptionException {
+        SimpleSubscription subscription = new SimpleSubscription(USER_1, 
MAILBOX_1);
+        testee.save(subscription);
+
+        testee.delete(subscription);
+
+        assertThat(testee.findSubscriptionsForUser(USER_1)).isEmpty();
+    }
+}


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

Reply via email to