You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2015/10/20 17:48:01 UTC

svn commit: r1709626 - in /james/project/trunk/server: ./ container/filesystem-api/ container/filesystem-api/src/test/java/org/apache/james/filesystem/api/ container/filesystem-api/src/test/resources/ container/spring/ container/spring/src/main/java/or...

Author: matthieu
Date: Tue Oct 20 15:48:01 2015
New Revision: 1709626

URL: http://svn.apache.org/viewvc?rev=1709626&view=rev
Log:
JAMES-1606: Integration tests for FileSystem implementation

Added:
    james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
    james/project/trunk/server/container/filesystem-api/src/test/resources/
    james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt
    james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt
    james/project/trunk/server/container/spring/src/test/
    james/project/trunk/server/container/spring/src/test/java/
    james/project/trunk/server/container/spring/src/test/java/org/
    james/project/trunk/server/container/spring/src/test/java/org/apache/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/
    james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
Modified:
    james/project/trunk/server/container/filesystem-api/pom.xml
    james/project/trunk/server/container/spring/pom.xml
    james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
    james/project/trunk/server/pom.xml

Modified: james/project/trunk/server/container/filesystem-api/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/filesystem-api/pom.xml (original)
+++ james/project/trunk/server/container/filesystem-api/pom.xml Tue Oct 20 15:48:01 2015
@@ -50,6 +50,16 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>pl.pragmatists</groupId>
+            <artifactId>JUnitParams</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Added: james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,299 @@
+/****************************************************************
+ * 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.filesystem.api;
+
+import static junitparams.JUnitParamsRunner.$;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+
+@SuppressWarnings("restriction")
+@RunWith(JUnitParamsRunner.class)
+public abstract class AbstractFileSystemTest {
+    private static final String FAKE_DIRECTORY = "b7b73e3a-5234-11e5-87f2-9b171f273b49/";
+    private static final String FAKE_FILE = "d9091ae6-521f-11e5-b666-bb11fef67c2a";
+    private static final String EXISTING_CLASSPATH_FILE = "classpathTest.txt";
+    private static final String EXISTING_CLASSPATH_FILE_WITH_SPACES = "class path Test.txt";
+
+    @Rule public TemporaryFolder tmpFolder = new TemporaryFolder();
+
+    protected FileSystem fileSystem;
+    
+    private HttpServer httpServer;
+    private File rootDirectory;
+    
+    protected abstract FileSystem buildFileSystem(String configurationRootDirectory);
+
+    @Before
+    public void setUp() throws Exception {
+        httpServer = HttpServer.create(new InetSocketAddress("localhost", 0), 0);
+        httpServer.createContext("/", new SlashHandler());
+        httpServer.start();
+        
+        rootDirectory = tmpFolder.getRoot();
+        createSubFolderWithAFileIn("conf", "conf.txt", "confcontent");
+        createSubFolderWithAFileIn("var", "var.txt", "varcontent");
+        
+        fileSystem = buildFileSystem(rootDirectory.getAbsolutePath());
+    }
+
+    private void createSubFolderWithAFileIn(String folderName, String fileName, String fileContent) throws IOException {
+        File folder = tmpFolder.newFolder(folderName);
+        File file = new File(folder.getAbsolutePath() + "/" + fileName);
+        FileUtils.writeStringToFile(file, fileContent);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        httpServer.stop(0);
+    }
+
+    private static class SlashHandler implements HttpHandler {
+
+        @Override
+        public void handle(HttpExchange exchange) throws IOException {
+            if (exchange.getRequestURI().getPath().equals("/")) {
+                String response = "content";
+                exchange.sendResponseHeaders(200, response.length());
+                OutputStream responseBody = exchange.getResponseBody();
+                responseBody.write(response.getBytes());
+                responseBody.close();
+            } else {
+                exchange.sendResponseHeaders(404, 0);
+            }
+        }
+    }
+
+    @Test
+    public final void getBaseDirShouldReturnParentDir() throws Exception {
+        File basedir = fileSystem.getBasedir();
+        assertThat(basedir.getPath()).isEqualTo(rootDirectory.getAbsolutePath());
+    }
+
+    @Test(expected = NullPointerException.class)
+    public final void nullInputShouldThrowNullPointerException() throws Exception {
+        fileSystem.getFile(null);
+    }
+
+    public final void emptyInputShouldThrowReturnEmptyPathFile() throws Exception {
+        File file = fileSystem.getFile("");
+        assertThat(file.getPath()).isEmpty();;
+    }
+
+    @Test
+    public final void protocolOnlyShouldReturnEmptyPathFile() throws Exception {
+        File file = fileSystem.getFile("file:");
+        assertThat(file.getPath()).isEmpty();
+    }
+
+    @Test
+    public final void protocolWithDoubleSlashesOnlyShouldReturnDir() throws Exception {
+        File file = fileSystem.getFile("file://");
+        assertThat(file).isDirectory();
+    }
+
+    public static class UrlsAsFileThrowingFileNotFoundExceptionProvider {
+        public static Object[] provides() {
+            return $(
+                    $("bad://file"),
+                    $("classpath:" + FAKE_FILE),
+                    $("classpath:/" + FAKE_FILE),
+                    $("http://localhost:$PORT$/"),
+                    $("classpath:" + new File(ClassLoader.getSystemResource(EXISTING_CLASSPATH_FILE).getFile()).getAbsolutePath()),
+                    $("classpath:java/lang/String.class")
+            );
+        }
+    }
+
+    @Test(expected = FileNotFoundException.class)
+    @Parameters(source = UrlsAsFileThrowingFileNotFoundExceptionProvider.class)
+    public final void urlAsFileThrowingFileNotFoundException(String url) throws Exception {
+        url = replacePort(url);
+        
+        fileSystem.getFile(url);
+    }
+
+    public static class NonExistingFilesProvider {
+        public static Object[] provides() {
+            return $(
+                    $("file:///" + FAKE_FILE),
+                    $("file:///" + FAKE_DIRECTORY + FAKE_FILE),
+                    $("file://conf/" + FAKE_FILE),
+                    $("file://var/" + FAKE_FILE)
+            );
+        }
+    }
+
+    @Test
+    @Parameters(source = NonExistingFilesProvider.class)
+    public void nonExistingFilesShouldNotExist(String url) throws Exception {
+        File f = fileSystem.getFile(url);
+        assertThat(f).doesNotExist();
+    }
+
+    public static class NonAvailableStreamsProvider {
+        public static Object[] provide() {
+            return $(
+                    $("http://localhost:$PORT$/" + FAKE_FILE),
+                    $("classpath:java/lang/" + FAKE_FILE + ".clas"),
+                    $("classpath:" + FAKE_FILE)
+            );
+        }
+    }
+
+    @Test(expected = FileNotFoundException.class)
+    @Parameters(source = NonAvailableStreamsProvider.class)
+    public final void getFakeHttpResourceAsInputStreamShouldThrow(String url) throws Exception {
+        url = replacePort(url);
+        
+        fileSystem.getResource(url);
+    }
+
+    public static class AvailableStreamsProvider {
+        public static Object[] provide() {
+            return $(
+                    $("http://localhost:$PORT$/"),
+                    $("classpath:java/lang/String.class"),
+                    $("classpath:" + EXISTING_CLASSPATH_FILE),
+                    $("classpath:" + EXISTING_CLASSPATH_FILE_WITH_SPACES),
+                    $("classpath:/" + EXISTING_CLASSPATH_FILE),
+                    $("classpath:/" + EXISTING_CLASSPATH_FILE_WITH_SPACES)
+            );
+        }
+    }
+
+    @Test
+    @Parameters(source = AvailableStreamsProvider.class)
+    public final void availableInputStreamShouldReturnANonEmptyStream(String url) throws Exception {
+        url = replacePort(url);
+        InputStream inputStream = fileSystem.getResource(url);
+        try {
+            assertThat(IOUtils.toString(inputStream).length()).isGreaterThan(0);
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+        }
+    }
+
+    private String replacePort(String url) {
+        return url.replace("$PORT$", String.valueOf(httpServer.getAddress().getPort()));
+    }
+
+    public static class FileToCreateProvider {
+        public static Object[] provide() {
+            return $(
+                    $("fileSystemTest", ".txt"),
+                    $("file System Test", ".txt")
+            );
+        }
+    }
+
+    @Test
+    @Parameters(source = FileToCreateProvider.class)
+    public final void createdFilesShouldExist(String name, String extension) throws Exception {
+        File temp = createTempFile(name, extension);
+        try {
+            File expected = fileSystem.getFile("file:" + temp.getAbsolutePath());
+            assertThat(expected).exists();
+        } finally {
+            temp.delete();
+        }
+    }
+
+    @Test
+    @Parameters(source = FileToCreateProvider.class)
+    public final void createdFilesShouldExistWhenAccessedWithTwoSlashes(String name, String extension) throws Exception {
+        File temp = createTempFile(name, extension);
+        try {
+            File expected = fileSystem.getFile("file://" + temp.getAbsolutePath());
+            assertThat(expected).exists();
+        } finally {
+            temp.delete();
+        }
+    }
+
+    @Test
+    @Parameters(source = FileToCreateProvider.class)
+    public final void createdFilesAsInputStreamShouldBeAvailable(String name, String extension) throws Exception {
+        File temp = createTempFile(name, extension);
+        InputStream inputStream = null;
+        try {
+            inputStream = fileSystem.getResource("file:" + temp.getAbsolutePath());
+            assertThat(IOUtils.toString(inputStream)).isEqualTo("content");
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+            temp.delete();
+        }
+    }
+
+    @Test
+    @Parameters(source = FileToCreateProvider.class)
+    public final void createdFilesAsInputStreamShouldBeAvailableWhenAccessedWithTwoSlashes(String name, String extension) throws Exception {
+        File temp = createTempFile(name, extension);
+        InputStream inputStream = null;
+        try {
+            inputStream = fileSystem.getResource("file://" + temp.getAbsolutePath());
+            assertThat(IOUtils.toString(inputStream)).isEqualTo("content");
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+            temp.delete();
+        }
+    }
+
+    private File createTempFile(String name, String extension) throws IOException {
+        File temp = File.createTempFile(name, extension);
+        FileUtils.write(temp, "content");
+        return temp;
+    }
+
+    @Test
+    public void testConfProtocolSouldReturnConfFile() throws Exception {
+        File file = fileSystem.getFile("file://conf/conf.txt");
+
+        assertThat(file).hasContent("confcontent");
+    }
+    
+    @Test
+    public void testVarProtocolSouldReturnVarFile() throws Exception {
+        File file = fileSystem.getFile("file://var/var.txt");
+
+        assertThat(file).hasContent("varcontent");
+    }
+    
+}

Added: james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/resources/class%20path%20Test.txt?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt Tue Oct 20 15:48:01 2015
@@ -0,0 +1 @@
+Non empty

Added: james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt Tue Oct 20 15:48:01 2015
@@ -0,0 +1 @@
+Non empty

Modified: james/project/trunk/server/container/spring/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/spring/pom.xml (original)
+++ james/project/trunk/server/container/spring/pom.xml Tue Oct 20 15:48:01 2015
@@ -45,6 +45,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.james</groupId>
+            <artifactId>james-server-filesystem-api</artifactId>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.james</groupId>
             <artifactId>james-server-mailetcontainer-api</artifactId>
         </dependency>
         <dependency>
@@ -156,6 +162,16 @@
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-jpa_2.0_spec</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>pl.pragmatists</groupId>
+            <artifactId>JUnitParams</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Modified: james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java (original)
+++ james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java Tue Oct 20 15:48:01 2015
@@ -45,7 +45,7 @@ public class JamesServerApplicationConte
      */
     public Resource getResource(String fileURL) {
         // delegate the loading to the resourceloader
-        Resource r = resourceLoader.getResource(fileURL);
+        Resource r = getResourceLoader().getResource(fileURL);
         if (r == null) {
             r = super.getResource(fileURL);
         }
@@ -57,7 +57,7 @@ public class JamesServerApplicationConte
      * org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()
      */
     public String getAbsoluteDirectory() {
-        return resourceLoader.getAbsoluteDirectory();
+        return getResourceLoader().getAbsoluteDirectory();
     }
 
     /**
@@ -65,7 +65,7 @@ public class JamesServerApplicationConte
      * org.apache.james.container.spring.resource.JamesResourceLoader#getConfDirectory()
      */
     public String getConfDirectory() {
-        return resourceLoader.getConfDirectory();
+        return getResourceLoader().getConfDirectory();
     }
 
     /**
@@ -73,7 +73,7 @@ public class JamesServerApplicationConte
      * org.apache.james.container.spring.resource.JamesResourceLoader#getVarDirectory()
      */
     public String getVarDirectory() {
-        return resourceLoader.getVarDirectory();
+        return getResourceLoader().getVarDirectory();
     }
 
     /**
@@ -81,17 +81,17 @@ public class JamesServerApplicationConte
      * org.apache.james.container.spring.resource.JamesResourceLoader#getRootDirectory()
      */
     public String getRootDirectory() {
-        return resourceLoader.getRootDirectory();
+        return getResourceLoader().getRootDirectory();
     }
 
     /**
      * Protected accessor for the resource loader.
      */
-    protected static JamesServerResourceLoader getResourceLoader() {
+    protected JamesServerResourceLoader getResourceLoader() {
         return resourceLoader;
     }
 
-    protected static final class JamesServerResourceLoader extends AbstractJamesResourceLoader {
+    protected static class JamesServerResourceLoader extends AbstractJamesResourceLoader {
 
         /**
          * @see org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()

Added: james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java (added)
+++ james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.container.spring.context;
+
+public class TestApplicationContextProvider extends JamesServerApplicationContext {
+    private String configurationRootDirectory;
+
+    public TestApplicationContextProvider(String configurationRootDirectory, String[] configs) {
+        super(configs);
+        this.configurationRootDirectory = configurationRootDirectory;
+    }
+
+    @Override
+    public JamesServerResourceLoader getResourceLoader() {
+        return new TestDirectoryProvider(configurationRootDirectory);
+    }
+
+    private static class TestDirectoryProvider extends JamesServerResourceLoader {
+        private String configurationRootDirectory;
+
+        public TestDirectoryProvider(String configurationRootDirectory) {
+            this.configurationRootDirectory = configurationRootDirectory;
+        }
+
+        @Override
+        public String getRootDirectory() {
+            return configurationRootDirectory;
+        }
+    }
+
+}

Added: james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java (added)
+++ james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.container.spring.filesystem;
+
+import org.apache.james.container.spring.context.TestApplicationContextProvider;
+import org.apache.james.filesystem.api.AbstractFileSystemTest;
+import org.apache.james.filesystem.api.FileSystem;
+
+public class FileSystemImplTest extends AbstractFileSystemTest {
+
+    @Override
+    protected FileSystem buildFileSystem(String configurationRootDirectory) {
+        FileSystemImpl fs = new FileSystemImpl();
+        fs.setApplicationContext(new TestApplicationContextProvider(configurationRootDirectory, null));
+        return fs;
+    }
+
+}

Modified: james/project/trunk/server/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/pom.xml (original)
+++ james/project/trunk/server/pom.xml Tue Oct 20 15:48:01 2015
@@ -846,7 +846,11 @@
                 <version>1.7.1</version>
                 <scope>test</scope>
             </dependency>
-
+            <dependency>
+                <groupId>pl.pragmatists</groupId>
+                <artifactId>JUnitParams</artifactId>
+                <version>1.0.4</version>
+            </dependency>
             <dependency>
                 <groupId>org.mockito</groupId>
                 <artifactId>mockito-core</artifactId>



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