From 8801e3a7b002cd35d6255c27c3152e1fb87d86ae Mon Sep 17 00:00:00 2001
From: benwa <btellier@linagora.com>
Date: Mon, 11 May 2015 12:22:12 +0200
Subject: [PATCH] JWC-129 Create tests for LIST command across user and
 namespace.

---
 .../cassandra/CassandraMailboxTestModule.java      |  5 ++-
 .../cassandra/host/CassandraHostSystem.java        |  9 ++++-
 .../org/apache/james/mpt/host/ImapHostSystem.java  |  3 ++
 .../mpt/imapmailbox/MailboxCreationDelegate.java   | 46 ++++++++++++++++++++++
 .../mpt/imapmailbox/suite/AuthenticatedState.java  | 41 ++++++++++++++++++-
 .../imapmailbox/hbase/HBaseMailboxTestModule.java  |  4 +-
 .../imapmailbox/hbase/host/HBaseHostSystem.java    | 10 ++++-
 .../inmemory/InMemoryMailboxTestModule.java        |  4 +-
 .../inmemory/host/InMemoryHostSystem.java          |  9 ++++-
 .../mpt/imapmailbox/jcr/JcrMailboxTestModule.java  |  4 +-
 .../mpt/imapmailbox/jcr/host/JCRHostSystem.java    | 10 +++--
 .../mpt/imapmailbox/jpa/JpaMailboxTestModule.java  |  4 +-
 .../mpt/imapmailbox/jpa/host/JPAHostSystem.java    | 10 ++++-
 .../maildir/MaildirMailboxTestModule.java          |  4 +-
 .../maildir/host/MaildirHostSystem.java            | 12 +++++-
 15 files changed, 154 insertions(+), 21 deletions(-)
 create mode 100644 impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/MailboxCreationDelegate.java

diff --git a/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java b/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
index b1f4f65..e906c2c 100644
--- a/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
+++ b/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
@@ -1,6 +1,7 @@
 package org.apache.james.mpt.imapmailbox.cassandra;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -11,12 +12,12 @@ public class CassandraMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideHostSystem() throws Exception {
         return new CassandraHostSystem();
     }
-
 }
