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