move sieve manager file repo test to a server module

git-svn-id: https://svn.apache.org/repos/asf/james/jsieve/trunk@1292181 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/manager/server/src/test/java/org/apache/james/managesieve/file/SieveFileRepositoryTestCase.java b/manager/server/src/test/java/org/apache/james/managesieve/file/SieveFileRepositoryTestCase.java
deleted file mode 100644
index 51e1ab6..0000000
--- a/manager/server/src/test/java/org/apache/james/managesieve/file/SieveFileRepositoryTestCase.java
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- *   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.managesieve.file;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.managesieve.api.DuplicateException;
-import org.apache.james.managesieve.api.DuplicateUserException;
-import org.apache.james.managesieve.api.IsActiveException;
-import org.apache.james.managesieve.api.QuotaExceededException;
-import org.apache.james.managesieve.api.QuotaNotFoundException;
-import org.apache.james.managesieve.api.ScriptNotFoundException;
-import org.apache.james.managesieve.api.ScriptSummary;
-import org.apache.james.managesieve.api.SieveRepository;
-import org.apache.james.managesieve.api.StorageException;
-import org.apache.james.managesieve.api.UserNotFoundException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <code>SieveFileRepositoryTestCase</code>
- */
-public class SieveFileRepositoryTestCase {
-    private static final String SIEVE_ROOT = FileSystem.FILE_PROTOCOL + "sieve";
-    
-    private FileSystem fs = new FileSystem() {
-
-        public File getBasedir() throws FileNotFoundException {
-             return new File(System.getProperty("java.io.tmpdir"));
-        }
-
-        public InputStream getResource(String url) throws IOException {
-            return new FileInputStream(getFile(url));
-        }
-
-        public File getFile(String fileURL) throws FileNotFoundException {
-            return new File(getBasedir(), fileURL.substring(FileSystem.FILE_PROTOCOL.length()));
-        }
-    };
-
-    /**
-     * setUp.
-     *
-     * @throws java.lang.Exception
-     */
-    @Before
-    public void setUp() throws Exception {
-        File root = fs.getFile(SIEVE_ROOT);
-        // Remove files from the previous test, if any
-        if (root.exists())
-        {
-            FileUtils.forceDelete(root);
-        }
-        root.mkdir();
-    }
-
-    /**
-     * tearDown.
-     *
-     * @throws java.lang.Exception
-     */
-    @After
-    public void tearDown() throws Exception {
-        // Files from the current run are not removed to allow post run analysis
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#SieveFileRepository(org.apache.james.filesystem.api.FileSystem)}.
-     */
-    @Test
-    public final void testSieveFileRepository() {
-        SieveRepository repo = new SieveFileRepository(fs);
-        assertTrue(repo instanceof SieveRepository);
-        assertTrue(repo instanceof SieveFileRepository);
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#deleteScript(java.lang.String, java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws QuotaExceededException 
-     * @throws UserNotFoundException 
-     * @throws IsActiveException 
-     * @throws ScriptNotFoundException 
-     * @throws FileNotFoundException 
-     */
-    @Test
-    public final void testDeleteScript() throws DuplicateUserException, StorageException,
-            UserNotFoundException, QuotaExceededException, ScriptNotFoundException,
-            IsActiveException, FileNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-
-        // Delete existent inactive script
-        repo.putScript(user, scriptName, content);
-        repo.deleteScript(user, scriptName);
-        assertTrue("Script deletion failed", !new File(fs.getFile(SIEVE_ROOT), user + '/'
-                + scriptName).exists());
-
-        // Delete existent active script
-        repo.putScript(user, scriptName, content);
-        repo.setActive(user, scriptName);
-        boolean isActiveExceptionThrown = false;
-        try {
-            repo.deleteScript(user, scriptName);
-        } catch (IsActiveException ex) {
-            isActiveExceptionThrown = true;
-        }
-        assertTrue(isActiveExceptionThrown);
-
-        // Delete non existent script
-        boolean scriptNotFoundExceptionThrown = false;
-        try {
-            repo.deleteScript(user, "nonExistent");
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#getScript(java.lang.String, java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws UserNotFoundException 
-     * @throws QuotaExceededException 
-     * @throws ScriptNotFoundException 
-     */
-    @Test
-    public final void testGetScript() throws DuplicateUserException, StorageException, UserNotFoundException, QuotaExceededException, ScriptNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-        
-        // Non existent script
-        boolean scriptNotFoundExceptionThrown = false;
-        try {
-            repo.getScript(user, scriptName);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-        
-        // Existent script
-        repo.putScript(user, scriptName, content);
-        assertEquals("Script content did not match", content, repo.getScript(user, scriptName));
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#haveSpace(java.lang.String, java.lang.String, long)}.
-     * @throws DuplicateUserException 
-     * @throws QuotaExceededException 
-     * @throws UserNotFoundException 
-     * @throws StorageException 
-     * @throws ScriptNotFoundException 
-     */
-    @Test
-    public final void testHaveSpace() throws DuplicateUserException, UserNotFoundException, QuotaExceededException, StorageException, ScriptNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        long defaultQuota = Long.MAX_VALUE - 1;
-        long userQuota = Long.MAX_VALUE / 2;
-        boolean quotaExceededExceptionThrown = false;
-        
-        // No quota
-        repo.haveSpace(user, scriptName, defaultQuota + 1);
-       
-        // Default quota
-        repo.setQuota(defaultQuota);        
-        // Default quota - not exceeded
-        repo.haveSpace(user, scriptName, defaultQuota);
-        // Default quota - exceeded
-        quotaExceededExceptionThrown = false;
-        try {
-            repo.haveSpace(user, scriptName, defaultQuota + 1);
-        } catch (QuotaExceededException ex) {
-            quotaExceededExceptionThrown = true;
-        }
-        assertTrue(quotaExceededExceptionThrown);
-
-        // User quota file
-        repo.setQuota(user, userQuota); 
-        // User quota - not exceeded
-        repo.haveSpace(user, scriptName, userQuota);
-        // User quota - exceeded
-        quotaExceededExceptionThrown = false;
-        try {
-            repo.haveSpace(user, scriptName, userQuota + 1);
-        } catch (QuotaExceededException ex) {
-            quotaExceededExceptionThrown = true;
-        }
-        assertTrue(quotaExceededExceptionThrown);
-       
-        // Script replacement
-        String content = "01234567";
-        repo.putScript(user, scriptName, content);
-        // Script replacement, quota not exceeded
-        repo.haveSpace(user, scriptName, userQuota);             
-        // Script replacement, quota exceeded
-        quotaExceededExceptionThrown = false;
-        try {
-            repo.haveSpace(user, scriptName, userQuota + 1);
-        } catch (QuotaExceededException ex) {
-            quotaExceededExceptionThrown = true;
-        }
-        assertTrue(quotaExceededExceptionThrown);
-        
-        // Active script
-        repo.setActive(user, scriptName);
-        // User quota - not exceeded
-        repo.haveSpace(user, scriptName, userQuota);  
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#listScripts(java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws UserNotFoundException 
-     * @throws QuotaExceededException 
-     * @throws ScriptNotFoundException 
-     */
-    @Test
-    public final void testListScripts() throws DuplicateUserException, StorageException, UserNotFoundException, QuotaExceededException, ScriptNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-        String scriptName1 = "script1";
-        String content1 = "abcdefgh";
-        
-        // No scripts
-        assertTrue(repo.listScripts(user).isEmpty());
-        
-        // Inactive script
-        repo.putScript(user, scriptName, content);
-        List<ScriptSummary> summaries = repo.listScripts(user);
-        assertEquals(1, summaries.size());
-        assertEquals(scriptName, summaries.get(0).getName());
-        assertTrue(!summaries.get(0).isActive());
-
-        // Active script
-        repo.setActive(user, scriptName);
-        summaries = repo.listScripts(user);
-        assertEquals(1, summaries.size());
-        assertEquals(scriptName, summaries.get(0).getName());
-        assertTrue(summaries.get(0).isActive());
-        
-        // One of each
-        repo.putScript(user, scriptName1, content1);
-        summaries = repo.listScripts(user);
-        assertEquals(2, summaries.size());
-        assertEquals(scriptName, summaries.get(0).getName());
-        assertTrue(summaries.get(0).isActive());
-        assertEquals(scriptName1, summaries.get(1).getName());
-        assertTrue(!summaries.get(1).isActive());
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#putScript(java.lang.String, java.lang.String, java.lang.String)}.
-     * @throws DuplicateUserException 
-     * @throws QuotaExceededException 
-     * @throws StorageException 
-     * @throws UserNotFoundException 
-     * @throws FileNotFoundException 
-     */
-    @Test
-    public final void testPutScript() throws DuplicateUserException, UserNotFoundException,
-            StorageException, QuotaExceededException, FileNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-
-        // test new script
-        repo.putScript(user, scriptName, content);
-        assertTrue("Script creation failed", new File(fs.getFile(SIEVE_ROOT), user + '/'
-                + scriptName).exists());
-
-        // test script replacement
-        repo.putScript(user, scriptName, content);
-        assertTrue("Script replacement failed", new File(fs.getFile(SIEVE_ROOT), user + '/'
-                + scriptName).exists());
-        
-        // test quota
-        repo.setQuota(content.length());
-        repo.putScript(user, scriptName, content);
-        repo.setQuota(content.length() - 1);
-        boolean quotaExceededExceptionThrown = false;
-        try {
-            repo.putScript(user, scriptName, content);
-        } catch (QuotaExceededException ex) {
-            quotaExceededExceptionThrown = true;
-        }
-        assertTrue(quotaExceededExceptionThrown);
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#renameScript(java.lang.String, java.lang.String, java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws DuplicateException 
-     * @throws IsActiveException 
-     * @throws UserNotFoundException 
-     * @throws ScriptNotFoundException 
-     * @throws QuotaExceededException 
-     */
-    @Test
-    public final void testRenameScript() throws DuplicateUserException, StorageException, UserNotFoundException, IsActiveException, DuplicateException, ScriptNotFoundException, QuotaExceededException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-        String scriptName1 = "script1";
-        
-        // Non existent script
-        boolean scriptNotFoundExceptionThrown = false;
-        try {
-            repo.renameScript(user, scriptName, scriptName1);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-        
-        // Existent script
-        repo.putScript(user, scriptName, content);
-        repo.renameScript(user, scriptName, scriptName1);
-        assertEquals("Script content did not match", content, repo.getScript(user, scriptName1));
-        
-        // Propagate active script
-        repo.setActive(user, scriptName1);
-        repo.renameScript(user, scriptName1, scriptName);
-        assertEquals("Script content did not match", content, repo.getActive(user));
-        
-        // Duplicate script
-        repo.setActive(user, "");
-        boolean duplicateExceptionThrown = false;
-        try {
-            repo.renameScript(user, scriptName, scriptName);
-        } catch (DuplicateException ex) {
-            duplicateExceptionThrown = true;
-        }
-        assertTrue(duplicateExceptionThrown);
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#getActive(java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws QuotaExceededException 
-     * @throws UserNotFoundException 
-     * @throws ScriptNotFoundException 
-     */
-    @Test
-    public final void testGetActive() throws DuplicateUserException, StorageException, UserNotFoundException, QuotaExceededException, ScriptNotFoundException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-        
-        // Non existent script
-        boolean scriptNotFoundExceptionThrown = false;
-        try {
-            repo.getActive(user);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-        
-        // Inactive script
-        repo.putScript(user, scriptName, content);
-        scriptNotFoundExceptionThrown = false;
-        try {
-            repo.getActive(user);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-        
-        // Active script
-        repo.setActive(user, scriptName);
-        assertEquals("Script content did not match", content, repo.getActive(user));
-    }
-
-    /**
-     * Test method for {@link org.apache.james.managesieve.file.SieveFileRepository#setActive(java.lang.String, java.lang.String)}.
-     * @throws StorageException 
-     * @throws DuplicateUserException 
-     * @throws UserNotFoundException 
-     * @throws ScriptNotFoundException 
-     * @throws QuotaExceededException 
-     */
-    @Test
-    public final void testSetActive() throws DuplicateUserException, StorageException,
-            UserNotFoundException, ScriptNotFoundException, QuotaExceededException {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        String scriptName = "script";
-        String content = "01234567";
-        String scriptName1 = "script1";
-        String content1 = "abcdefgh";
-
-        // Non existent script
-        boolean scriptNotFoundExceptionThrown = false;
-        try {
-            repo.setActive(user, scriptName);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-
-        // Existent script
-        repo.putScript(user, scriptName, content);
-        repo.setActive(user, scriptName);
-        assertEquals("Script content did not match", content, repo.getActive(user));
-
-        // Switch active script
-        repo.putScript(user, scriptName1, content1);
-        scriptNotFoundExceptionThrown = false;
-        repo.setActive(user, scriptName1);
-        assertEquals("Script content did not match", content1, repo.getActive(user));
-
-        // Disable active script
-        repo.setActive(user, "");
-        scriptNotFoundExceptionThrown = false;
-        try {
-            repo.getActive(user);
-        } catch (ScriptNotFoundException ex) {
-            scriptNotFoundExceptionThrown = true;
-        }
-        assertTrue(scriptNotFoundExceptionThrown);
-    }
-    
-    @Test
-    public final void testAddUser() throws DuplicateUserException, StorageException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        
-        repo.addUser(user);
-        assertTrue(repo.hasUser(user));
-    }
-    
-    @Test
-    public final void testRemoveUser() throws StorageException, DuplicateUserException, UserNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        
-        // Non existent user
-        boolean userNotFoundExceptionThrown = false;
-        try {
-            repo.removeUser(user);
-        } catch (UserNotFoundException ex) {
-            userNotFoundExceptionThrown = true;
-        }
-        assertTrue(userNotFoundExceptionThrown);
-        
-        // Existent user
-        repo.addUser(user);
-        repo.removeUser(user);
-        assertTrue(!repo.hasUser(user));
-    }
-    
-    @Test
-    public final void testHasUser() throws DuplicateUserException, StorageException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-       
-        // Non existent user
-        assertTrue(!repo.hasUser(user));
-        
-        // Existent user
-        repo.addUser(user);
-        assertTrue(repo.hasUser(user));
-    }
-    
-    @Test
-    public final void testGetQuota() throws StorageException, QuotaNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        
-        // Non existent quota
-        boolean quotaNotFoundExceptionThrown = false;
-        try {
-            repo.getQuota();
-        } catch (QuotaNotFoundException ex) {
-            quotaNotFoundExceptionThrown = true;
-        }
-        assertTrue(quotaNotFoundExceptionThrown);
-
-        // Existent Quota
-        repo.setQuota(Long.MAX_VALUE);
-        assertEquals(Long.MAX_VALUE, repo.getQuota());
-    }
-    
-    @Test
-    public final void testHasQuota() throws StorageException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        
-        // Non existent quota
-        assertTrue(!repo.hasQuota());
-        
-        // Existent quota
-        repo.setQuota(Long.MAX_VALUE);
-        assertTrue(repo.hasQuota());
-    }
-    
-    @Test
-    public final void testRemoveQuota() throws StorageException, QuotaNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        
-        // Non existent quota
-        boolean quotaNotFoundExceptionThrown = false;
-        try {
-            repo.removeQuota();
-        } catch (QuotaNotFoundException ex) {
-            quotaNotFoundExceptionThrown = true;
-        }
-        assertTrue(quotaNotFoundExceptionThrown);
-        
-        // Existent quota
-        repo.setQuota(Long.MAX_VALUE);
-        repo.removeQuota();
-        assertTrue(!repo.hasQuota());
-    } 
-    
-    @Test
-    public final void testSetQuota() throws QuotaNotFoundException, StorageException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        
-        repo.setQuota(Long.MAX_VALUE);
-        assertEquals(Long.MAX_VALUE, repo.getQuota());   
-    }
-    
-    @Test
-    public final void testGetUserQuota() throws StorageException, QuotaNotFoundException, DuplicateUserException, UserNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        
-        // Non existent quota
-        boolean quotaNotFoundExceptionThrown = false;
-        try {
-            repo.getQuota(user);
-        } catch (QuotaNotFoundException ex) {
-            quotaNotFoundExceptionThrown = true;
-        }
-        assertTrue(quotaNotFoundExceptionThrown);
-
-        // Existent Quota
-        repo.setQuota(user, Long.MAX_VALUE);
-        assertEquals(Long.MAX_VALUE, repo.getQuota(user));
-    }
-    
-    @Test
-    public final void testHasUserQuota() throws StorageException, DuplicateUserException, UserNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        
-        // Non existent quota
-        assertTrue(!repo.hasQuota(user));
-        
-        // Existent quota
-        repo.setQuota(user, Long.MAX_VALUE);
-        assertTrue(repo.hasQuota(user));
-    }
-    
-    @Test
-    public final void testRemoveUserQuota() throws StorageException, QuotaNotFoundException, DuplicateUserException, UserNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        
-        // Non existent quota
-        boolean quotaNotFoundExceptionThrown = false;
-        try {
-            repo.removeQuota(user);
-        } catch (QuotaNotFoundException ex) {
-            quotaNotFoundExceptionThrown = true;
-        }
-        assertTrue(quotaNotFoundExceptionThrown);
-        
-        // Existent quota
-        repo.setQuota(user, Long.MAX_VALUE);
-        repo.removeQuota(user);
-        assertTrue(!repo.hasQuota(user));
-    } 
-    
-    @Test
-    public final void testSetUserQuota() throws QuotaNotFoundException, StorageException, DuplicateUserException, UserNotFoundException
-    {
-        SieveRepository repo = new SieveFileRepository(fs);
-        String user = "test";
-        repo.addUser(user);
-        
-        repo.setQuota(user, Long.MAX_VALUE);
-        assertEquals(Long.MAX_VALUE, repo.getQuota(user));   
-    }
-
-}