diff --git a/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index b673611..d6e6257 100644
--- a/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -27,13 +27,15 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
 public class CassandraHostSystem extends ImapHostSystem {
-    
+
     private final CassandraMailboxManager mailboxManager;
     private final MockAuthenticator userManager;
     private CassandraClusterSingleton cassandraClusterSingleton;
@@ -73,4 +75,9 @@ public class CassandraHostSystem extends ImapHostSystem {
     protected void finalize() throws Throwable {
         super.finalize();
     }
+
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception{
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
 }
diff --git a/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/ImapHostSystem.java b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/ImapHostSystem.java
index d83f0b1..483e1f0 100644
--- a/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/ImapHostSystem.java
+++ b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/ImapHostSystem.java
@@ -34,6 +34,7 @@ import org.apache.james.imap.decode.ImapDecoder;
 import org.apache.james.imap.decode.main.ImapRequestStreamHandler;
 import org.apache.james.imap.encode.ImapEncoder;
 import org.apache.james.mailbox.MailboxSession.User;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mpt.api.Continuation;
 import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.session.ImapSessionImpl;
@@ -74,6 +75,8 @@ public abstract class ImapHostSystem implements HostSystem {
     
     protected abstract void resetData() throws Exception;
 
+    public abstract void createMailbox(MailboxPath mailboxPath) throws Exception;
+
     public String getHelloName() {
         return "JAMES";
     }
diff --git a/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/MailboxCreationDelegate.java b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/MailboxCreationDelegate.java
new file mode 100644
index 0000000..d9c978c
--- /dev/null
+++ b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/MailboxCreationDelegate.java
@@ -0,0 +1,46 @@
+/****************************************************************
+ * 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.mpt.imapmailbox;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MailboxCreationDelegate {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(MailboxCreationDelegate.class);
+
+    private MailboxManager mailboxManager;
+
+    public MailboxCreationDelegate(MailboxManager mailboxManager) {
+        this.mailboxManager = mailboxManager;
+    }
+
+    public void createMailbox(MailboxPath mailboxPath) throws Exception{
+        MailboxSession mailboxSession = mailboxManager.createSystemSession("system", LOGGER);
+        mailboxManager.startProcessingRequest(mailboxSession);
+        mailboxManager.createMailbox(mailboxPath, mailboxSession);
+        mailboxManager.logout(mailboxSession, true);
+        mailboxManager.endProcessingRequest(mailboxSession);
+    }
+
+}
diff --git a/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
index 0b4f2bd..495ab39 100644
--- a/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
+++ b/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
@@ -23,7 +23,8 @@ import java.util.Locale;
 
 import javax.inject.Inject;
 
-import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.base.BaseAuthenticatedState;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -31,7 +32,7 @@ import org.junit.Test;
 public class AuthenticatedState extends BaseAuthenticatedState {
     
     @Inject
-    private static HostSystem system;
+    private static ImapHostSystem system;
     
     public AuthenticatedState() throws Exception {
         super(system);
@@ -324,4 +325,40 @@ public class AuthenticatedState extends BaseAuthenticatedState {
     public void testNamespaceKOREA() throws Exception {
         scriptTest("Namespace", Locale.KOREA);
     }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherNamspaceUS() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        scriptTest("ListMailboxes", Locale.US);
+    }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherNamspaceITALY() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        scriptTest("ListMailboxes", Locale.ITALY);
+    }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherNamspaceKOREA() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        scriptTest("ListMailboxes", Locale.KOREA);
+    }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherUserUS() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        scriptTest("ListMailboxes", Locale.US);
+    }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherUserITALY() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        scriptTest("ListMailboxes", Locale.ITALY);
+    }
+
+    @Test
+    public void listShouldNotListMailboxWithOtherUserKOREA() throws Exception {
+        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        scriptTest("ListMailboxes", Locale.KOREA);
+    }
 }
diff --git a/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxTestModule.java b/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxTestModule.java
index 212a740..27c33dd 100644
--- a/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxTestModule.java
+++ b/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxTestModule.java
@@ -1,6 +1,7 @@
 package org.apache.james.mpt.imapmailbox.hbase;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.hbase.host.HBaseHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -11,11 +12,12 @@ public class HBaseMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideHostSystem() throws Exception {
         return HBaseHostSystem.build();
     }
 
diff --git a/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java b/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
index 7282111..ec23f21 100644
--- a/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
+++ b/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
@@ -39,10 +39,11 @@ import org.apache.james.mailbox.hbase.HBaseMailboxManager;
 import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory;
 import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
 import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
-import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.slf4j.LoggerFactory;
 
 public class HBaseHostSystem extends ImapHostSystem {
@@ -60,7 +61,7 @@ public class HBaseHostSystem extends ImapHostSystem {
     private MiniHBaseCluster hbaseCluster;
     private Configuration conf;
 
-    public static synchronized HostSystem build() throws Exception {
+    public static synchronized ImapHostSystem build() throws Exception {
         if (host == null) {
             host = new HBaseHostSystem(useMiniCluster);
         }
@@ -137,4 +138,9 @@ public class HBaseHostSystem extends ImapHostSystem {
             }
         }
     }
+
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception{
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
 }
diff --git a/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java b/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java
index 0f5008a..f2e1fff 100644
--- a/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java
+++ b/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java
@@ -19,6 +19,7 @@
 package org.apache.james.mpt.imapmailbox.inmemory;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.inmemory.host.InMemoryHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -29,11 +30,12 @@ public class InMemoryMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideHostSystem() throws Exception {
         return InMemoryHostSystem.build();
     }
 
diff --git a/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index 5218a06..141a811 100644
--- a/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ b/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -29,11 +29,12 @@ import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
-import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
 public class InMemoryHostSystem extends ImapHostSystem {
 
@@ -41,7 +42,7 @@ public class InMemoryHostSystem extends ImapHostSystem {
     private MockAuthenticator userManager; 
     private InMemoryMailboxSessionMapperFactory factory;
     
-    public static HostSystem build() throws Exception {
+    public static ImapHostSystem build() throws Exception {
         InMemoryHostSystem host =  new InMemoryHostSystem();
         return host;
     }
@@ -75,4 +76,8 @@ public class InMemoryHostSystem extends ImapHostSystem {
                 defaultImapProcessorFactory);
     }
 
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception{
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
 }
diff --git a/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/JcrMailboxTestModule.java b/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/JcrMailboxTestModule.java
index a26ffc8..5799c79 100644
--- a/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/JcrMailboxTestModule.java
+++ b/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/JcrMailboxTestModule.java
@@ -19,6 +19,7 @@
 package org.apache.james.mpt.imapmailbox.jcr;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.jcr.host.JCRHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -29,11 +30,12 @@ public class JcrMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideImapHostSystem() throws Exception {
         return JCRHostSystem.build();
     }
 
diff --git a/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java b/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
index a4028ef..d9daa88 100644
--- a/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
+++ b/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
@@ -39,16 +39,17 @@ import org.apache.james.mailbox.jcr.JCRSubscriptionManager;
 import org.apache.james.mailbox.jcr.JCRUtils;
 import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
 import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MockAuthenticator;
-import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 
 public class JCRHostSystem extends ImapHostSystem{
 
-    public static HostSystem build() throws Exception { 
+    public static ImapHostSystem build() throws Exception {
         return new JCRHostSystem();
     }
     
@@ -150,6 +151,9 @@ public class JCRHostSystem extends ImapHostSystem{
         }
     }
 
-
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception {
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
     
 }
diff --git a/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxTestModule.java b/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxTestModule.java
index e5025fb..3a1c10d 100644
--- a/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxTestModule.java
+++ b/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxTestModule.java
@@ -19,6 +19,7 @@
 package org.apache.james.mpt.imapmailbox.jpa;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.jpa.host.JPAHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -29,11 +30,12 @@ public class JpaMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideImapHostSystem() throws Exception {
         return JPAHostSystem.build();
     }
 
diff --git a/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index 1e5a94c..91ef6fc 100644
--- a/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ b/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -46,10 +46,11 @@ import org.apache.james.mailbox.jpa.mail.model.openjpa.AbstractJPAMessage;
 import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMessage;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.apache.james.mailbox.jpa.user.model.JPASubscription;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MockAuthenticator;
-import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.slf4j.LoggerFactory;
 
@@ -57,7 +58,7 @@ public class JPAHostSystem extends ImapHostSystem {
 
     public static final String META_DATA_DIRECTORY = "target/user-meta-data";
 
-    public static HostSystem build() throws Exception {        
+    public static ImapHostSystem build() throws Exception {
         JPAHostSystem host =  new JPAHostSystem();
         return host;
     }
@@ -154,4 +155,9 @@ public class JPAHostSystem extends ImapHostSystem {
         dir.mkdirs();
     }
 
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception {
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
+
 }
diff --git a/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirMailboxTestModule.java b/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirMailboxTestModule.java
index 274419b..42c801e 100644
--- a/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirMailboxTestModule.java
+++ b/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirMailboxTestModule.java
@@ -19,6 +19,7 @@
 package org.apache.james.mpt.imapmailbox.maildir;
 
 import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.host.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.maildir.host.MaildirHostSystem;
 
 import com.google.inject.AbstractModule;
@@ -29,11 +30,12 @@ public class MaildirMailboxTestModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(HostSystem.class).to(ImapHostSystem.class);
     }
 
     @Provides
     @Singleton
-    public HostSystem provideHostSystem() throws Exception {
+    public ImapHostSystem provideImapHostSystem() throws Exception {
         return MaildirHostSystem.build();
     }
 
diff --git a/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index 695b2ef..f0aa756 100644
--- a/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ b/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -32,12 +32,13 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
 import org.apache.james.mailbox.maildir.MaildirStore;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
-import org.apache.james.mpt.api.HostSystem;
 import org.apache.james.mpt.host.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
 public class MaildirHostSystem extends ImapHostSystem {
 
@@ -48,7 +49,7 @@ public class MaildirHostSystem extends ImapHostSystem {
     private final MockAuthenticator userManager;
     private final MaildirMailboxSessionMapperFactory mailboxSessionMapperFactory;
     
-    public static HostSystem build() throws Exception { 
+    public static ImapHostSystem build() throws Exception {
         return new MaildirHostSystem();
     }
     
@@ -95,4 +96,11 @@ public class MaildirHostSystem extends ImapHostSystem {
         dir.mkdirs();
     }
 
+    @Override
+    public void createMailbox(MailboxPath mailboxPath) throws Exception {
+        new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
+    }
+
+
+
 }
-- 
2.4.2

