You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/06/09 05:19:20 UTC

svn commit: r189695 [44/67] - in /incubator/roller/trunk: ./ contrib/ contrib/lib/ contrib/plugins/ contrib/plugins/src/ contrib/plugins/src/org/ contrib/plugins/src/org/roller/ contrib/plugins/src/org/roller/presentation/ contrib/plugins/src/org/roller/presentation/velocity/ contrib/plugins/src/org/roller/presentation/velocity/plugins/ contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/ contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/ contrib/plugins/src/org/roller/presentation/velocity/plugins/email/ contrib/plugins/src/org/roller/presentation/velocity/plugins/jspwiki/ contrib/plugins/src/org/roller/presentation/velocity/plugins/radeox/ contrib/plugins/src/org/roller/presentation/velocity/plugins/readmore/ contrib/plugins/src/org/roller/presentation/velocity/plugins/smileys/ contrib/plugins/src/org/roller/presentation/velocity/plugins/textile/ contrib/plugins/src/org/roller/presentation/velocity/plugins/topictag/ custom/ custom/src/ custom/web/ docs/ docs/images/ docs/installguide/ docs/installguide/old/ docs/userguide/ docs/userguide/images/ docs/userguide/old/ metadata/ metadata/database/ metadata/database/hibernate/ metadata/xdoclet/ nbproject/ personal/ personal/eclipse/ personal/testing/ sandbox/ sandbox/planetroller/ sandbox/planetroller/metadata/ sandbox/planetroller/metadata/database/ sandbox/planetroller/src/ sandbox/planetroller/src/org/ sandbox/planetroller/src/org/roller/ sandbox/planetroller/src/org/roller/tools/ sandbox/planetroller/src/org/roller/tools/planet/ sandbox/planetroller/templates/ sandbox/planetroller/test/ sandbox/planetroller/test/org/ sandbox/planetroller/test/org/roller/ sandbox/planetroller/test/org/roller/model/ sandbox/planetroller/test/org/roller/tools/ sandbox/planetroller/test/org/roller/tools/planet/ sandbox/planetroller/testdata/ sandbox/planetroller/testdata/cache/ sandbox/planetroller/testdata/output/ sandbox/standalone/ sandbox/standalone/jspwiki/ sandbox/standalone/jspwiki/default/ sandbox/standalone/jspwiki/default/images/ sandbox/standalone/lib/ sandbox/standalone/src/ sandbox/standalone/src/org/ sandbox/standalone/src/org/roller/ sandbox/standalone/src/org/roller/jspwiki/ sandbox/standalone/src/org/roller/tomcat/ sandbox/standalone/src/org/roller/util/ sandbox/standalone/tests/ sandbox/standalone/tests/org/ sandbox/standalone/tests/org/roller/ sandbox/standalone/tests/org/roller/util/ sandbox/standalone/tomcat/ src/ src/org/ src/org/roller/ src/org/roller/business/ src/org/roller/business/hibernate/ src/org/roller/business/search/ src/org/roller/business/search/operations/ src/org/roller/business/utils/ src/org/roller/config/ src/org/roller/config/runtime/ src/org/roller/model/ src/org/roller/pojos/ src/org/roller/presentation/ src/org/roller/presentation/atomapi/ src/org/roller/presentation/bookmarks/ src/org/roller/presentation/bookmarks/actions/ src/org/roller/presentation/bookmarks/formbeans/ src/org/roller/presentation/bookmarks/tags/ src/org/roller/presentation/filters/ src/org/roller/presentation/forms/ src/org/roller/presentation/newsfeeds/ src/org/roller/presentation/pagecache/ src/org/roller/presentation/pagecache/rollercache/ src/org/roller/presentation/pings/ src/org/roller/presentation/planet/ src/org/roller/presentation/tags/ src/org/roller/presentation/tags/calendar/ src/org/roller/presentation/tags/menu/ src/org/roller/presentation/util/ src/org/roller/presentation/velocity/ src/org/roller/presentation/weblog/ src/org/roller/presentation/weblog/actions/ src/org/roller/presentation/weblog/formbeans/ src/org/roller/presentation/weblog/tags/ src/org/roller/presentation/website/ src/org/roller/presentation/website/actions/ src/org/roller/presentation/website/formbeans/ src/org/roller/presentation/website/tags/ src/org/roller/presentation/xmlrpc/ src/org/roller/util/ src/org/roller/util/rome/ tests/ tests/org/ tests/org/roller/ tests/org/roller/ant/ tests/org/roller/business/ tests/org/roller/presentation/ tests/org/roller/presentation/atomapi/ tests/org/roller/presentation/bookmarks/ tests/org/roller/presentation/filters/ tests/org/roller/presentation/velocity/ tests/org/roller/presentation/velocity/plugins/ tests/org/roller/presentation/velocity/plugins/smileys/ tests/org/roller/presentation/velocity/plugins/textile/ tests/org/roller/presentation/weblog/ tests/org/roller/presentation/xmlrpc/ tests/org/roller/util/ tests/org/roller/util/rome/ tools/ tools/buildtime/ tools/buildtime/ant-1.6.2/ tools/buildtime/findbugs/ tools/buildtime/findbugs/lib/ tools/buildtime/findbugs/plugin/ tools/buildtime/mockrunner-0.3/ tools/buildtime/mockrunner-0.3/lib/ tools/buildtime/mockrunner-0.35/ tools/buildtime/mockrunner-0.35/lib/ tools/buildtime/tomcat-4.1.24/ tools/buildtime/xdoclet-1.2/ tools/buildtime/xdoclet-1.2/lib/ tools/hibernate-2.1/ tools/hibernate-2.1/lib/ tools/lib/ tools/standard-1.0.3/ tools/standard-1.0.3/lib/ tools/standard-1.0.3/tld/ tools/struts-1.2.4/ tools/struts-1.2.4/lib/ web/ web/WEB-INF/ web/WEB-INF/classes/ web/WEB-INF/classes/flavors/ web/WEB-INF/classes/themes/ web/bookmarks/ web/editor/ web/editor/images/ web/images/ web/images/editor/ web/images/midas/ web/images/preview/ web/images/smileys/ web/planet/ web/tags/ web/templates/ web/theme/ web/theme/images/ web/theme/lavender/ web/theme/scripts/ web/theme/scripts/classes/ web/themes/ web/themes/basic/ web/themes/berkley/ web/themes/berkley/images/ web/themes/brushedmetal/ web/themes/brushedmetal/images/ web/themes/cheb/ web/themes/cheb/images/ web/themes/cheb/scripts/ web/themes/clean/ web/themes/currency-i18n/ web/themes/currency-i18n/images/ web/themes/currency/ web/themes/currency/images/ web/themes/grey2/ web/themes/moonshine/ web/themes/movablemanila/ web/themes/movablemanila/images/ web/themes/pacifica/ web/themes/robot/ web/themes/rolling/ web/themes/rolling/images/ web/themes/sotto/ web/themes/sotto/images/ web/themes/sotto/styles/ web/themes/sunsets/ web/themes/sunsets/images/ web/themes/sunsets/scripts/ web/themes/sunsets/styles/ web/themes/werner/ web/themes/x2/ web/themes/x2/images/ web/themes/x2/scripts/ web/themes/x2/styles/ web/weblog/ web/website/

