You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2008/02/13 07:24:06 UTC
svn commit: r627271 [6/8] - in
/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki:
./ action/ attachment/ auth/ auth/acl/ auth/authorize/ auth/login/
auth/permissions/ auth/user/ dav/ diff/ filters/ htmltowiki/ parser/
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/PagePermissionTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/PagePermissionTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/PagePermissionTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/PagePermissionTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,351 @@
+package com.ecyrd.jspwiki.auth.permissions;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Andrew R. Jaquith
+ */
+public class PagePermissionTest extends TestCase
+{
+
+ public static void main( String[] args )
+ {
+ junit.textui.TestRunner.run( PagePermissionTest.class );
+ }
+
+ /*
+ * Class under test for boolean equals(java.lang.Object)
+ */
+ public final void testEqualsObject()
+ {
+ PagePermission p1 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ PagePermission p2 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ PagePermission p3 = new PagePermission( "mywiki:Main", "delete,view,edit" );
+ PagePermission p4 = new PagePermission( "mywiki:Main*", "delete,view,edit" );
+ assertEquals( p1, p2 );
+ assertEquals( p1, p3 );
+ assertFalse( p3.equals( p4 ) );
+ }
+
+ public final void testCreateMask()
+ {
+ assertEquals( 1, PagePermission.createMask( "view" ) );
+ assertEquals( 19, PagePermission.createMask( "view,edit,delete" ) );
+ assertEquals( 19, PagePermission.createMask( "edit,delete,view" ) );
+ assertEquals( 14, PagePermission.createMask( "edit,comment,upload" ) );
+ }
+
+ /*
+ * Class under test for java.lang.String toString()
+ */
+ public final void testToString()
+ {
+ PagePermission p;
+ p = new PagePermission( "Main", "view,edit,delete" );
+ assertEquals( "(\"com.ecyrd.jspwiki.auth.permissions.PagePermission\",\":Main\",\"delete,edit,view\")", p
+ .toString() );
+ p = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ assertEquals( "(\"com.ecyrd.jspwiki.auth.permissions.PagePermission\",\"mywiki:Main\",\"delete,edit,view\")", p
+ .toString() );
+ }
+
+ /**
+ * Tests wiki name support.
+ */
+ public final void testWikiNames()
+ {
+ PagePermission p1;
+ PagePermission p2;
+
+ // Permissions without prepended wiki name should never imply themselves
+ // or others
+ p1 = new PagePermission( "Main", "edit" );
+ p2 = new PagePermission( "Main", "edit" );
+ assertFalse( p1.implies( p1 ) );
+ assertFalse( p1.implies( p2 ) );
+
+ // Permissions with a wildcard wiki should imply other wikis
+ p1 = new PagePermission( "*:Main", "edit" );
+ p2 = new PagePermission( "mywiki:Main", "edit" );
+ assertTrue( p1.implies( p2 ) );
+ assertFalse( p2.implies( p1 ) );
+
+ // Permissions that start with ":" are just like null
+ p1 = new PagePermission( ":Main", "edit" );
+ p2 = new PagePermission( "Main", "edit" );
+ assertFalse( p1.implies( p1 ) );
+ assertFalse( p1.implies( p2 ) );
+ }
+
+ public final void testImpliesAttachments()
+ {
+ PagePermission p1;
+ PagePermission p2;
+
+ // A page should imply its attachment and vice-versa
+ p1 = new PagePermission( "mywiki:Main", "view" );
+ p2 = new PagePermission( "mywiki:Main/test.png", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p2.implies( p1 ) );
+ }
+
+ /*
+ * Class under test for boolean implies(java.security.Permission)
+ */
+ public final void testImpliesPermission()
+ {
+ PagePermission p1;
+ PagePermission p2;
+ PagePermission p3;
+
+ // The same permission should imply itself
+ p1 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ p2 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p2.implies( p1 ) );
+
+ // The same permission should imply itself for wildcard wikis
+ p1 = new PagePermission( "Main", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view,edit,delete" );
+ p3 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ assertFalse( p1.implies( p2 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p1.implies( p3 ) );
+ assertTrue( p2.implies( p3 ) );
+ assertFalse( p3.implies( p1 ) );
+ assertFalse( p3.implies( p2 ) );
+
+ // Actions on collection should imply permission for page with same
+ // actions
+ p1 = new PagePermission( "*:*", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view,edit,delete" );
+ p3 = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertTrue( p2.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Actions on single page should imply subset of those actions
+ p1 = new PagePermission( "*:Main", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+ assertFalse( p3.implies( p2 ) );
+
+ // Actions on collection should imply subset of actions on single page
+ p1 = new PagePermission( "*:*", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p1 = new PagePermission( "*:Mai*", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p1 = new PagePermission( "*:*in", "view,edit,delete" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Delete action on collection should imply modify/edit/upload/comment/view on
+ // single page
+ p1 = new PagePermission( "*:*in", "delete" );
+ p2 = new PagePermission( "*:Main", "edit" );
+ p3 = new PagePermission( "mywiki:Main", "edit" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "modify" );
+ p3 = new PagePermission( "mywiki:Main", "modify" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "upload" );
+ p3 = new PagePermission( "mywiki:Main", "upload" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "comment" );
+ p3 = new PagePermission( "mywiki:Main", "comment" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Rename action on collection should imply edit on single page
+ p1 = new PagePermission( "*:*in", "rename" );
+ p2 = new PagePermission( "*:Main", "edit" );
+ p3 = new PagePermission( "mywiki:Main", "edit" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Modify action on collection should imply upload/comment/view on single
+ // page
+ p1 = new PagePermission( "*:*in", "modify" );
+ p2 = new PagePermission( "*:Main", "upload" );
+ p3 = new PagePermission( "mywiki:Main", "upload" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "comment" );
+ p3 = new PagePermission( "mywiki:Main", "comment" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Upload action on collection should imply view on single page
+ p1 = new PagePermission( "*:*in", "upload" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Comment action on collection should imply view on single page
+ p1 = new PagePermission( "*:*in", "comment" );
+ p2 = new PagePermission( "*:Main", "view" );
+ p3 = new PagePermission( "mywiki:Main", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // View action on wildcard collection SHOULD imply view on
+ // GroupConfiguration page
+ p1 = new PagePermission( "*:*", "view" );
+ p2 = new PagePermission( "*:GroupConfiguration", "view" );
+ p3 = new PagePermission( "mywiki:GroupConfiguration", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ // Pre- and post- wildcards should also be fine
+ p1 = new PagePermission( "*:Group*", "view" );
+ p2 = new PagePermission( "*:GroupConfiguration", "view" );
+ p3 = new PagePermission( "mywiki:GroupConfiguration", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+
+ p1 = new PagePermission( "*:*Configuration", "view" );
+ p2 = new PagePermission( "*:GroupConfiguration", "view" );
+ p3 = new PagePermission( "mywiki:GroupConfiguration", "view" );
+ assertTrue( p1.implies( p2 ) );
+ assertTrue( p1.implies( p3 ) );
+ assertFalse( p2.implies( p1 ) );
+ assertFalse( p3.implies( p1 ) );
+ }
+
+ public final void testImplies()
+ {
+ assertFalse(PagePermission.RENAME.implies( PagePermission.MODIFY ) );
+ assertTrue( PagePermission.RENAME.implies( PagePermission.EDIT ) );
+ assertFalse(PagePermission.RENAME.implies( PagePermission.UPLOAD ) );
+ assertTrue( PagePermission.RENAME.implies( PagePermission.COMMENT ) );
+ assertTrue( PagePermission.RENAME.implies( PagePermission.VIEW ) );
+
+ assertTrue( PagePermission.DELETE.implies( PagePermission.MODIFY ) );
+ assertTrue( PagePermission.DELETE.implies( PagePermission.EDIT ) );
+ assertTrue( PagePermission.DELETE.implies( PagePermission.UPLOAD ) );
+ assertTrue( PagePermission.DELETE.implies( PagePermission.COMMENT ) );
+ assertTrue( PagePermission.DELETE.implies( PagePermission.VIEW ) );
+
+ assertTrue( PagePermission.MODIFY.implies( PagePermission.EDIT ) );
+ assertTrue( PagePermission.MODIFY.implies( PagePermission.UPLOAD ) );
+ assertTrue( PagePermission.MODIFY.implies( PagePermission.COMMENT ) );
+ assertTrue( PagePermission.MODIFY.implies( PagePermission.VIEW ) );
+
+ assertTrue( PagePermission.EDIT.implies( PagePermission.VIEW ) );
+ assertTrue( PagePermission.EDIT.implies( PagePermission.COMMENT ) );
+
+ assertTrue( PagePermission.UPLOAD.implies( PagePermission.VIEW ) );
+
+ assertTrue( PagePermission.COMMENT.implies( PagePermission.VIEW ) );
+ }
+
+ public final void testImpliedMask()
+ {
+ int result = ( PagePermission.DELETE_MASK | PagePermission.MODIFY_MASK | PagePermission.EDIT_MASK
+ | PagePermission.COMMENT_MASK | PagePermission.UPLOAD_MASK | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.DELETE_MASK ) );
+
+ result = ( PagePermission.RENAME_MASK | PagePermission.EDIT_MASK | PagePermission.COMMENT_MASK
+ | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.RENAME_MASK ) );
+
+ result = ( PagePermission.MODIFY_MASK | PagePermission.EDIT_MASK | PagePermission.COMMENT_MASK
+ | PagePermission.UPLOAD_MASK | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.MODIFY_MASK ) );
+
+ result = ( PagePermission.EDIT_MASK | PagePermission.COMMENT_MASK | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.EDIT_MASK ) );
+
+ result = ( PagePermission.COMMENT_MASK | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.COMMENT_MASK ) );
+
+ result = ( PagePermission.UPLOAD_MASK | PagePermission.VIEW_MASK );
+ assertEquals( result, PagePermission.impliedMask( PagePermission.UPLOAD_MASK ) );
+ }
+
+ public final void testGetName()
+ {
+ PagePermission p;
+ p = new PagePermission( "Main", "view,edit,delete" );
+ assertEquals( "Main", p.getName() );
+ p = new PagePermission( "mywiki:Main", "view,edit,delete" );
+ assertEquals( "mywiki:Main", p.getName() );
+ assertNotSame( "*:Main", p.getName() );
+ }
+
+ /*
+ * Class under test for java.lang.String getActions()
+ */
+ public final void testGetActions()
+ {
+ PagePermission p = new PagePermission( "Main", "VIEW,edit,delete" );
+ assertEquals( "delete,edit,view", p.getActions() );
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/WikiPermissionTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/WikiPermissionTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/WikiPermissionTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/WikiPermissionTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,157 @@
+package com.ecyrd.jspwiki.auth.permissions;
+
+import junit.framework.TestCase;
+
+
+/**
+ * @author Andrew Jaquith
+ */
+public class WikiPermissionTest extends TestCase
+{
+
+ public void testHashCode()
+ {
+ }
+
+ public void testWikiPermission()
+ {
+ WikiPermission p = new WikiPermission("*", "createPages");
+ assertEquals("*", p.getName());
+ assertEquals("*", p.getWiki());
+ assertEquals("createpages", p.getActions());
+ }
+
+ /*
+ * Class under test for boolean equals(Object)
+ */
+ public void testEqualsObject()
+ {
+ WikiPermission p1 = new WikiPermission("*", "createPages");
+ WikiPermission p2 = new WikiPermission("*", "createPages");
+ WikiPermission p3 = new WikiPermission("*", "createGroups");
+ assertTrue(p1.equals(p2));
+ assertTrue(p2.equals(p1));
+ assertFalse(p1.equals(p3));
+ assertFalse(p3.equals(p1));
+ WikiPermission p4 = new WikiPermission("*", "createPages,createGroups");
+ WikiPermission p5 = new WikiPermission("*", "createGroups,createPages");
+ assertTrue(p4.equals(p5));
+ }
+
+ /*
+ * Class under test for boolean equals(Object)
+ */
+ public void testEqualsObjectNSi()
+ {
+ WikiPermission p1 = new WikiPermission("mywiki", "createPages");
+ WikiPermission p2 = new WikiPermission("*", "createPages");
+ WikiPermission p3 = new WikiPermission("mywiki", "createGroups");
+ assertFalse(p1.equals(p2));
+ assertFalse(p2.equals(p1));
+ assertFalse(p1.equals(p3));
+ assertFalse(p3.equals(p1));
+ WikiPermission p4 = new WikiPermission("mywiki", "createPages,createGroups");
+ WikiPermission p5 = new WikiPermission("*", "createGroups,createPages");
+ assertFalse(p4.equals(p5));
+ }
+
+ /*
+ * Class under test for String getActions()
+ */
+ public void testGetActions()
+ {
+ WikiPermission p1 = new WikiPermission("*", "createPages,createGroups,editProfile");
+ assertEquals("creategroups,createpages,editprofile", p1.getActions());
+ WikiPermission p2 = new WikiPermission("*", "createGroups,editProfile,createPages");
+ assertEquals("creategroups,createpages,editprofile", p2.getActions());
+ }
+
+ /*
+ * Class under test for boolean implies(Permission)
+ */
+ public void testImpliesPermission()
+ {
+ // Superset of actions implies all individual actions
+ WikiPermission p1 = new WikiPermission("*", "createPages,createGroups,editProfile");
+ WikiPermission p2 = new WikiPermission("*", "createPages");
+ WikiPermission p3 = new WikiPermission("*", "createGroups");
+ WikiPermission p5 = new WikiPermission("*", "editPreferences");
+ WikiPermission p6 = new WikiPermission("*", "editProfile");
+ assertTrue(p1.implies(p2));
+ assertFalse(p2.implies(p1));
+ assertTrue(p1.implies(p3));
+ assertFalse(p3.implies(p1));
+ assertTrue(p1.implies(p6));
+ assertFalse(p6.implies(p1));
+
+ // createGroups implies createPages
+ assertTrue(p3.implies(p2));
+ assertFalse(p2.implies(p3));
+
+ // editProfile implies nothing
+ assertFalse(p6.implies(p5));
+ assertFalse(p6.implies(p3));
+ assertFalse(p6.implies(p3));
+ assertFalse(p6.implies(p1));
+ }
+
+ /*
+ * Class under test for boolean implies(Permission)
+ */
+ public void testImpliesPermissionNS()
+ {
+ // Superset of actions implies all individual actions
+ WikiPermission p1 = new WikiPermission("*", "createPages,createGroups,editProfile");
+ WikiPermission p2 = new WikiPermission("mywiki", "createPages");
+ WikiPermission p3 = new WikiPermission("mywiki", "createGroups");
+ WikiPermission p4 = new WikiPermission("urwiki", "editProfile");
+ WikiPermission p5 = new WikiPermission("*", "editPreferences");
+ assertTrue(p1.implies(p2));
+ assertFalse(p2.implies(p1));
+ assertTrue(p1.implies(p3));
+ assertFalse(p3.implies(p1));
+ assertTrue(p1.implies(p4));
+ assertFalse(p4.implies(p1));
+
+ // createGroups implies createPages
+ assertTrue(p3.implies(p2));
+ assertFalse(p2.implies(p3));
+
+ // editPreferences does not imply editProfile
+ assertFalse(p5.implies(p4));
+ assertFalse(p4.implies(p5));
+ }
+
+ /*
+ * Class under test for String toString()
+ */
+ public void testToString()
+ {
+ WikiPermission p1 = new WikiPermission("*", "createPages,createGroups,editProfile");
+ String result = "(\"com.ecyrd.jspwiki.auth.permissions.WikiPermission\",\"*\",\"creategroups,createpages,editprofile\")";
+ assertEquals(result, p1.toString());
+ }
+
+ public void testImpliedMask()
+ {
+ assertEquals(3, WikiPermission.impliedMask(1));
+ assertEquals(2, WikiPermission.impliedMask(2));
+ assertEquals(4, WikiPermission.impliedMask(4));
+ }
+
+ public void testCreateMask()
+ {
+ assertEquals(1, WikiPermission.createMask("createGroups"));
+ assertEquals(2, WikiPermission.createMask("createPages"));
+ assertEquals(3, WikiPermission.createMask("createGroups,createPages"));
+ assertEquals(4, WikiPermission.createMask("editPreferences"));
+ assertEquals(5, WikiPermission.createMask("createGroups,editPreferences"));
+ assertEquals(6, WikiPermission.createMask("createPages,editPreferences"));
+ assertEquals(7, WikiPermission.createMask("createGroups,createPages,editPreferences"));
+ assertEquals(8, WikiPermission.createMask("editProfile"));
+ assertEquals(9, WikiPermission.createMask("createGroups,editProfile"));
+ assertEquals(16, WikiPermission.createMask("login"));
+ assertEquals(24, WikiPermission.createMask("login,editProfile"));
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/AllTests.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/AllTests.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/AllTests.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,25 @@
+package com.ecyrd.jspwiki.auth.user;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * @author Andrew R. Jaquith
+ */
+public class AllTests extends TestCase
+{
+ public AllTests( String s )
+ {
+ super( s );
+ }
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite( "User profile and database tests" );
+ suite.addTestSuite( UserProfileTest.class );
+ suite.addTestSuite( JDBCUserDatabaseTest.class );
+ suite.addTestSuite( XMLUserDatabaseTest.class );
+ return suite;
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/JDBCUserDatabaseTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/JDBCUserDatabaseTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/JDBCUserDatabaseTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/JDBCUserDatabaseTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,358 @@
+package com.ecyrd.jspwiki.auth.user;
+
+import java.io.File;
+import java.security.Principal;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Timestamp;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+
+import junit.framework.TestCase;
+
+import com.ecyrd.jspwiki.TestJDBCDataSource;
+import com.ecyrd.jspwiki.TestJNDIContext;
+import com.ecyrd.jspwiki.auth.NoSuchPrincipalException;
+import com.ecyrd.jspwiki.auth.WikiSecurityException;
+
+/**
+ * @author Andrew Jaquith
+ */
+public class JDBCUserDatabaseTest extends TestCase
+{
+ private JDBCUserDatabase m_db = null;
+
+ private static final String INSERT_JANNE = "INSERT INTO users (" +
+ JDBCUserDatabase.DEFAULT_DB_EMAIL + "," +
+ JDBCUserDatabase.DEFAULT_DB_FULL_NAME + "," +
+ JDBCUserDatabase.DEFAULT_DB_LOGIN_NAME + "," +
+ JDBCUserDatabase.DEFAULT_DB_PASSWORD + "," +
+ JDBCUserDatabase.DEFAULT_DB_WIKI_NAME + "," +
+ JDBCUserDatabase.DEFAULT_DB_CREATED + ") VALUES (" +
+ "'janne@ecyrd.com'," + "'Janne Jalkanen'," + "'janne'," +
+ "'{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee'," +
+ "'JanneJalkanen'," +
+ "'" + new Timestamp( new Timestamp( System.currentTimeMillis() ).getTime() ).toString() + "'" + ");";
+
+ private static final String INSERT_USER = "INSERT INTO users (" +
+ JDBCUserDatabase.DEFAULT_DB_EMAIL + "," +
+ JDBCUserDatabase.DEFAULT_DB_LOGIN_NAME + "," +
+ JDBCUserDatabase.DEFAULT_DB_PASSWORD + "," +
+ JDBCUserDatabase.DEFAULT_DB_CREATED + ") VALUES (" +
+ "'user@example.com'," + "'user'," +
+ "'{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'," +
+ "'" + new Timestamp( new Timestamp( System.currentTimeMillis() ).getTime() ).toString() + "'" + ");";
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ // Set up the mock JNDI initial context
+ TestJNDIContext.initialize();
+ Context initCtx = new InitialContext();
+ initCtx.bind( "java:comp/env", new TestJNDIContext() );
+ Context ctx = (Context) initCtx.lookup( "java:comp/env" );
+ DataSource ds = new TestJDBCDataSource( new File( "build.properties" ) );
+ ctx.bind( JDBCUserDatabase.DEFAULT_DB_JNDI_NAME, ds );
+
+ // Get the JDBC connection and init tables
+ try
+ {
+ Connection conn = ds.getConnection();
+ Statement stmt = conn.createStatement();
+ String sql;
+
+ sql = "DELETE FROM " + JDBCUserDatabase.DEFAULT_DB_TABLE + ";";
+ stmt.executeUpdate( sql );
+
+ // Create a new test user 'janne'
+ stmt.executeUpdate( INSERT_JANNE );
+
+ // Create a new test user 'user'
+ stmt.executeUpdate( INSERT_USER );
+ stmt.close();
+
+ conn.close();
+
+ // Initialize the user database
+ m_db = new JDBCUserDatabase();
+ m_db.initialize( null, new Properties() );
+ }
+ catch( SQLException e )
+ {
+ System.err.println("Looks like your database could not be connected to - "+
+ "please make sure that you have started your database "+
+ "(e.g. by running ant hsql-start)");
+
+ throw (SQLException) e.fillInStackTrace();
+ }
+ }
+
+ public void testDeleteByLoginName() throws WikiSecurityException
+ {
+ // First, count the number of users in the db now.
+ int oldUserCount = m_db.getWikiNames().length;
+
+ // Create a new user with random name
+ String loginName = "TestUser" + String.valueOf( System.currentTimeMillis() );
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail("testuser@testville.com");
+ profile.setLoginName( loginName );
+ profile.setFullname( "FullName"+loginName );
+ profile.setPassword("password");
+ m_db.save(profile);
+
+ // Make sure the profile saved successfully
+ profile = m_db.findByLoginName( loginName );
+ assertEquals( loginName, profile.getLoginName() );
+ assertEquals( oldUserCount+1, m_db.getWikiNames().length );
+
+ // Now delete the profile; should be back to old count
+ m_db.deleteByLoginName( loginName );
+ assertEquals( oldUserCount, m_db.getWikiNames().length );
+ }
+
+ public void testFindByEmail()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByEmail( "janne@ecyrd.com" );
+ assertEquals( "janne", profile.getLoginName() );
+ assertEquals( "Janne Jalkanen", profile.getFullname() );
+ assertEquals( "JanneJalkanen", profile.getWikiName() );
+ assertEquals( "{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword() );
+ assertEquals( "janne@ecyrd.com", profile.getEmail() );
+ assertNotNull( profile.getCreated() );
+ assertNull( profile.getLastModified() );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( false );
+ }
+ try
+ {
+ m_db.findByEmail( "foo@bar.org" );
+ // We should never get here
+ assertTrue( false );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testFindByFullName()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByFullName( "Janne Jalkanen" );
+ assertEquals( "janne", profile.getLoginName() );
+ assertEquals( "Janne Jalkanen", profile.getFullname() );
+ assertEquals( "JanneJalkanen", profile.getWikiName() );
+ assertEquals( "{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword() );
+ assertEquals( "janne@ecyrd.com", profile.getEmail() );
+ assertNotNull( profile.getCreated() );
+ assertNull( profile.getLastModified() );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( false );
+ }
+ try
+ {
+ m_db.findByEmail( "foo@bar.org" );
+ // We should never get here
+ assertTrue( false );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testFindByWikiName()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByWikiName( "JanneJalkanen" );
+ assertEquals( "janne", profile.getLoginName() );
+ assertEquals( "Janne Jalkanen", profile.getFullname() );
+ assertEquals( "JanneJalkanen", profile.getWikiName() );
+ assertEquals( "{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword() );
+ assertEquals( "janne@ecyrd.com", profile.getEmail() );
+ assertNotNull( profile.getCreated() );
+ assertNull( profile.getLastModified() );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( false );
+ }
+ try
+ {
+ m_db.findByEmail( "foo" );
+ // We should never get here
+ assertTrue( false );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testFindByLoginName()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByLoginName( "janne" );
+ assertEquals( "janne", profile.getLoginName() );
+ assertEquals( "Janne Jalkanen", profile.getFullname() );
+ assertEquals( "JanneJalkanen", profile.getWikiName() );
+ assertEquals( "{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword() );
+ assertEquals( "janne@ecyrd.com", profile.getEmail() );
+ assertNotNull( profile.getCreated() );
+ assertNull( profile.getLastModified() );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( false );
+ }
+ try
+ {
+ m_db.findByEmail( "FooBar" );
+ // We should never get here
+ assertTrue( false );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testGetWikiName() throws WikiSecurityException
+ {
+ Principal[] principals = m_db.getWikiNames();
+ assertEquals( 1, principals.length );
+ }
+
+ public void testRename() throws Exception
+ {
+ // Try renaming a non-existent profile; it should fail
+ try
+ {
+ m_db.rename( "nonexistentname", "renameduser" );
+ fail( "Should not have allowed rename..." );
+ }
+ catch ( NoSuchPrincipalException e )
+ {
+ // Cool; that's what we expect
+ }
+
+ // Create new user & verify it saved ok
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail( "renamed@example.com" );
+ profile.setFullname( "Renamed User" );
+ profile.setLoginName( "olduser" );
+ profile.setPassword( "password" );
+ m_db.save( profile );
+ profile = m_db.findByLoginName( "olduser" );
+ assertNotNull( profile );
+
+ // Try renaming to a login name that's already taken; it should fail
+ try
+ {
+ m_db.rename( "olduser", "janne" );
+ fail( "Should not have allowed rename..." );
+ }
+ catch ( DuplicateUserException e )
+ {
+ // Cool; that's what we expect
+ }
+
+ // Now, rename it to an unused name
+ m_db.rename( "olduser", "renameduser" );
+
+ // The old user shouldn't be found
+ try
+ {
+ profile = m_db.findByLoginName( "olduser" );
+ fail( "Old user was found, but it shouldn't have been." );
+ }
+ catch ( NoSuchPrincipalException e )
+ {
+ // Cool, it's gone
+ }
+
+ // The new profile should be found, and its properties should match the old ones
+ profile = m_db.findByLoginName( "renameduser" );
+ assertEquals( "renamed@example.com", profile.getEmail() );
+ assertEquals( "Renamed User", profile.getFullname() );
+ assertEquals( "renameduser", profile.getLoginName() );
+ assertEquals( "{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", profile.getPassword() );
+
+ // Delete the user
+ m_db.deleteByLoginName( "renameduser" );
+ }
+
+ public void testSave()
+ {
+ try
+ {
+ // Overwrite existing user
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail( "user@example.com" );
+ profile.setFullname( "Test User" );
+ profile.setLoginName( "user" );
+ profile.setPassword( "password" );
+ m_db.save( profile );
+ profile = m_db.findByEmail( "user@example.com" );
+ assertEquals( "user@example.com", profile.getEmail() );
+ assertEquals( "Test User", profile.getFullname() );
+ assertEquals( "user", profile.getLoginName() );
+ assertEquals( "{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", profile.getPassword() );
+ assertEquals( "TestUser", profile.getWikiName() );
+ assertNotNull( profile.getCreated() );
+ assertNotNull( profile.getLastModified() );
+ assertNotSame( profile.getCreated(), profile.getLastModified() );
+
+ // Create new user
+ profile = new DefaultUserProfile();
+ profile.setEmail( "user2@example.com" );
+ profile.setFullname( "Test User 2" );
+ profile.setLoginName( "user2" );
+ profile.setPassword( "password" );
+ m_db.save( profile );
+ profile = m_db.findByEmail( "user2@example.com" );
+ assertEquals( "user2@example.com", profile.getEmail() );
+ assertEquals( "Test User 2", profile.getFullname() );
+ assertEquals( "user2", profile.getLoginName() );
+ assertEquals( "{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", profile.getPassword() );
+ assertEquals( "TestUser2", profile.getWikiName() );
+ assertNotNull( profile.getCreated() );
+ assertNotNull( profile.getLastModified() );
+ assertEquals( profile.getCreated(), profile.getLastModified() );
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ assertTrue( false );
+ }
+ catch( WikiSecurityException e )
+ {
+ assertTrue( false );
+ }
+ }
+
+ public void testValidatePassword()
+ {
+ assertFalse( m_db.validatePassword( "janne", "test" ) );
+ assertTrue( m_db.validatePassword( "janne", "myP@5sw0rd" ) );
+ assertTrue( m_db.validatePassword( "user", "password" ) );
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/UserProfileTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/UserProfileTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/UserProfileTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/UserProfileTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,67 @@
+package com.ecyrd.jspwiki.auth.user;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.log4j.PropertyConfigurator;
+
+import com.ecyrd.jspwiki.TestEngine;
+
+/**
+ * Tests the DefaultUserProfile class.
+ * @author Janne Jalkanen
+ */
+public class UserProfileTest extends TestCase
+{
+ public UserProfileTest( String s )
+ {
+ super( s );
+ Properties props = new Properties();
+ try
+ {
+ props.load( TestEngine.findTestProperties() );
+ PropertyConfigurator.configure(props);
+ }
+ catch( IOException e ) {}
+ }
+
+ public void setUp()
+ throws Exception
+ {
+ }
+
+ public void tearDown()
+ {
+ }
+
+ public void testEquals()
+ {
+ UserProfile p = new DefaultUserProfile();
+ UserProfile p2 = new DefaultUserProfile();
+
+ p.setFullname("Alice");
+ p2.setFullname("Bob");
+
+ assertFalse( p.equals( p2 ) );
+ }
+
+ public void testEquals2()
+ {
+ UserProfile p = new DefaultUserProfile();
+ UserProfile p2 = new DefaultUserProfile();
+
+ p.setFullname("Alice");
+ p2.setFullname("Alice");
+
+ assertTrue( p.equals( p2 ) );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( UserProfileTest.class );
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/XMLUserDatabaseTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/XMLUserDatabaseTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/XMLUserDatabaseTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/auth/user/XMLUserDatabaseTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,249 @@
+package com.ecyrd.jspwiki.auth.user;
+import java.security.Principal;
+import java.util.Properties;
+
+import org.apache.commons.lang.ArrayUtils;
+
+import junit.framework.TestCase;
+
+import com.ecyrd.jspwiki.TestEngine;
+import com.ecyrd.jspwiki.WikiEngine;
+import com.ecyrd.jspwiki.auth.NoSuchPrincipalException;
+import com.ecyrd.jspwiki.auth.Users;
+import com.ecyrd.jspwiki.auth.WikiPrincipal;
+import com.ecyrd.jspwiki.auth.WikiSecurityException;
+
+
+
+/**
+ * @author Andrew Jaquith
+ */
+public class XMLUserDatabaseTest extends TestCase
+{
+
+ private XMLUserDatabase m_db;
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ Properties props = new Properties();
+ props.load( TestEngine.findTestProperties() );
+ props.put(XMLUserDatabase.PROP_USERDATABASE, "tests/etc/userdatabase.xml");
+ WikiEngine engine = new TestEngine(props);
+ m_db = new XMLUserDatabase();
+ m_db.initialize(engine, props);
+ }
+
+ public void testDeleteByLoginName() throws WikiSecurityException
+ {
+ // First, count the number of users in the db now.
+ int oldUserCount = m_db.getWikiNames().length;
+
+ // Create a new user with random name
+ String loginName = "TestUser" + String.valueOf( System.currentTimeMillis() );
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail("testuser@testville.com");
+ profile.setLoginName( loginName );
+ profile.setFullname( "FullName"+loginName );
+ profile.setPassword("password");
+ m_db.save(profile);
+
+ // Make sure the profile saved successfully
+ profile = m_db.findByLoginName( loginName );
+ assertEquals( loginName, profile.getLoginName() );
+ assertEquals( oldUserCount+1, m_db.getWikiNames().length );
+
+ // Now delete the profile; should be back to old count
+ m_db.deleteByLoginName( loginName );
+ assertEquals( oldUserCount, m_db.getWikiNames().length );
+ }
+
+ public void testFindByEmail()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByEmail("janne@ecyrd.com");
+ assertEquals("janne", profile.getLoginName());
+ assertEquals("Janne Jalkanen", profile.getFullname());
+ assertEquals("JanneJalkanen", profile.getWikiName());
+ assertEquals("{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword());
+ assertEquals("janne@ecyrd.com", profile.getEmail());
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(false);
+ }
+ try
+ {
+ m_db.findByEmail("foo@bar.org");
+ // We should never get here
+ assertTrue(false);
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(true);
+ }
+ }
+
+ public void testFindByWikiName()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByWikiName("JanneJalkanen");
+ assertEquals("janne", profile.getLoginName());
+ assertEquals("Janne Jalkanen", profile.getFullname());
+ assertEquals("JanneJalkanen", profile.getWikiName());
+ assertEquals("{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword());
+ assertEquals("janne@ecyrd.com", profile.getEmail());
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(false);
+ }
+ try
+ {
+ m_db.findByEmail("foo");
+ // We should never get here
+ assertTrue(false);
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(true);
+ }
+ }
+
+ public void testFindByLoginName()
+ {
+ try
+ {
+ UserProfile profile = m_db.findByLoginName("janne");
+ assertEquals("janne", profile.getLoginName());
+ assertEquals("Janne Jalkanen", profile.getFullname());
+ assertEquals("JanneJalkanen", profile.getWikiName());
+ assertEquals("{SHA}457b08e825da547c3b77fbc1ff906a1d00a7daee", profile.getPassword());
+ assertEquals("janne@ecyrd.com", profile.getEmail());
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(false);
+ }
+ try
+ {
+ m_db.findByEmail("FooBar");
+ // We should never get here
+ assertTrue(false);
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(true);
+ }
+ }
+
+ public void testGetWikiNames() throws WikiSecurityException
+ {
+ // There are 8 test users in the database
+ Principal[] p = m_db.getWikiNames();
+ assertEquals( 8, p.length );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( "JanneJalkanen", WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( "", WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( "Administrator", WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( Users.ALICE, WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( Users.BOB, WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( Users.CHARLIE, WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( "FredFlintstone", WikiPrincipal.WIKI_NAME ) ) );
+ assertTrue( ArrayUtils.contains( p, new WikiPrincipal( Users.BIFF, WikiPrincipal.WIKI_NAME ) ) );
+ }
+
+ public void testRename() throws Exception
+ {
+ // Try renaming a non-existent profile; it should fail
+ try
+ {
+ m_db.rename( "nonexistentname", "renameduser" );
+ fail( "Should not have allowed rename..." );
+ }
+ catch ( NoSuchPrincipalException e )
+ {
+ // Cool; that's what we expect
+ }
+
+ // Create new user & verify it saved ok
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail( "renamed@example.com" );
+ profile.setFullname( "Renamed User" );
+ profile.setLoginName( "olduser" );
+ profile.setPassword( "password" );
+ m_db.save( profile );
+ profile = m_db.findByLoginName( "olduser" );
+ assertNotNull( profile );
+
+ // Try renaming to a login name that's already taken; it should fail
+ try
+ {
+ m_db.rename( "olduser", "janne" );
+ fail( "Should not have allowed rename..." );
+ }
+ catch ( DuplicateUserException e )
+ {
+ // Cool; that's what we expect
+ }
+
+ // Now, rename it to an unused name
+ m_db.rename( "olduser", "renameduser" );
+
+ // The old user shouldn't be found
+ try
+ {
+ profile = m_db.findByLoginName( "olduser" );
+ fail( "Old user was found, but it shouldn't have been." );
+ }
+ catch ( NoSuchPrincipalException e )
+ {
+ // Cool, it's gone
+ }
+
+ // The new profile should be found, and its properties should match the old ones
+ profile = m_db.findByLoginName( "renameduser" );
+ assertEquals( "renamed@example.com", profile.getEmail() );
+ assertEquals( "Renamed User", profile.getFullname() );
+ assertEquals( "renameduser", profile.getLoginName() );
+ assertEquals( "{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", profile.getPassword() );
+
+ // Delete the user
+ m_db.deleteByLoginName( "renameduser" );
+ }
+
+ public void testSave()
+ {
+ try
+ {
+ UserProfile profile = new DefaultUserProfile();
+ profile.setEmail("user@example.com");
+ profile.setLoginName("user");
+ profile.setPassword("password");
+ m_db.save(profile);
+ profile = m_db.findByEmail("user@example.com");
+ assertEquals("user@example.com", profile.getEmail());
+ assertEquals("{SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", profile.getPassword());
+ }
+ catch (NoSuchPrincipalException e)
+ {
+ assertTrue(false);
+ }
+ catch (WikiSecurityException e)
+ {
+ assertTrue(false);
+ }
+ }
+
+ public void testValidatePassword()
+ {
+ assertFalse(m_db.validatePassword("janne", "test"));
+ assertTrue(m_db.validatePassword("janne", "myP@5sw0rd"));
+ assertTrue(m_db.validatePassword("user", "password"));
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AllTests.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AllTests.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AllTests.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,23 @@
+/*
+ * (C) Janne Jalkanen 2005
+ *
+ */
+package com.ecyrd.jspwiki.dav;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class AllTests extends TestCase
+{
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("DAV tests");
+
+ suite.addTest( DavPathTest.suite() );
+ suite.addTest( RawPagesDavProviderTest.suite() );
+ suite.addTest( HTMLPagesDavProviderTest.suite() );
+ suite.addTest( AttachmentDavProviderTest.suite() );
+ return suite;
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AttachmentDavProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AttachmentDavProviderTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AttachmentDavProviderTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/AttachmentDavProviderTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,82 @@
+package com.ecyrd.jspwiki.dav;
+
+import java.util.Properties;
+
+import com.ecyrd.jspwiki.TestEngine;
+import com.ecyrd.jspwiki.attachment.Attachment;
+import com.ecyrd.jspwiki.dav.items.DavItem;
+import com.ecyrd.jspwiki.dav.items.DirectoryItem;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class AttachmentDavProviderTest extends TestCase
+{
+ Properties props = new Properties();
+
+ TestEngine engine;
+
+ AttachmentDavProvider m_provider;
+
+ protected void setUp() throws Exception
+ {
+ props.load( TestEngine.findTestProperties() );
+
+ engine = new TestEngine(props);
+
+ m_provider = new AttachmentDavProvider(engine);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ engine.deleteAttachments( "TestPage" );
+ TestEngine.deleteTestPage("TestPage");
+ }
+
+ public void testGetPageURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+ Attachment att = new Attachment(engine,"TestPage","deceit of the tribbles.txt");
+
+ engine.getAttachmentManager().storeAttachment( att, engine.makeAttachmentFile() );
+
+ DavItem di = m_provider.getItem( new DavPath("TestPage/deceit of the tribbles.txt") );
+
+ assertNotNull( "No di", di );
+ assertEquals("URL", "http://localhost/attach/TestPage/deceit+of+the+tribbles.txt",
+ di.getHref() );
+ }
+
+ public void testDirURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/attach/", di.getHref() );
+ }
+
+ public void testDirURL2()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("TestPage/") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/attach/TestPage/", di.getHref() );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( RawPagesDavProviderTest.class );
+ }
+
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/DavPathTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/DavPathTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/DavPathTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/DavPathTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,165 @@
+/*
+ * (C) Janne Jalkanen 2005
+ *
+ */
+package com.ecyrd.jspwiki.dav;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class DavPathTest extends TestCase
+{
+ public void testCreate1()
+ {
+ String src = "/";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "path", "/", dp.pathPart() );
+ assertEquals( "file", "", dp.filePart() );
+ }
+
+ public void testCreate2()
+ {
+ String src = "/test/foo/bar.txt";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "path", "/test/foo/", dp.pathPart() );
+ assertEquals( "file", "bar.txt", dp.filePart() );
+ }
+
+ public void testCreate3()
+ {
+ String src = "/test/foo/";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "path", "/test/foo/", dp.pathPart() );
+ assertEquals( "file", "", dp.filePart() );
+ }
+
+ public void testCreate4()
+ {
+ String src = "";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "path", "", dp.pathPart() );
+ assertEquals( "file", "", dp.filePart() );
+ }
+
+ public void testCreate5()
+ {
+ String src = "/foo//bar///goo";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "path", "/foo/bar/", dp.pathPart() );
+ assertEquals( "file", "goo", dp.filePart() );
+ }
+
+ public void testSubPath()
+ {
+ String src = "/foo/bar/goo/blot";
+
+ DavPath dp = new DavPath( src );
+
+ DavPath subdp = dp.subPath( 2 );
+
+ assertEquals( "goo/blot", subdp.getPath() );
+ }
+
+ public void testSubPath2()
+ {
+ String src = "/foo/bar/goo/blot";
+
+ DavPath dp = new DavPath( src );
+
+ DavPath subdp = dp.subPath( 0 );
+
+ assertEquals( "/foo/bar/goo/blot", subdp.getPath() );
+ }
+
+ public void testSubPath3()
+ {
+ String src = "/foo/bar/goo/blot";
+
+ DavPath dp = new DavPath( src );
+
+ DavPath subdp = dp.subPath( 3 );
+
+ assertEquals( "blot", subdp.getPath() );
+ }
+
+ public void testGetPath()
+ {
+ String src = "/foo/bar/goo/blot";
+
+ DavPath dp = new DavPath( src );
+
+ assertEquals( "/foo/bar/goo/blot", dp.getPath() );
+ }
+
+ public void testRoot1()
+ {
+ String src = "";
+
+ DavPath dp = new DavPath( src );
+
+ assertTrue( dp.isRoot() );
+ }
+
+ public void testRoot2()
+ {
+ String src = "/";
+
+ DavPath dp = new DavPath( src );
+
+ assertTrue( dp.isRoot() );
+ }
+
+ public void testRoot3()
+ {
+ String src = "foo";
+
+ DavPath dp = new DavPath( src );
+
+ assertFalse( dp.isRoot() );
+ }
+
+ public void testRoot4()
+ {
+ String src = "/foo";
+
+ DavPath dp = new DavPath( src );
+
+ assertFalse( dp.isRoot() );
+ }
+
+ public void testAppend1()
+ {
+ DavPath dp = new DavPath("/foo/bar/");
+
+ dp.append("/zorp");
+
+ assertEquals( "/foo/bar/zorp", dp.getPath() );
+ }
+
+ public void testAppend2()
+ {
+ DavPath dp = new DavPath("/foo/bar/");
+
+ dp.append("zorp/grub/");
+
+ assertEquals( "/foo/bar/zorp/grub/", dp.getPath() );
+ }
+
+
+ public static Test suite()
+ {
+ return new TestSuite( DavPathTest.class );
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/HTMLPagesDavProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/HTMLPagesDavProviderTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/HTMLPagesDavProviderTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/HTMLPagesDavProviderTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,77 @@
+package com.ecyrd.jspwiki.dav;
+
+import java.util.Properties;
+
+import com.ecyrd.jspwiki.TestEngine;
+import com.ecyrd.jspwiki.dav.items.DavItem;
+import com.ecyrd.jspwiki.dav.items.DirectoryItem;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class HTMLPagesDavProviderTest extends TestCase
+{
+
+ Properties props = new Properties();
+
+ TestEngine engine;
+
+ HTMLPagesDavProvider m_provider;
+
+ protected void setUp() throws Exception
+ {
+ props.load( TestEngine.findTestProperties() );
+
+ engine = new TestEngine(props);
+
+ m_provider = new HTMLPagesDavProvider(engine);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ TestEngine.deleteTestPage("TestPage");
+ }
+
+ public void testGetPageURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("t/TestPage.html") );
+
+ assertNotNull( "No di", di );
+ assertEquals("URL", "http://localhost/dav/html/t/TestPage.html", di.getHref() );
+ }
+
+ public void testDirURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/dav/html/", di.getHref() );
+ }
+
+ public void testDirURL2()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("t/") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/dav/html/t/", di.getHref() );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( HTMLPagesDavProviderTest.class );
+ }
+
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/RawPagesDavProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/RawPagesDavProviderTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/RawPagesDavProviderTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/dav/RawPagesDavProviderTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,76 @@
+package com.ecyrd.jspwiki.dav;
+
+import java.util.Properties;
+
+import com.ecyrd.jspwiki.TestEngine;
+import com.ecyrd.jspwiki.dav.items.DavItem;
+import com.ecyrd.jspwiki.dav.items.DirectoryItem;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class RawPagesDavProviderTest extends TestCase
+{
+ Properties props = new Properties();
+
+ TestEngine engine;
+
+ RawPagesDavProvider m_provider;
+
+ protected void setUp() throws Exception
+ {
+ props.load( TestEngine.findTestProperties() );
+
+ engine = new TestEngine(props);
+
+ m_provider = new RawPagesDavProvider(engine);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ TestEngine.deleteTestPage("TestPage");
+ }
+
+ public void testGetPageURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("t/TestPage.txt") );
+
+ assertNotNull( "No di", di );
+ assertEquals("URL", "http://localhost/dav/raw/t/TestPage.txt", di.getHref() );
+ }
+
+ public void testDirURL()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/dav/raw/", di.getHref() );
+ }
+
+ public void testDirURL2()
+ throws Exception
+ {
+ engine.saveText("TestPage", "foobar");
+
+ DavItem di = m_provider.getItem( new DavPath("t/") );
+
+ assertNotNull( "No di", di );
+ assertTrue( "DI is of wrong type", di instanceof DirectoryItem );
+ assertEquals("URL", "http://localhost/dav/raw/t/", di.getHref() );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( RawPagesDavProviderTest.class );
+ }
+
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/AllTests.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/AllTests.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/AllTests.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,22 @@
+/*
+ * (C) Janne Jalkanen 2005
+ *
+ */
+package com.ecyrd.jspwiki.diff;
+
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class AllTests extends TestCase
+{
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("DIFF tests");
+
+ suite.addTest( ContextualDiffProviderTest.suite() );
+
+ return suite;
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/ContextualDiffProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/ContextualDiffProviderTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/ContextualDiffProviderTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/diff/ContextualDiffProviderTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,196 @@
+package com.ecyrd.jspwiki.diff;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.log4j.PropertyConfigurator;
+
+import com.ecyrd.jspwiki.*;
+
+public class ContextualDiffProviderTest extends TestCase
+{
+ /**
+ * Sets up some shorthand notation for writing test cases.
+ * <p>
+ * The quick |^Brown Fox^-Blue Monster-| jumped over |^the^| moon.
+ * <p>
+ * Get it?
+ */
+ private void specializedNotation(ContextualDiffProvider diff)
+ {
+ diff.m_changeEndHtml = "|";
+ diff.m_changeStartHtml = "|";
+
+ diff.m_deletionEndHtml = "-";
+ diff.m_deletionStartHtml = "-";
+
+ diff.m_diffEnd = "";
+ diff.m_diffStart = "";
+
+ diff.m_elidedHeadIndicatorHtml = "...";
+ diff.m_elidedTailIndicatorHtml = "...";
+
+ diff.m_emitChangeNextPreviousHyperlinks = false;
+
+ diff.m_insertionEndHtml = "^";
+ diff.m_insertionStartHtml = "^";
+
+ diff.m_lineBreakHtml = "";
+ diff.m_alternatingSpaceHtml = "_";
+ }
+
+
+
+ public void testNoChanges() throws IOException, WikiException
+ {
+ diffTest(null, "", "", "");
+ diffTest(null, "A", "A", "A");
+ diffTest(null, "A B", "A B", "A B");
+
+ diffTest(null, " ", " ", " _ _ _");
+ diffTest(null, "A B C", "A B C", "A B _C");
+ diffTest(null, "A B C", "A B C", "A B _ C");
+ }
+
+
+
+ public void testSimpleInsertions() throws IOException, WikiException
+ {
+ // Ah, the white space trailing an insertion is tacked onto the insertion, this is fair, the
+ // alternative would be to greedily take the leading whitespace before the insertion as part
+ // of it instead, and that doesn't make any more or less sense. just remember this behaviour
+ // when writing tests.
+
+ // Simple inserts...
+ diffTest(null, "A C", "A B C", "A |^B ^|C");
+ diffTest(null, "A D", "A B C D", "A |^B C ^|D");
+
+ // Simple inserts with spaces...
+ diffTest(null, "A C", "A B C", "A |^B _^|C");
+ diffTest(null, "A C", "A B C", "A |^B _ ^|C");
+ diffTest(null, "A C", "A B C", "A |^B _ _^|C");
+
+ // Just inserted spaces...
+ diffTest(null, "A B", "A B", "A |^_^|B");
+ diffTest(null, "A B", "A B", "A |^_ ^|B");
+ diffTest(null, "A B", "A B", "A |^_ _^|B");
+ diffTest(null, "A B", "A B", "A |^_ _ ^|B");
+ }
+
+
+
+ public void testSimpleDeletions() throws IOException, WikiException
+ {
+ // Simple deletes...
+ diffTest(null, "A B C", "A C", "A |-B -|C");
+ diffTest(null, "A B C D", "A D", "A |-B C -|D");
+
+ // Simple deletes with spaces...
+ diffTest(null, "A B C", "A C", "A |-B _-|C");
+ diffTest(null, "A B C", "A C", "A |-B _ -|C");
+
+ // Just deleted spaces...
+ diffTest(null, "A B", "A B", "A |-_-|B");
+ diffTest(null, "A B", "A B", "A |-_ -|B");
+ diffTest(null, "A B", "A B", "A |-_ _-|B");
+ }
+
+
+
+ public void testContextLimits() throws IOException, WikiException
+ {
+ // No change
+ diffTest("1", "A B C D E F G H I", "A B C D E F G H I", "A...");
+ //TODO Hmm, should the diff provider instead return the string, "No Changes"?
+
+ // Bad property value, should default to huge context limit and return entire string.
+ diffTest("foobar", "A B C D E F G H I", "A B C D F G H I", "A B C D |-E -|F G H I");
+
+ // One simple deletion, limit context to 2...
+ diffTest("2", "A B C D E F G H I", "A B C D F G H I", "...D |-E -|F ...");
+
+ // Deletion of first element, limit context to 2...
+ diffTest("2", "A B C D E", "B C D E", "|-A -|B ...");
+
+ // Deletion of last element, limit context to 2...
+ diffTest("2", "A B C D E", "A B C D ", "...D |-E-|");
+
+ // Two simple deletions, limit context to 2...
+ diffTest("2", "A B C D E F G H I J K L M N O P", "A B C E F G H I J K M N O P",
+ "...C |-D -|E ......K |-L -|M ...");
+
+ }
+
+ public void testMultiples() throws IOException, WikiException
+ {
+ diffTest(null, "A F", "A B C D E F", "A |^B C D E ^|F");
+ diffTest(null, "A B C D E F", "A F", "A |-B C D E -|F");
+
+ }
+
+ public void testSimpleChanges() throws IOException, WikiException
+ {
+ // *changes* are actually an insert and a delete in the output...
+
+ //single change
+ diffTest(null, "A B C", "A b C", "A |^b^-B-| C");
+
+ //non-consequtive changes...
+ diffTest(null, "A B C D E", "A b C d E", "A |^b^-B-| C |^d^-D-| E");
+
+ }
+
+ // FIXME: This test fails; must be enabled again asap.
+ /*
+ public void testKnownProblemCases() throws NoRequiredPropertyException, IOException
+ {
+ //These all fail...
+
+ //make two consequtive changes
+ diffTest(null, "A B C D", "A b c D", "A |^b c^-B C-| D");
+ //acually returns -> "A |^b^-B-| |^c^-C-| D"
+
+ //collapse adjacent elements...
+ diffTest(null, "A B C D", "A BC D", "A |^BC^-B C-| D");
+ //acually returns -> "A |^BC^-B-| |-C -|D"
+
+
+ //These failures are all due to how we process the diff results, we need to collapse
+ //adjacent edits into one...
+
+ }
+ */
+
+ private void diffTest(String contextLimit, String oldText, String newText, String expectedDiff)
+ throws IOException, WikiException
+ {
+ ContextualDiffProvider diff = new ContextualDiffProvider();
+
+ specializedNotation(diff);
+
+ Properties props = new Properties();
+ if (null != contextLimit)
+ props.put(ContextualDiffProvider.PROP_UNCHANGED_CONTEXT_LIMIT, contextLimit);
+
+ diff.initialize(null, props);
+
+ props.load( TestEngine.findTestProperties() );
+ PropertyConfigurator.configure(props);
+ TestEngine engine = new TestEngine(props);
+
+ WikiContext ctx = engine.getWikiActionBeanFactory().newViewActionBean( new WikiPage(engine,"Dummy") );
+ String actualDiff = diff.makeDiffHtml( ctx, oldText, newText);
+
+ assertEquals(expectedDiff, actualDiff);
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( ContextualDiffProviderTest.class );
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/AllTests.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/AllTests.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/AllTests.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,21 @@
+
+package com.ecyrd.jspwiki.filters;
+
+import junit.framework.*;
+
+public class AllTests extends TestCase
+{
+ public AllTests( String s )
+ {
+ super( s );
+ }
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("PageFilter tests");
+
+ suite.addTest( FilterManagerTest.suite() );
+
+ return suite;
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/FilterManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/FilterManagerTest.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/FilterManagerTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/FilterManagerTest.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,76 @@
+
+package com.ecyrd.jspwiki.filters;
+
+import junit.framework.*;
+import java.util.*;
+
+import org.apache.log4j.*;
+
+import com.ecyrd.jspwiki.*;
+
+public class FilterManagerTest extends TestCase
+{
+ Properties props = new Properties();
+
+ TestEngine engine;
+
+ public FilterManagerTest( String s )
+ {
+ super( s );
+ }
+
+ public void setUp()
+ throws Exception
+ {
+ props.load( TestEngine.findTestProperties() );
+ PropertyConfigurator.configure(props);
+ engine = new TestEngine(props);
+ }
+
+ public void tearDown()
+ {
+ }
+
+ public void testInitFilters()
+ throws Exception
+ {
+ FilterManager m = new FilterManager( engine, props );
+
+ List l = m.getFilterList();
+
+ assertEquals("Wrong number of filters", 2, l.size());
+
+ Iterator i = l.iterator();
+ PageFilter f1 = (PageFilter)i.next();
+
+ assertTrue("Not a Profanityfilter", f1 instanceof ProfanityFilter);
+
+ PageFilter f2 = (PageFilter)i.next();
+
+ assertTrue("Not a Testfilter", f2 instanceof TestFilter);
+ }
+
+ public void testInitParams()
+ throws Exception
+ {
+ FilterManager m = new FilterManager( engine, props );
+
+ List l = m.getFilterList();
+
+ Iterator i = l.iterator();
+ i.next();
+ TestFilter f2 = (TestFilter)i.next();
+
+ Properties p = f2.m_properties;
+
+ assertEquals("no foobar", "Zippadippadai", p.getProperty("foobar"));
+
+ assertEquals("no blatblaa", "5", p.getProperty( "blatblaa" ) );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( FilterManagerTest.class );
+ }
+
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/TestFilter.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/TestFilter.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/TestFilter.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/filters/TestFilter.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,16 @@
+package com.ecyrd.jspwiki.filters;
+
+import java.util.Properties;
+
+import com.ecyrd.jspwiki.WikiEngine;
+
+public class TestFilter
+ extends BasicPageFilter
+{
+ public Properties m_properties;
+
+ public void initialize( WikiEngine engine, Properties props )
+ {
+ m_properties = props;
+ }
+}
Added: incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/AllTests.java?rev=627271&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/AllTests.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/AllTests.java Tue Feb 12 22:24:02 2008
@@ -0,0 +1,20 @@
+package com.ecyrd.jspwiki.htmltowiki;
+
+import junit.framework.*;
+
+public class AllTests extends TestCase
+{
+ public AllTests( String s )
+ {
+ super( s );
+ }
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("HtmlStringToWikiTranslatorTest tests");
+
+ suite.addTest( HtmlStringToWikiTranslatorTest.suite() );
+
+ return suite;
+ }
+}