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 <[email protected]>
Authored: Fri Mar 24 09:55:23 2017 +0700
Committer: benwa <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]