Added: incubator/roller/trunk/tests/org/roller/RollerTestBase.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/RollerTestBase.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/RollerTestBase.java (added)
+++ incubator/roller/trunk/tests/org/roller/RollerTestBase.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,348 @@
+
+package org.roller;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.roller.business.BookmarkManagerTest;
+import org.roller.model.Roller;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.model.WeblogManager;
+import org.roller.pojos.CommentData;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WeblogCategoryData;
+import org.roller.pojos.WeblogEntryData;
+import org.roller.pojos.WebsiteData;
+
+/**
+ * Base class for Roller backend unit test.
+ * Responsible for creating the appropriate Roller implementation.
+ * Provides setup methods to create website, user, blog entries, bookmarks, etc.
+ */
+public abstract class RollerTestBase extends TestCase
+{
+    public static Log mLogger =
+        LogFactory.getFactory().getInstance(BookmarkManagerTest.class);
+
+    private Roller mRoller = null;
+
+    /** Simple website created by addUser(), no frills. */
+    protected WebsiteData mWebsite = null;
+    protected String testUsername = "testuser";
+
+    /** Collection of websites created, each with category tree. */
+    protected List mWebsites = new LinkedList();
+
+    /** Number of website/users to create */
+    protected int mBlogCount = 1;
+
+    /** Number of categories to create in each category of tree. */
+    protected int mCatCount = 2;
+    /** Depth of created category tree. */
+    protected int mCatDepth = 2;
+    /** Number of weblog entries per category, half will be published status */
+    protected int mEntriesPerCatCount = 6; // 3 of 6 published
+    /** Number of comments to creaate per weblog entry */
+    protected int mCommentCount = 2;
+    
+    protected int mExpectedEntryCount = mEntriesPerCatCount + 
+                                        mEntriesPerCatCount*mCatCount + 
+                                        mEntriesPerCatCount*(mCatCount*mCatDepth);
+    protected int mExpectedPublishedEntryCount = (int)(mEntriesPerCatCount*0.5) + 
+                                        (int)(mEntriesPerCatCount*0.5)*mCatCount + 
+                                        (int)(mEntriesPerCatCount*0.5)*(mCatCount*mCatDepth);
+
+    /** Store users to make teardown easy. */
+    protected List mUsersCreated = new ArrayList();
+    /** Store categories for use in asserts. */
+    protected List mCategoriesCreated = new ArrayList();
+    /** Store entries for use in asserts. */
+    protected List mEntriesCreated = new ArrayList();
+    /** Store comments for use in asserts. */
+    protected List mCommentsCreated = new ArrayList();
+
+    /** Used to walk back through time as entries are created, one per day. */
+    protected Calendar mCalendar = null;
+    
+    //------------------------------------------------------------------------
+    public RollerTestBase()
+    {
+        super();
+    }
+
+    //------------------------------------------------------------------------
+    public RollerTestBase(String name)
+    {
+        super(name);
+    }
+
+    //------------------------------------------------------------------------
+    /**
+     * @see TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        UserManager umgr = getRoller().getUserManager();
+
+        getRoller().begin(UserData.SYSTEM_USER);
+
+        // create User
+        UserData user = createUser(umgr,
+                   testUsername,
+                   "password",
+                   "TestUser",
+                   "testuser@example.com");
+
+        // get website
+        mWebsite = umgr.getWebsite(user.getUserName());
+        getRoller().commit();
+    }
+
+    //-----------------------------------------------------------------------
+    protected UserData createUser(
+                    UserManager umgr,
+                    String username,
+                    String password,
+                    String fullName,
+                    String email) throws RollerException
+    {
+        UserData ud = new UserData(null,
+            username,         // userName
+            password,           // password
+            fullName,      // fullName
+            email, // emailAddress
+            new java.util.Date()  // dateCreated
+            );
+        Map pages = new HashMap();
+        pages.put("Weblog","Weblog page content");
+        pages.put("_day","Day page content");
+        pages.put("css","CSS page content");
+        umgr.addUser(ud, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        return ud;
+    }
+
+    //-----------------------------------------------------------------------
+    /** If you use this, call tearDownTestWeblogs() */
+    public void setUpTestWeblogs() throws Exception
+    {
+        UserManager umgr = getRoller().getUserManager();
+        WeblogManager wmgr = getRoller().getWeblogManager();
+
+        // Loop to create weblogs
+        for (int i=0; i<mBlogCount; i++)
+        {
+            getRoller().begin(UserData.SYSTEM_USER);
+
+            UserData ud = createUser(umgr,
+                "testuser"+i,         // userName
+                "password",           // password
+                "Test User #"+i,      // fullName
+                "test"+i+"@test.com"  // emailAddress
+                );
+            WebsiteData website = umgr.getWebsite(ud.getUserName());
+            mWebsites.add(website);
+            mUsersCreated.add(ud);
+
+            getRoller().commit();
+
+            mLogger.debug("Created user "+ud.getUserName());
+
+            // ensure that the first weblog entry created is the newest
+            mCalendar = Calendar.getInstance();
+            mCalendar.setTime(new Date());
+
+            // create categories
+            getRoller().begin(UserData.SYSTEM_USER);
+            website  = umgr.retrieveWebsite(website.getId());
+            WeblogCategoryData rootCat = wmgr.getRootWeblogCategory(website);
+            createCategoryPostsAndComments(0, wmgr, website, rootCat);
+            getRoller().commit();
+        }
+
+        // commit all the objects
+    }
+
+    private void createCategoryPostsAndComments(
+            int depth,
+            WeblogManager wmgr,
+            WebsiteData website,
+            WeblogCategoryData rootCat) throws RollerException
+    {
+        Calendar commentCalendar = Calendar.getInstance();
+
+        Timestamp day;
+        WeblogEntryData wd;
+        if (depth == 0) 
+        {
+            // roll calendar forward one day
+            mCalendar.roll(Calendar.DATE, true);
+            day = new Timestamp(mCalendar.getTime().getTime());
+            day.setNanos(0); // kludge
+            wd = new WeblogEntryData(
+                 null,      // id
+                 rootCat,    // category
+                 website,    // websiteId
+                 "Future Blog", // title
+                 null,
+                 "Blog to the Future", // text
+                 null,      // anchor
+                 day,        // pubTime
+                 day,        // updateTime
+                 Boolean.TRUE ); // publishEntry
+            wd.save();
+            
+            // roll calendar back to today
+            mCalendar.roll(Calendar.DATE, false);
+        }
+        
+        // create entries under the category passed in
+        for ( int k=0; k<mEntriesPerCatCount; k++ )
+        {
+            day = new Timestamp(mCalendar.getTime().getTime());
+            day.setNanos(0); // kludge
+
+            boolean published = k%2==0 ? true : false;
+
+            wd = new WeblogEntryData(
+                    null,      // id
+                    rootCat,    // category
+                    website,    // websiteId
+                    rootCat.getName() + ":entry"+k, // title
+                    null,
+                    rootCat.getName() + ":entry"+k, // text
+                    null,      // anchor
+                    day,        // pubTime
+                    day,        // updateTime
+                    new Boolean(published) ); // publishEntry
+            wd.save();
+
+            // add at beginning of list
+            mEntriesCreated.add(0, wd);
+
+            Timestamp now = wd.getPubTime();
+            for ( int l=0; l<mCommentCount; l++ )
+            {
+                // need to seperate comments in time
+                // it took alot of trial & error to get this working!
+                commentCalendar.setTime(now);
+                commentCalendar.add(Calendar.HOUR, l);
+                now = new Timestamp(commentCalendar.getTime().getTime());
+                CommentData comment = new CommentData(null,
+                        wd,                   // entry
+                        "name"+l,             // name
+                        "test"+l+"@test.com", // email
+                        "url"+l,              // url
+                        "This is my comment", // content
+                        now,                // postTime
+                        Boolean.FALSE,      // spam
+                        Boolean.FALSE);     // notify
+                comment.save();
+                mCommentsCreated.add(comment);
+                mLogger.debug("         Created comment ["
+                        +comment.getId()+"]"+ comment.getName());
+            }
+
+            mCalendar.add(Calendar.DATE, -1);
+        }
+
+        // create categories under the category passed in
+        for ( int j=0; j<mCatCount; j++ )
+        {
+            WeblogCategoryData cat = wmgr.createWeblogCategory(
+                website,                       // website
+                rootCat,                       // parent
+                rootCat.getName()+"-cat"+j,    // name
+                "desc",                        // description
+                null );                       // image
+            cat.save();
+            mCategoriesCreated.add(cat);
+            mLogger.debug("   Created cat ["+cat.getId()+"]"+cat.getName());
+
+            if (depth < mCatDepth)
+            {
+                createCategoryPostsAndComments(depth+1, wmgr, website, cat);
+            }
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    /** Tear down weblogs created in setupTestWeblogs() */
+    public void tearDownTestWeblogs() throws Exception
+    {
+        getRoller().begin(UserData.SYSTEM_USER);
+        UserManager umgr = getRoller().getUserManager();
+        for (Iterator iter = mUsersCreated.iterator(); iter.hasNext();)
+        {
+            UserData element = (UserData) iter.next();
+            element = umgr.retrieveUser(element.getId());
+            element.remove();
+        }
+        getRoller().commit();
+    }
+
+    //------------------------------------------------------------------------
+
+    /**
+     * Child TestCases should take care to tearDown() their own resources
+     * (including their own implementation).  RollerTestBase will clean up the
+     * getRoller() instance.
+     *
+     * @see TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            deleteWebsite(testUsername);
+            //getRoller().release();
+        }
+        catch (RollerException e)
+        {
+            mLogger.error("Tearing down",e);
+        }
+        super.tearDown();
+    }
+
+    /**
+     * Delete the website created for this test.
+     *
+     * @throws RollerException
+     */
+    private void deleteWebsite(String deleteMe) throws RollerException
+    {
+        mLogger.debug("try to delete " + deleteMe);
+        getRoller().begin(UserData.SYSTEM_USER);
+        mWebsite = getRoller().getUserManager().getWebsite(deleteMe);
+        if (mWebsite != null)
+        {
+            mWebsite.getUser().remove();
+        }
+        getRoller().commit();
+    }
+
+    //------------------------------------------------------------------------
+    /**
+     * Get Roller implementation to be used in tests.
+     */
+    public Roller getRoller() throws RollerException
+    {
+        if ( mRoller == null )
+        {
+            mRoller = RollerFactory.getRoller();
+        }
+        return mRoller;
+    }
+}

Added: incubator/roller/trunk/tests/org/roller/ant/StartHsqldbTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/ant/StartHsqldbTask.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/ant/StartHsqldbTask.java (added)
+++ incubator/roller/trunk/tests/org/roller/ant/StartHsqldbTask.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,60 @@
+package org.roller.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.hsqldb.Server;
+
+/**
+ * Ant Task to start HSQLDB
+ * @author Dave Johnson
+ */
+public class StartHsqldbTask extends Task
+{
+    private String database = null;
+    private String port = null;
+    public void execute() throws BuildException
+    {
+        if (database != null) {
+            Thread server = new Thread() {
+                public void run() {
+                    System.out.println("Starting HSQLDB");
+                    String[] args = { 
+                        "-database", database,
+                        "-port", port,
+                        "-no_system_exit", "true" };
+                    Server.main(args);
+                }
+            };
+            server.start();
+        }
+        try {Thread.sleep(2000);} catch (Exception ignored) {}
+    }
+    /**
+     * @return Returns the database.
+     */
+    public String getDatabase()
+    {
+        return database;
+    }
+    /**
+     * @param database The database to set.
+     */
+    public void setDatabase(String database)
+    {
+        this.database = database;
+    }
+    /**
+     * @return Returns the port.
+     */
+    public String getPort()
+    {
+        return port;
+    }
+    /**
+     * @param port The port to set.
+     */
+    public void setPort(String port)
+    {
+        this.port = port;
+    }
+}

Added: incubator/roller/trunk/tests/org/roller/ant/StopHsqldbTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/ant/StopHsqldbTask.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/ant/StopHsqldbTask.java (added)
+++ incubator/roller/trunk/tests/org/roller/ant/StopHsqldbTask.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,48 @@
+package org.roller.ant;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * Ant Task to stop HSQLDB
+ * @author Dave Johnson
+ */
+public class StopHsqldbTask extends Task
+{
+    private String port = null;
+    public void execute() throws BuildException
+    {
+        try 
+        {
+            if (port==null)
+            {
+                throw new BuildException("missing port attribute");
+            }
+            System.out.println("Stopping HSQLDB at port " + port);
+            final Connection con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:"+port);
+            con.createStatement().execute("SHUTDOWN");
+        } 
+        catch (SQLException e) 
+        {
+            throw new BuildException(e.getMessage());
+        }
+    }
+    /**
+     * @return Returns the port.
+     */
+    public String getPort()
+    {
+        return port;
+    }
+    /**
+     * @param port The port to set.
+     */
+    public void setPort(String port)
+    {
+        this.port = port;
+    }
+}

Added: incubator/roller/trunk/tests/org/roller/business/BookmarkManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/BookmarkManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/BookmarkManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/BookmarkManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,412 @@
+
+package org.roller.business;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+ 
+import org.roller.RollerException;
+import org.roller.RollerPermissionsException;
+import org.roller.model.BookmarkManager;
+import org.roller.model.WeblogManager;
+import org.roller.pojos.BookmarkData;
+import org.roller.pojos.FolderData;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WeblogCategoryData;
+import org.roller.pojos.WebsiteData;
+import org.roller.util.Utilities;
+import org.roller.RollerTestBase;
+
+/**
+ * Test Roller Bookmark Management.
+ */
+public class BookmarkManagerTest extends RollerTestBase
+{
+    //------------------------------------------------------------------------
+    public BookmarkManagerTest()
+    {
+        super();
+    }
+
+    //------------------------------------------------------------------------
+    public BookmarkManagerTest(String name)
+    {
+        super(name);
+    }
+
+    //------------------------------------------------------------------------
+    public static Test suite()
+    {
+        return new TestSuite(BookmarkManagerTest.class);
+    }
+
+    //------------------------------------------------------------------------
+    public static void main(String args[])
+    {
+        junit.textui.TestRunner.run( BookmarkManagerTest.class );
+    }
+
+    //------------------------------------------------------------------------
+
+    public void testAddBookmarkToFolder() throws RollerException
+    {
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        FolderData folder = null;
+        BookmarkData bookmark1 = null, bookmark2 = null;
+
+        getRoller().begin(UserData.SYSTEM_USER);
+
+        WebsiteData website =
+            getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+        FolderData root = bmgr.getRootFolder(website);
+
+        folder = bmgr.createFolder();
+        folder.setName("TestFolder1");
+        folder.setDescription("created by testAddBookmarkToFolder()");
+        folder.setWebsite(website);
+        folder.setParent(root);
+        folder.save();
+
+        // Add bookmark by adding to folder
+        bookmark1 = bmgr.createBookmark(
+            folder,
+            "TestBookmark1",
+            "created by testAddBookmarkToFolder()",
+            "http://www.example.com",
+            "http://www.example.com/rss.xml",
+            new Integer(1),
+            new Integer(12),
+            "test.jpg");
+        folder.addBookmark(bookmark1);
+
+        // Add another bookmark
+        bookmark2 = bmgr.createBookmark(
+            folder,
+            "TestBookmark2",
+            "created by testAddBookmarkToFolder()",
+            "http://www.example.com",
+            "http://www.example.com/rss.xml",
+            new Integer(1),
+            new Integer(12),
+            "test.jpf");
+        folder.addBookmark(bookmark2);
+
+        getRoller().commit();
+
+        FolderData testFolder = null;
+        BookmarkData bookmarkb = null, bookmarka = null;
+
+        getRoller().begin(UserData.SYSTEM_USER);
+        // See that two bookmarks were stored
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        assertEquals(2, testFolder.getBookmarks().size());
+        bookmarka = (BookmarkData)testFolder.getBookmarks().iterator().next();
+        bookmarkb = (BookmarkData)testFolder.getBookmarks().iterator().next();
+        // Remove one bookmark
+        testFolder.removeBookmark(bookmarka);
+        bmgr.removeBookmark(bookmarka.getId());
+        getRoller().commit();
+
+        getRoller().begin(UserData.SYSTEM_USER);
+        // Folder should now contain one bookmark
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        assertEquals(1, testFolder.getBookmarks().size());
+        getRoller().release();
+
+        // Remove folder
+        getRoller().begin(UserData.SYSTEM_USER);
+        testFolder = bmgr.retrieveFolder(folder.getId());
+        testFolder.remove();
+        getRoller().commit();
+
+        getRoller().begin(UserData.SYSTEM_USER);
+        // Folder and one remaining bookmark should be gone
+        assertNull( bmgr.retrieveBookmark(bookmarkb.getId()) );
+        assertNull( bmgr.retrieveFolder(folder.getId()) );
+        getRoller().release();
+    }
+
+    //------------------------------------------------------------------------
+    public void testBookmarkImport() throws Exception
+    {
+        importBookmarks("/bookmarks.opml");
+    }
+
+    //------------------------------------------------------------------------
+    public void importBookmarks(String fileName) throws Exception
+    {
+        getRoller().begin(UserData.SYSTEM_USER);
+        InputStream fis = this.getClass().getResourceAsStream(fileName);
+        getRoller().getBookmarkManager().importBookmarks(
+            mWebsite, "ZZZ_imports_ZZZ", fileToString(fis));
+        getRoller().commit();
+        getRoller().release();
+
+        FolderData fd = null;
+
+        getRoller().begin(UserData.SYSTEM_USER);
+        fd = getRoller().getBookmarkManager().getFolder(mWebsite, "ZZZ_imports_ZZZ");
+        assertTrue("no bookmarks found", fd.retrieveBookmarks(true).size() > 0 );
+        fd.remove();
+        getRoller().commit();
+    }
+
+    //------------------------------------------------------------------------
+    public String fileToString( InputStream is ) throws java.io.IOException
+    {
+        BufferedReader br = new BufferedReader(new InputStreamReader(is));
+        String s = null;
+        StringBuffer sb = new StringBuffer();
+        while ( (s=br.readLine()) != null )
+        {
+            sb.append( s );
+        }
+        return sb.toString();
+    }
+
+    //------------------------------------------------------------------------
+
+    /**
+     * Creates folder tree like this:
+     *    root/
+     *       dest/
+     *       f1/
+     *          b1
+     *          f2/
+     *             f3/
+     */
+    public void testMoveFolderContents() throws RollerException
+    {
+        WebsiteData wd = null;
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+
+        getRoller().begin(UserData.SYSTEM_USER);
+
+        wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+        FolderData root = bmgr.getRootFolder(wd);
+
+        FolderData dest = bmgr.createFolder();
+        dest.setName("dest");
+        dest.setParent(root);
+        dest.setWebsite(wd);
+        dest.save();
+
+        // create source folder f1
+        FolderData f1 = bmgr.createFolder();
+        f1.setName("f1");
+        f1.setParent(root);
+        f1.setWebsite(wd);
+        f1.save();
+
+        // create bookmark b1 inside source folder f1
+        BookmarkData b1 = bmgr.createBookmark(
+            f1, "b1", "testbookmark",
+            "http://example.com", "http://example.com/rss",
+            new Integer(1), new Integer(1), "image.gif");
+        b1.save();
+
+        // create folder f2 inside f1
+        FolderData f2 = bmgr.createFolder();
+        f2.setName("f2");
+        f2.setParent(f1);
+        f2.setWebsite(wd);
+        f2.save();
+
+        // create bookmark b2 inside folder f2
+        BookmarkData b2 = bmgr.createBookmark(
+            f2, "b2", "testbookmark",
+            "http://example.com", "http://example.com/rss",
+            new Integer(1), new Integer(1), "image.gif");
+        b2.save();
+
+        // create folder f3 inside folder f2
+        FolderData f3 = bmgr.createFolder();
+        f3.setName("f3");
+        f3.setParent(f2);
+        f3.setWebsite(wd);
+        f3.save();
+
+        // crete bookmark b3 inside folder f3
+        BookmarkData b3 = bmgr.createBookmark(
+            f3, "b3", "testbookmark",
+            "http://example.com", "http://example.com/rss",
+            new Integer(1), new Integer(1), "image.gif");
+        b3.save();
+
+        getRoller().commit();
+        
+        // test that parent cannot be moved into child
+        boolean safe = false;
+        try 
+        {
+            getRoller().begin(UserData.SYSTEM_USER);     
+                   
+            // Move folder into one of it's children
+            f1 = bmgr.retrieveFolder(f1.getId());       
+            f3 = bmgr.retrieveFolder(f3.getId());       
+            bmgr.moveFolderContents(f1, f3);
+            f3.save();
+            f1.save();
+            getRoller().commit(); 
+        }
+        catch (RollerException e)
+        {
+            safe = true;
+        }
+        assertTrue(safe);
+
+        getRoller().begin(UserData.SYSTEM_USER);
+
+        // verify number of entries in each folder
+        dest = bmgr.retrieveFolder(dest.getId());
+        f1 = bmgr.retrieveFolder(f1.getId());
+        assertEquals(0, dest.retrieveBookmarks(true).size());
+        assertEquals(0, dest.retrieveBookmarks(false).size());
+        assertEquals(1, f1.retrieveBookmarks(false).size());
+
+        List f1list = f1.retrieveBookmarks(true);
+        assertEquals(3, f1list.size());
+
+        // move contents of source category c1 to destination catetory dest
+        f1.moveContents(dest);
+
+        getRoller().commit();
+
+
+
+        getRoller().begin(UserData.SYSTEM_USER);
+
+        // after move, verify number of entries in eacch folder
+        dest = bmgr.retrieveFolder(dest.getId());
+        f1 = bmgr.retrieveFolder(f1.getId());
+        assertEquals(3, dest.retrieveBookmarks(true).size());
+        assertEquals(3, dest.retrieveBookmarks(false).size());
+        assertEquals(0, f1.retrieveBookmarks(true).size());
+        assertEquals(0, f1.retrieveBookmarks(false).size());
+
+        getRoller().commit();
+    }
+
+    /** Test bookmark folder paths. */
+    public void testPaths() throws Exception
+    {
+        WebsiteData wd = null;
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        try
+        {
+            getRoller().begin(UserData.SYSTEM_USER);
+
+            wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+            FolderData root = bmgr.getRootFolder(wd);
+
+            FolderData f1 = bmgr.createFolder();
+            f1.setName("f1");
+            f1.setParent(root);
+            f1.setWebsite(wd);
+            f1.save();
+
+            FolderData f2 = bmgr.createFolder();
+            f2.setName("f2");
+            f2.setParent(f1);
+            f2.setWebsite(wd);
+            f2.save();
+
+            FolderData f3 = bmgr.createFolder();
+            f3.setName("f3");
+            f3.setParent(f2);
+            f3.setWebsite(wd);
+            f3.save();
+
+            getRoller().commit();
+        }
+        catch (RollerException e)
+        {
+            getRoller().release();
+            mLogger.error(e);
+        }
+
+        try
+        {
+            getRoller().begin(UserData.SYSTEM_USER);
+
+            assertEquals("f1",bmgr.getFolderByPath(wd, null, "/f1").getName());
+            assertEquals("f2",bmgr.getFolderByPath(wd, null, "/f1/f2").getName());
+            assertEquals("f3",bmgr.getFolderByPath(wd, null, "/f1/f2/f3").getName());
+
+            FolderData f3 = bmgr.getFolderByPath(wd, null, "/f1/f2/f3");
+            String pathString = bmgr.getPath(f3);
+            String[] pathArray = Utilities.stringToStringArray(pathString,"/");
+            assertEquals("f1", pathArray[0]);
+            assertEquals("f2", pathArray[1]);
+            assertEquals("f3", pathArray[2]);
+
+            getRoller().release();
+        }
+        catch (RollerException e)
+        {
+            getRoller().release();
+            mLogger.error(e);
+        }
+    }
+
+    /** Ensure that duplicate folder name will throw RollerException */
+    public void testUniquenessOfFolderNames() throws Exception
+    {
+        boolean exception = false;
+        WebsiteData wd = null;
+        FolderData f3 = null;
+        BookmarkManager bmgr = getRoller().getBookmarkManager();
+        try
+        {
+            getRoller().begin(UserData.SYSTEM_USER);
+
+            wd = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
+            FolderData root = bmgr.getRootFolder(wd);
+
+            FolderData f1 = bmgr.createFolder();
+            f1.setName("f1");
+            f1.setParent(root);
+            f1.setWebsite(wd);
+            f1.save();
+
+            // first child folder
+            FolderData f2 = bmgr.createFolder();
+            f2.setName("f2");
+            f2.setParent(f1);
+            f2.setWebsite(wd);
+            f2.save();
+
+            getRoller().commit();
+
+            getRoller().begin(UserData.SYSTEM_USER);
+
+            // child folder with same name as first
+            f3 = bmgr.createFolder();
+            f3.setName("f2");
+            f3.setParent(f1);
+            f3.setWebsite(wd);
+            f3.save();
+
+            getRoller().commit();
+        }
+        catch (RollerException e)
+        {
+            exception = true;
+        }
+
+        assertTrue(exception);
+    }
+
+
+}
+
+
+
+
+
+
+

Added: incubator/roller/trunk/tests/org/roller/business/ConfigManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/ConfigManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/ConfigManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/ConfigManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1 @@
+package org.roller.business;

import junit.framework.Test;
import junit.framework.TestSuite; 

import org.roller.RollerException;
import org.roller.RollerPermissionsException;
import org.roller.model.ConfigManager;
import org.roller.pojos.RollerConfigData;
import org.roller.pojos.UserData;
import org.roller.pojos.WebsiteData;
import org.roller.util.OldRollerConfig;
import org.roller.RollerTestBase;
 
///////////////////////////////////////////////////////////////////////////////
/**
 * Test Roller Config Management.
 */
public class ConfigManagerTest extends RollerTestBase
{
    String basedir = System.getProperty("basedir");
	String path = "web/WEB-INF/roller-config.xml";
	ConfigManager configMgr = null;
	OldRollerConfig originalConfig;

    //------------------------------------------------------------------------
    public ConfigManagerTest()
    {
        super();
    }

    //------------------------------------------------------------------------
    public ConfigManagerTest(String name)
    {
        super(name);
    }

    //------------------------------------------------------------------------
    public static Test suite()
    {
        return new TestSuite(ConfigManagerTest.class);
    }

    //------------------------------------------------------------------------
    public static void main(String args[])
    {
        junit.textui.TestRunner.run(ConfigManagerTest.class);
    }

    /**
     * @see junit.framework.TestCase#setUp()
     */
    public void setUp() throws Exception
    {
        super.setUp();

        configMgr = getRoller().getConfigManager();
    }

    public void tearDown() throws Exception
    {
        super.tearDown();
	}

    /* this is no longer a file, so this test is obsolete
	public void testRollerConfigFile()
	{
		path = new java.io.File(basedir,path).getAbsolutePath();
		RollerConfigFile bean = RollerConfigFile.readConfig( path );
		assertNotNull("RollerConfigFile should not be null", bean);
		assertEquals("# editor pages = 0", 0, bean.getEditorPages().size());
	}
    */

	public void testReadFromFile() throws RollerException
	{
/* This hoses my config every time. TODO:Fix
		// first delete any existing - hold value in originalConfig
		deleteConfig();

		// create new RollerConfig from file at path
		path = new java.io.File(basedir,path).getAbsolutePath();
		getRoller().begin(UserData.SYSTEM_USER);
		RollerConfig config = configMgr.readFromFile(path);
		configMgr.storeRollerConfig(config);
		assertNotNull("Got RollerConfig back", config);
		getRoller().commit();

		// now fetch it back out
		getRoller().begin(UserData.SYSTEM_USER);
		RollerConfig config2 = configMgr.getRollerConfig();
		assertEquals("Same RollerConfig", config, config2);
		getRoller().commit();

		// delete our new config
		if (originalConfig != null)
		{
			RollerConfig oldConfig = originalConfig;
			deleteConfig();
			getRoller().begin(UserData.SYSTEM_USER);
			configMgr.storeRollerConfig(oldConfig);
			getRoller().commit();
		}
*/
	}

/*
	private RollerConfig createNewConfig()
	{
		RollerConfig config = new RollerConfig();
        config.setAbsoluteURL ( "http://www.rollerweblogger.org/" );
        config.setRssUseCache ( Boolean.TRUE );
        config.setRssCacheTime ( new Integer(4000) );
        config.setNewUserAllowed ( Boolean.TRUE );
        config.setAdminUsers ( "dave,lance,matt" );
        config.setUserThemes ( "/themes" );
        config.setEditorPages ( "editor.jsp" );
        config.setEnableAggregator ( Boolean.FALSE );
        config.setUploadEnabled ( Boolean.TRUE );
        config.setUploadMaxDirMB ( new BigDecimal("5.0") );
        config.setUploadMaxFileMB ( new BigDecimal("0.5") );
        config.setUploadAllow ( "gif,jpg" );
        config.setUploadForbid ( "" );
        config.setUploadDir ( null );
        config.setUploadPath ( "/resources" );
        config.setMemDebug ( Boolean.FALSE );
        config.setAutoformatComments ( Boolean.FALSE );
        config.setEscapeCommentHtml ( Boolean.FALSE );
        config.setEmailComments ( Boolean.FALSE );
        config.setEnableLinkback ( Boolean.FALSE );
        config.setSiteName ( "RollerConfig Test" );
        config.setSiteDescription ( "JUnit Test of RollerConfig Manager" );
        config.setEmailAddress ( "lance@brainopolis.com" );
        config.setIndexDir ( "/var/lucene-index" );
        return config;
	}

	private void deleteConfig() throws RollerException
	{
		getRoller().begin(UserData.SYSTEM_USER);
		originalConfig = configMgr.getRollerConfig();
		if (originalConfig != null)
		{
			((ConfigManagerImpl)configMgr).removeRollerConfig(originalConfig.getId());
		}
		getRoller().commit();
	}
*/

}
\ No newline at end of file

Added: incubator/roller/trunk/tests/org/roller/business/FileManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/FileManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/FileManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/FileManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,140 @@
+package org.roller.business;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.roller.model.FileManager;
+import org.roller.model.PropertiesManager;
+import org.roller.model.Roller;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.pojos.RollerPropertyData;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WebsiteData;
+import org.roller.util.RollerMessages;
+
+/**
+ * @author David M Johnson
+ */
+public class FileManagerTest extends TestCase
+{
+    //private Roller mRoller = null;
+    //private WebsiteData mWebsite = null;
+    
+    public void setUp() throws Exception
+    {
+        
+    }
+    
+    public void tearDown() throws Exception
+    {
+        // No need to clean up, we are using mocks
+    }
+    
+    public void testCanSave() 
+    {
+        try 
+        {
+            // do some setup for our test
+            Roller mRoller = RollerFactory.getRoller();
+            
+            UserManager umgr = mRoller.getUserManager();
+            WebsiteData mWebsite = umgr.getWebsite("FileManagerTest_userName");
+            
+            if(mWebsite == null)
+                mWebsite = this.createTestUser();
+            
+            // update roller properties to prepare for test
+            PropertiesManager pmgr = mRoller.getPropertiesManager();
+            Map config = pmgr.getProperties();
+            ((RollerPropertyData)config.get("uploads.enabled")).setValue("false");
+            ((RollerPropertyData)config.get("uploads.types.forbid")).setValue("gif");
+            ((RollerPropertyData)config.get("uploads.dir.maxsize")).setValue("1.00");
+            pmgr.store(config);
+            mRoller.commit();
+            
+            FileManager fmgr = new FileManagerImpl();
+            RollerMessages msgs = new RollerMessages();
+            assertFalse(fmgr.canSave(mWebsite, "test.gif", 2500000, msgs));
+            //assertEquals(4, msgs.getErrorCount());
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    public void testSave()
+    {
+        try 
+        {
+            // do some setup for our test
+            Roller mRoller = RollerFactory.getRoller();
+            
+            UserManager umgr = mRoller.getUserManager();
+            WebsiteData mWebsite = umgr.getWebsite("FileManagerTest_userName");
+            
+            if(mWebsite == null)
+                mWebsite = this.createTestUser();
+            
+            // update roller properties to prepare for test
+            PropertiesManager pmgr = mRoller.getPropertiesManager();
+            Map config = pmgr.getProperties();
+            ((RollerPropertyData)config.get("uploads.enabled")).setValue("true");
+            ((RollerPropertyData)config.get("uploads.types.allowed")).setValue("opml");
+            ((RollerPropertyData)config.get("uploads.dir.maxsize")).setValue("1.00");
+            pmgr.store(config);
+            mRoller.commit();
+            
+            /* NOTE: upload dir for unit tests is set in 
+               roller/personal/testing/roller-custom.properties */
+            FileManager fmgr = new FileManagerImpl();
+            RollerMessages msgs = new RollerMessages();
+            InputStream is = getClass().getResourceAsStream("/bookmarks.opml");
+            fmgr.saveFile(mWebsite, "bookmarks.opml", 1545, is);
+            
+            assertEquals(1, fmgr.getFiles(mWebsite).length);
+            
+            fmgr.deleteFile(mWebsite, "bookmarks.opml");
+            Thread.sleep(2000);
+            assertEquals(0, fmgr.getFiles(mWebsite).length);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    private WebsiteData createTestUser() throws Exception {
+        // do some setup for our test
+        Roller mRoller = RollerFactory.getRoller();
+        
+        UserManager umgr = mRoller.getUserManager();
+        mRoller.begin(UserData.SYSTEM_USER);
+        UserData user = new UserData(null,
+                "FileManagerTest_userName",  
+                "FileManagerTest_password",       
+                "FileManagerTest_description",      
+                "FileManagerTest@example.com", 
+                new java.util.Date());
+        Map pages = new HashMap();
+        pages.put("Weblog","Weblog page content");
+        pages.put("_day","Day page content");
+        pages.put("css","CSS page content");
+        umgr.addUser(user, pages, "basic", "en_US_WIN", "America/Los_Angeles");
+        mRoller.commit();
+        WebsiteData mWebsite = umgr.getWebsite(user.getUserName());
+        
+        return mWebsite;
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite(FileManagerTest.class);
+    }
+}

Added: incubator/roller/trunk/tests/org/roller/business/IndexManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/IndexManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/IndexManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/IndexManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,44 @@
+package org.roller.business;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+ 
+import org.roller.business.search.operations.SearchOperation;
+import org.roller.model.IndexManager;
+import org.roller.RollerTestBase;
+
+/**
+ * @author Dave Johnson
+ */
+public class IndexManagerTest extends RollerTestBase
+{
+    public void testSearch() 
+    {
+        try
+        {
+            IndexManager imgr = getRoller().getIndexManager();
+            
+            SearchOperation search = new SearchOperation(imgr);
+            search.setTerm("test");
+            imgr.executeIndexOperationNow(search);
+            assertTrue(search.getResultsCount() > 0);
+            
+            SearchOperation search2 = new SearchOperation(imgr);
+            search2.setTerm("test");
+            imgr.executeIndexOperationNow(search2);
+            assertTrue(search2.getResultsCount() > 0);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    public static Test suite() 
+    {
+        return new TestSuite(IndexManagerTest.class);
+    }
+    public static void main(String[] args)
+    {
+        junit.textui.TestRunner.run(IndexManagerTest.class);
+    }
+}

Added: incubator/roller/trunk/tests/org/roller/business/PermissionsTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/PermissionsTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/PermissionsTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/PermissionsTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,225 @@
+package org.roller.business; 
+
+import java.sql.Timestamp;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+ 
+import org.roller.RollerException;
+import org.roller.RollerPermissionsException;
+import org.roller.model.UserManager;
+import org.roller.model.WeblogManager;
+import org.roller.pojos.BookmarkData;
+import org.roller.pojos.CommentData;
+import org.roller.pojos.FolderData;
+import org.roller.pojos.PageData;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WeblogCategoryData;
+import org.roller.pojos.WeblogEntryData;
+import org.roller.pojos.WebsiteData;
+import org.roller.util.Utilities;
+import org.roller.RollerTestBase;
+
+/**
+ * Test Roller Weblog Management.
+ */
+public class PermissionsTest extends RollerTestBase 
+{    
+    public PermissionsTest(String name) 
+    {
+        super(name);
+    }
+    
+    public static void main(String args[]) 
+    {
+        junit.textui.TestRunner.run(PermissionsTest.class);
+    }
+    
+    public static Test suite() 
+    {
+        return new TestSuite(PermissionsTest.class);
+    }
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        setUpTestWeblogs();
+    }
+        
+    public void tearDown() throws Exception
+    {
+        super.tearDown();
+        tearDownTestWeblogs();
+    }
+    
+    public void testWeblogEntryPermissions() throws Exception
+    {
+        getRoller().begin(UserData.ANONYMOUS_USER);
+        
+        // evil testuser
+        UserData testuser = getRoller().getUserManager().getUser("testuser");       
+        assertNotNull(testuser);
+        
+        // gets hold of testuser0's entry
+        WebsiteData website0 = getRoller().getUserManager().getWebsite("testuser0");
+        assertNotNull(website0);
+        List entries = getRoller().getWeblogManager().getWeblogEntries(
+                website0,
+                null,       // start
+                new Date(), // end
+                null,       // cat
+                WeblogManager.ALL,
+                new Integer(1));
+        WeblogEntryData entry = (WeblogEntryData)entries.get(0);
+        assertNotNull(entry);
+        
+        // and tries to save it
+        getRoller().setUser(testuser);
+        boolean denied = false; 
+        try 
+        {
+            entry.save();
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+        getRoller().rollback();
+    }
+    
+    public void testBookmarkPermissions() throws Exception
+    {
+        getRoller().begin(UserData.ANONYMOUS_USER);
+        
+        // evil testuser
+        UserData testuser = getRoller().getUserManager().getUser("testuser");       
+        assertNotNull(testuser);
+        
+        // gets hold of testuser0's entry
+        WebsiteData website0 = getRoller().getUserManager().getWebsite("testuser0");
+        assertNotNull(website0);
+        List folders = getRoller().getBookmarkManager().getAllFolders(website0);
+        FolderData root = (FolderData)folders.get(0);
+        FolderData folder = (FolderData)root.getFolders().get(0);
+        
+        BookmarkData bookmark = (BookmarkData)(folder.getBookmarks().iterator().next());
+        assertNotNull(bookmark);
+        
+        // and tries to save it
+        getRoller().setUser(testuser);
+        boolean denied = false; 
+        try 
+        {
+            bookmark.save();
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+        
+        getRoller().setUser(testuser);
+        denied = false; 
+        try 
+        {
+            folder.save();
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+       
+        getRoller().rollback();
+    }
+
+    public void testPagePermissions() throws Exception
+    {
+        getRoller().begin(UserData.ANONYMOUS_USER);
+        
+        // evil testuser
+        UserData testuser = getRoller().getUserManager().getUser("testuser");       
+        assertNotNull(testuser);
+        
+        // gets hold of testuser0's entry
+        WebsiteData website0 = getRoller().getUserManager().getWebsite("testuser0");
+        assertNotNull(website0);
+        PageData page = (PageData)getRoller().getUserManager().getPages(website0).get(0);
+        assertNotNull(page);
+        
+        // and tries to save it
+        getRoller().setUser(testuser);
+        boolean denied = false; 
+        try 
+        {
+            page.save();
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+        
+        
+        // and tries to save it
+        getRoller().setUser(testuser);
+        denied = false; 
+        try 
+        {
+            website0.save();
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+
+        
+        getRoller().rollback();
+    }
+
+    /*
+     Disabling this test for now because it won't work.
+    public void testConfigPermissions() throws Exception
+    {
+        getRoller().begin(UserData.ANONYMOUS_USER);
+        
+        // evil testuser0
+        UserData testuser0 = getRoller().getUserManager().getUser("testuser0");       
+        assertNotNull(testuser0);
+        
+        // gets hold of testuser's (an admin) entry
+        WebsiteData website = getRoller().getUserManager().getWebsite("testuser");
+        assertNotNull(website);
+        
+        Map config = getRoller().getPropertiesManager().getProperties();
+        assertNotNull(config);
+        
+        // and tries to save it
+        getRoller().setUser(testuser0);
+        boolean denied = false; 
+        try 
+        {
+            getRoller().getPropertiesManager().store(config);
+        }
+        catch (RollerPermissionsException e)
+        {
+            // permission denied!
+            denied = true;
+        }       
+        assertTrue(denied);
+        getRoller().rollback();
+    }
+    */
+}
+

Added: incubator/roller/trunk/tests/org/roller/business/PlanetManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/PlanetManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/PlanetManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/PlanetManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,456 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc.
+ *
+ * Licensed 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.roller.business;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.roller.RollerException;
+import org.roller.model.PlanetManager;
+import org.roller.model.Roller;
+import org.roller.model.RollerFactory;
+import org.roller.pojos.PlanetConfigData;
+import org.roller.pojos.PlanetEntryData;
+import org.roller.pojos.PlanetGroupData;
+import org.roller.pojos.PlanetSubscriptionData;
+import org.roller.pojos.UserData;
+
+/**
+ * Test database implementation of PlanetManager.
+ * @author Dave Johnson
+ */
+public class PlanetManagerTest extends TestCase
+{
+    private Roller roller = null;
+    
+    public static void main(String[] args)
+    {
+        junit.textui.TestRunner.run(PlanetManagerTest.class);
+    }
+
+    public void testConfigurationStorage() throws Exception
+    {
+        Roller roller = getRoller();
+        assertNotNull(roller);       
+        PlanetManager planet = roller.getPlanetManager();
+        assertNotNull(planet);    
+        
+        {   // save config with default group
+            roller.begin();
+            
+            PlanetConfigData config = new PlanetConfigData();
+            config.setCacheDir("test_cache_dir");
+            config.setTitle("test_title");
+            config.setAdminEmail("test_admin_email");
+
+            PlanetGroupData group = new PlanetGroupData();
+            group.setDescription("test_group_desc");
+            group.setHandle("test_handle");
+            group.setTitle("test_title");
+            planet.saveGroup(group);
+            
+            config.setDefaultGroup(group);
+            planet.saveConfiguration(config);
+            
+            roller.commit();
+        }
+        {   // retrieve config and default group
+            roller.begin();
+            PlanetConfigData config = planet.getConfiguration();
+            assertEquals("test_cache_dir",config.getCacheDir());
+            assertEquals("test_title", config.getTitle());
+            assertEquals("test_admin_email", config.getAdminEmail());
+            
+            PlanetGroupData group = config.getDefaultGroup();
+            assertEquals("test_group_desc",group.getDescription());
+            assertEquals("test_title",group.getTitle());
+            
+            roller.rollback();
+        }
+        {   // remove config
+            roller.begin();
+            PlanetConfigData config = planet.getConfiguration();
+            config.remove();
+            roller.commit();
+        }
+        {
+            // make sure config and group are gone
+            roller.begin();
+            PlanetConfigData config = planet.getConfiguration();
+            assertNull(config);
+            PlanetGroupData group = planet.getGroup("test_handle");
+            assertNull(group);
+            roller.rollback();
+        }
+    }
+    
+    public void testGroupStorage() throws Exception
+    {
+        Roller roller = getRoller();
+        assertNotNull(roller);       
+        PlanetManager planet = roller.getPlanetManager();
+        assertNotNull(planet);  
+        
+        {   // save group
+            roller.begin(UserData.SYSTEM_USER);
+            PlanetGroupData group = new PlanetGroupData();
+            group.setDescription("test_group_desc");
+            group.setHandle("test_handle");
+            group.setTitle("test_title");
+            planet.saveGroup(group);
+            roller.commit();
+        }
+        {   // retrieve group 
+            roller.begin();
+            PlanetGroupData group = planet.getGroup("test_handle");
+            assertEquals("test_group_desc",group.getDescription());
+            assertEquals("test_title",group.getTitle());
+            assertEquals(1, planet.getGroupHandles().size());
+            roller.rollback();
+        }
+        {   // remove group
+            roller.begin();
+            PlanetGroupData group = planet.getGroup("test_handle");
+            planet.deleteGroup(group);
+            roller.commit();
+        }
+        {   // verify that it is gone
+            roller.begin();
+            PlanetGroupData group = planet.getGroup("test_handle");
+            assertNull(group);
+            roller.rollback();
+        }
+    }
+    
+    public void testSubscriptionStorage() throws Exception
+    {
+        Roller roller = getRoller();
+        assertNotNull(roller);       
+        PlanetManager planet = roller.getPlanetManager();
+        assertNotNull(planet);        
+        
+        {   // save subscription
+            roller.begin();
+            PlanetSubscriptionData sub = new PlanetSubscriptionData();
+            sub.setFeedUrl("test_url");
+            planet.saveSubscription(sub);
+            roller.commit();
+        }
+        {   // retrieve subscription and add to group
+            roller.begin();
+            
+            PlanetGroupData group = new PlanetGroupData();
+            group.setDescription("test_group_desc");
+            group.setHandle("test_handle");
+            group.setTitle("test_title");
+            planet.saveGroup(group);
+            
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertNotNull(sub);
+            group.addSubscription(sub);
+            
+            PlanetSubscriptionData sub1 = new PlanetSubscriptionData();
+            sub1.setFeedUrl("test_url1");
+            planet.saveSubscription(sub1);
+            
+            List subs = new ArrayList();
+            subs.add(sub1);
+            group.addSubscriptions(subs); 
+           
+            planet.saveGroup(group);
+
+            roller.commit();
+        }
+        {   // get group and check it's subscriptions, remove it
+            roller.begin();
+            PlanetGroupData group = planet.getGroup("test_handle");
+            Set subs = group.getSubscriptions();
+            assertEquals(2, subs.size());            
+            planet.deleteGroup(group);
+            roller.commit();
+        }
+        {   // make sure group gone, subs still there, then remove them too
+            roller.begin();
+            PlanetGroupData group = planet.getGroup("test_handle");
+            assertNull(group);
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertNotNull(sub);
+            PlanetSubscriptionData sub1 = planet.getSubscription("test_url1");
+            assertNotNull(sub1);
+            planet.deleteSubscription(sub);
+            planet.deleteSubscription(sub1);
+            roller.commit();
+        }
+        {   // make sure subscriptions are gone
+            roller.begin();
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertNull(sub);
+            PlanetSubscriptionData sub1 = planet.getSubscription("test_url1");
+            assertNull(sub1);
+            roller.rollback();
+        }
+    }
+    public void testSubscriptionEntryStorage() throws Exception
+    {
+        Roller roller = getRoller();
+        assertNotNull(roller);       
+        PlanetManager planet = roller.getPlanetManager();
+        assertNotNull(planet);        
+        
+        {   // save subscription
+            roller.begin();
+            PlanetSubscriptionData sub = new PlanetSubscriptionData();
+            sub.setFeedUrl("test_url");
+            planet.saveSubscription(sub);
+            roller.commit();
+        }
+        {   // retrieve subscription and add entries
+            roller.begin();
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertNotNull(sub);
+            
+            PlanetEntryData entry1 = new PlanetEntryData();
+            entry1.setPermalink("test_entry1");
+            entry1.setCategoriesString("test,test2");
+            entry1.setSubscription(sub);
+            entry1.setPublished(new Date());
+            entry1.save();
+            sub.addEntry(entry1);
+            
+            PlanetEntryData entry2 = new PlanetEntryData();
+            entry2.setPermalink("test_entry2");
+            entry2.setCategoriesString("test_cat1,test_cat2,test_cat3");
+            entry2.setSubscription(sub);
+            entry2.setPublished(new Date());
+            entry2.save();
+            sub.addEntry(entry2);
+            
+            roller.commit();
+        }
+        {   // get sub and check it's entries, remove it
+            roller.begin();
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertEquals(2, sub.getEntries().size());
+            planet.deleteSubscription(sub);
+            roller.commit();
+        }
+        {   // make sure sub is gone
+            roller.begin();
+            PlanetSubscriptionData sub = planet.getSubscription("test_url");
+            assertNull(sub);
+            roller.rollback();
+        }
+    }
+    public void testRefreshEntries()
+    {
+        try 
+        {
+            Roller roller = getRoller();
+            assertNotNull(roller);       
+            PlanetManager planet = roller.getPlanetManager();
+            assertNotNull(planet);     
+            String feed_url1 = "http://rollerweblogger.org/rss/roller";
+            {   
+                roller.begin();
+                PlanetConfigData config = new PlanetConfigData();
+                config.setCacheDir("/tmp"); // TODO use real temp dir
+                config.setTitle("test_title");
+                config.setAdminEmail("test_admin_email");
+                planet.saveConfiguration(config);
+                
+                PlanetGroupData group = new PlanetGroupData();
+                group.setDescription("test_group_desc");
+                group.setHandle("test_handle");
+                group.setTitle("test_title");
+                planet.saveGroup(group);
+                
+                PlanetSubscriptionData sub = new PlanetSubscriptionData();
+                sub.setFeedUrl(feed_url1);
+                planet.saveSubscription(sub);
+                
+                group.addSubscription(sub); 
+                planet.saveGroup(group);
+                
+                roller.commit();
+            }        
+            {   
+                roller.begin();
+                planet.refreshEntries();
+                roller.commit();
+                
+                roller.begin();
+                PlanetSubscriptionData sub = planet.getSubscription(feed_url1);
+                assertTrue(sub.getEntries().size() > 0);
+          
+                PlanetGroupData group = planet.getGroup("test_handle");
+                assertNotNull(group);
+                
+                planet.deleteSubscription(sub);
+                planet.deleteGroup(group);
+                
+                PlanetConfigData config = planet.getConfiguration();
+                config.remove();
+                roller.commit();
+            }
+        }
+        catch (Exception e) 
+        {
+            e.printStackTrace();
+        }
+    }
+    public void testAggregations() throws Exception
+    {
+        try 
+        {
+            Roller roller = getRoller();
+            assertNotNull(roller);       
+            PlanetManager planet = roller.getPlanetManager();
+            assertNotNull(planet);     
+            String feed_url1 = "http://rollerweblogger.org/rss/roller";
+            String feed_url2 = "http://linuxintegrators.com/acoliver/?flavor=rss2";
+            {   
+                roller.begin();
+                PlanetConfigData config = new PlanetConfigData();
+                config.setCacheDir("/tmp"); // TODO use real temp dir
+                config.setTitle("test_title");
+                config.setAdminEmail("test_admin_email");
+                planet.saveConfiguration(config);
+                
+                PlanetGroupData group = new PlanetGroupData();
+                group.setDescription("test_group_desc");
+                group.setHandle("test_handle");
+                group.setTitle("test_title");
+                planet.saveGroup(group);
+                
+                PlanetSubscriptionData sub1 = new PlanetSubscriptionData();
+                sub1.setFeedUrl(feed_url1);
+                planet.saveSubscription(sub1);
+                
+                PlanetSubscriptionData sub2 = new PlanetSubscriptionData();
+                sub2.setFeedUrl(feed_url2);
+                planet.saveSubscription(sub2);
+                
+                group.addSubscription(sub1); 
+                group.addSubscription(sub2); 
+                planet.saveGroup(group);
+                
+                roller.commit();
+            }        
+            {   
+                roller.begin();
+                planet.refreshEntries();
+                roller.commit();
+                
+                roller.begin();
+                int count = 0;
+                Iterator subs = planet.getAllSubscriptions();
+                while  (subs.hasNext()) 
+                {
+                    PlanetSubscriptionData sub= (PlanetSubscriptionData)subs.next();
+                    count += sub.getEntries().size();    
+                }
+                PlanetSubscriptionData sub1 = planet.getSubscription(feed_url1);
+                assertTrue(sub1.getEntries().size() > 0);
+                PlanetSubscriptionData sub2 = planet.getSubscription(feed_url2);
+                assertTrue(sub2.getEntries().size() > 0);
+                assertEquals(count, sub1.getEntries().size() + sub2.getEntries().size());
+                
+                PlanetGroupData group = planet.getGroup("test_handle");
+                assertNotNull(group);
+    
+                List bigag = planet.getAggregation(group, 1000);
+                assertEquals(bigag.size(), count);
+                      
+                List littleag = planet.getAggregation(group, 10);
+                assertEquals(littleag.size(), count);
+                                  
+                planet.deleteSubscription(sub1);
+                planet.deleteSubscription(sub2);
+                planet.deleteGroup(group);
+                
+                PlanetConfigData config = planet.getConfiguration();
+                config.remove();
+                roller.commit(); 
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    public void testSubscriptionCount() throws Exception
+    {
+        try 
+        {
+            Roller roller = getRoller();
+            assertNotNull(roller);       
+            PlanetManager planet = roller.getPlanetManager();
+            assertNotNull(planet);     
+            String feed_url1 = "http://rollerweblogger.org/rss/roller";
+            String feed_url2 = "http://linuxintegrators.com/acoliver/?flavor=rss2";
+            {   
+                roller.begin();            
+                PlanetSubscriptionData sub1 = new PlanetSubscriptionData();
+                sub1.setFeedUrl(feed_url1);
+                planet.saveSubscription(sub1);            
+                PlanetSubscriptionData sub2 = new PlanetSubscriptionData();
+                sub2.setFeedUrl(feed_url2);
+                planet.saveSubscription(sub2);
+                roller.commit();
+    
+                roller.begin();
+                assertEquals(2, planet.getSubscriptionCount());
+                roller.rollback();
+            }     
+        }
+        catch (Exception e) 
+        {
+            e.printStackTrace();
+        }
+    }
+    /*
+    public void testRankingRange()
+    {
+        int limit = 1000;
+        int count = 5500;
+        int mod = (count / limit) + 1;        
+        for (int i=0; i<20; i++)
+        {
+            int start = (i % mod) * limit;
+            int end = start + 999;
+            end = end > count ? count : end; 
+            System.out.println("start="+start+" end="+end);
+        }
+    }
+    */
+    public Roller getRoller() throws RollerException
+    {
+        return RollerFactory.getRoller();
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite(PlanetManagerTest.class);
+    }
+}
+    

Added: incubator/roller/trunk/tests/org/roller/business/RefererManagerTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/RefererManagerTest.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/RefererManagerTest.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/RefererManagerTest.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1 @@
+package org.roller.business; 

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import junit.framework.Test;
import junit.framework.TestSuite;
 
import org.roller.RollerException;
import org.roller.model.PropertiesManager;
import org.roller.model.RefererManager;
import org.roller.model.Roller;
import org.roller.pojos.RefererData;
import org.roller.pojos.RollerPropertyData;
import org.roller.pojos.UserData;
import org.roller.pojos.WeblogEntryData;
import org.roller.pojos.WebsiteData;
import org.roller.util.DateUtil;
import org.roller.RollerTestBase;

/**
 * Test Roller Referer Management.
 */
public class RefererManagerTest extends RollerTestBase 
{
    RefererManager rmgr;
    //List refs;
    int count = 20;        
    String testDay;
    String origSpamWords;

    //------------------------------------------------------------------------
	public RefererManagerTest(String name) 
    {
		super(name);
	}
    
    //------------------------------------------------------------------------
	public static void main(String args[]) 
    {
		junit.textui.TestRunner.run(RefererManagerTest.class);
	}
    
    //------------------------------------------------------------------------
    public static Test suite() 
    {
        return new TestSuite(RefererManagerTest.class);
    }

    protected void setUp() throws Exception
    {
        super.setUp();
        
        // add "spamtest" to refererSpamWords
        Roller mRoller = getRoller();
        PropertiesManager pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.referers.ignorewords");
        this.origSpamWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", spamtest");
        pmgr.store(spamprop);
        
        // Process count unique referers
        rmgr = getRoller().getRefererManager();
        Calendar lCalendar = Calendar.getInstance();
        lCalendar.setTime(new Date());
        for (int i = 0; i < count; i++)
        {
            lCalendar.add(Calendar.DATE, -1);
            Timestamp day = new Timestamp(lCalendar.getTime().getTime());

            getRoller().begin(UserData.SYSTEM_USER);
            MockRequest mock = new MockRequest(
                                DateUtil.format8chars(day),
                                "http://test"+i,
                                "http://test"+i,
                                null,
                                mWebsite
            );
            rmgr.processRequest(mock);
            getRoller().commit();
            
            testDay = mock.getDateString();
        }
    }

    public void tearDown() throws Exception
    {      
        List refs = rmgr.getReferers(mWebsite);
        // Remove all referers processes
        for (int i = 0; i < refs.size(); i++)
        {
            rmgr.removeReferer(((RefererData)refs.get(i)).getId());    
        }
        
        // Make sure all were removed
        refs = rmgr.getReferers(mWebsite);            
        assertEquals(0,refs.size());

        // reset refererSpamWords to original value
        Roller mRoller = getRoller();
        PropertiesManager pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.referers.ignorewords");
        spamprop.setValue(this.origSpamWords);
        pmgr.store(spamprop);
        
        super.tearDown();
    }
    
    //------------------------------------------------------------------------
    public void testGetReferersToDate() throws Exception
    {
        List referers = rmgr.getReferersToDate(mWebsite, testDay);
        assertEquals("Should be one Referer.", referers.size(), 1);
    }
    
    //------------------------------------------------------------------------
    public void testRefererProcessing() throws RollerException
    {
        List refs = rmgr.getReferers(mWebsite);            
        assertEquals("number of referers should equal count", count, refs.size());
        
        int hits = rmgr.getDayHits(mWebsite);
        assertEquals("There should be one fewer hits than referers", count, hits);         
    }
    
    public void testSelfRefererDenial() throws RollerException
    {
        // test against "self referrals"
        getRoller().begin(UserData.SYSTEM_USER);
        // create "direct" referer
        boolean isSpam = rmgr.processRequest(
            new MockRequest(
                "20020101",
                "direct",
                "http://test.com",
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spam", isSpam);
        int newRefCount = rmgr.getReferers(mWebsite).size();
        
        // now create self-referer
        getRoller().begin(UserData.SYSTEM_USER);
        isSpam = rmgr.processRequest(
            new MockRequest(
                "20020202",
                "http://test.com/page/" + mWebsite.getUser().getUserName(),
                "http://test.com",
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spam", isSpam);
        
        // number of referrers should not have changed
        List refs = rmgr.getReferers(mWebsite);            
        assertEquals("self referal not ignored", newRefCount, refs.size()); 
        
        // now create self-referer from editor page
        isSpam = rmgr.processRequest(
            new MockRequest(
                "20020202",
                "http://test.com/weblog.do",
                "http://test.com",
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spam", isSpam);
        
        // number of referrers should not have changed
        refs = rmgr.getReferers(mWebsite);            
        assertEquals("editor referal not ignored", newRefCount, refs.size()); 
    }
    
    /**
     * Test to see if Referer Spam detection works.
     */
    public void testSpamBlocking()
    {
        boolean isSpam = rmgr.processRequest(
            new MockRequest(
                "20040101",
                "http://www.spamtest.com",
                "http://test.com",
                null, mWebsite
            )
        );
        //assertTrue("failed to detect referer spam", isSpam);
    }
    
    public void testApplyRefererFilters() throws Exception
    {
        List refs = rmgr.getReferers(mWebsite);
        assertEquals(count, refs.size());
        String origWords = null;
        
        getRoller().begin(UserData.SYSTEM_USER);
        Roller mRoller = getRoller();
        PropertiesManager pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.referers.ignorewords");
        origWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", test");
        pmgr.store(spamprop);
        getRoller().commit();
        
        getRoller().begin(UserData.SYSTEM_USER);
        getRoller().getRefererManager().applyRefererFilters();
        getRoller().commit();
        
        refs = rmgr.getReferers(mWebsite);
        assertEquals(0, refs.size());

        getRoller().begin(UserData.SYSTEM_USER);
        spamprop = pmgr.getProperty("spam.referers.ignorewords");
        spamprop.setValue(origWords);
        pmgr.store(spamprop);
        getRoller().commit();
    }
    
    public void testApplyRefererFiltersWebsite() throws Exception
    {
        List refs = rmgr.getReferers(mWebsite);
        assertEquals(count, refs.size());
        String origWords = null;
        
        getRoller().begin(UserData.SYSTEM_USER);
        mWebsite = getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
        origWords = mWebsite.getIgnoreWords();
        mWebsite.setIgnoreWords("test");
        mWebsite.save();
        getRoller().commit();
        
        getRoller().begin(UserData.SYSTEM_USER);
        getRoller().getRefererManager().applyRefererFilters();
        getRoller().commit();
        
        refs = rmgr.getReferers(mWebsite);
        assertEquals(0, refs.size());
    }
}

class MockRequest implements org.roller.model.ParsedRequest
{  
    private String mDateStr = null;
    private String mRefUrl = null;
    private String mReqUrl = null;
    private WeblogEntryData mEntry = null;
    private WebsiteData mWebsite = null;
    private boolean mIsDateSpecified = false;
    
    public MockRequest( 
        String dateStr, String refUrl, String reqUrl, 
        WeblogEntryData entry, WebsiteData website) 
    {
        mDateStr = dateStr;
        mRefUrl = refUrl;
        mReqUrl = reqUrl;
        mEntry = entry;
        mWebsite = website;
        
        if (mDateStr != null) mIsDateSpecified = true;
    }
    
    /**
     * @see org.roller.pojos.ParsedRequest#getDateString()
     */
    public String getDateString()
    {
        return mDateStr;
    }

    /**
     * @see org.roller.pojos.ParsedRequest#getRefererURL()
     */
    public String getRefererURL()
    {
        return mRefUrl;
    }

    /**
     * @see org.roller.pojos.ParsedRequest#getRequestURL()
     */
    public String getRequestURL()
    {
        return mReqUrl;
    }

    /**
     * @see org.roller.pojos.ParsedRequest#getWeblogEntry()
     */
    public WeblogEntryData getWeblogEntry()
    {
        return mEntry;
    }

    /**
     * @see org.roller.pojos.ParsedRequest#getWebsite()
     */
    public WebsiteData getWebsite()
    {
        return mWebsite;
    }

    /**
     * Returns the isDateSpecified.
     * @return boolean
     */
    public boolean isDateSpecified()
    {
        return mIsDateSpecified;
    }

    /**
     * Sets the isDateSpecified.
     * @param isDateSpecified The isDateSpecified to set
     */
    public void setDateSpecified(boolean isDateSpecified)
    {
        mIsDateSpecified = isDateSpecified;
    }

    /** 
     * @see org.roller.pojos.ParsedRequest#isEnableLinkback()
     */
    public boolean isEnableLinkback()
    {
        return false;
    }
}
\ No newline at end of file

Added: incubator/roller/trunk/tests/org/roller/business/TestAll.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/tests/org/roller/business/TestAll.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/tests/org/roller/business/TestAll.java (added)
+++ incubator/roller/trunk/tests/org/roller/business/TestAll.java Wed Jun  8 20:18:46 2005
@@ -0,0 +1,39 @@
+package org.roller.business;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+
+/**
+ * Run the essential business layer tests (convenience test for IDEs)
+ * 
+ * @author llavandowska
+ */
+public class TestAll extends TestCase
+{
+    public static Test suite()
+    {
+        TestSuite suite = new TestSuite();
+        suite.addTest(BookmarkManagerTest.suite());
+        suite.addTest(ConfigManagerTest.suite());
+        suite.addTest(FileManagerTest.suite());
+        suite.addTest(IndexManagerTest.suite());             
+        suite.addTest(PermissionsTest.suite());
+        suite.addTest(PlanetManagerTest.suite());
+        suite.addTest(RefererManagerTest.suite());
+        suite.addTest(UserManagerTest.suite());
+        suite.addTest(WeblogManagerTest.suite());
+        return suite;
+    }
+    public TestAll(String testName)
+    {
+        super(testName);
+    }
+
+    public static void main(String[] args)
+    {
+        String[] testCaseName = { TestAll.class.getName() };
+        junit.textui.TestRunner.main(testCaseName);
+    }
+}
\ No newline at end of file