You are viewing a plain text version of this content. The canonical link for it is here.
Posted to graffito-commits@incubator.apache.org by cl...@apache.org on 2005/04/22 05:28:01 UTC

svn commit: r164176 - /incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java

Author: clombart
Date: Thu Apr 21 22:28:00 2005
New Revision: 164176

URL: http://svn.apache.org/viewcvs?rev=164176&view=rev
Log:
UPdate unit tests

Added:
    incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java

Added: incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java?rev=164176&view=auto
==============================================================================
--- incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java (added)
+++ incubator/graffito/trunk/components/src/test/org/apache/portals/graffito/security/impl/TestPermissions.java Thu Apr 21 22:28:00 2005
@@ -0,0 +1,212 @@
+/* Copyright 2004 Apache Software Foundation
+ *
+ * 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.apache.portals.graffito.security.impl;
+
+
+
+import java.security.Permission;
+import java.security.Permissions;
+import java.util.Enumeration;
+import java.util.Iterator;
+
+import javax.security.auth.Subject;
+import javax.security.auth.login.LoginException;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.UserPrincipal;
+
+import org.apache.jetspeed.security.impl.UserPrincipalImpl;
+import org.apache.portals.graffito.context.CmsRequestContext;
+import org.apache.portals.graffito.model.CmsPermission;
+import org.apache.portals.graffito.security.CmsAccessController;
+import org.apache.portals.graffito.security.impl.AbstractSecurityTestcase;
+import org.apache.portals.graffito.security.impl.CmsPermissionImpl;
+
+/**
+ * This unit test comes from Jetspeed 2. It used to check if the J2 security
+ * components are well integrated with Graffito
+ *  
+ */
+
+public class TestPermissions extends AbstractSecurityTestcase
+{
+
+    private CmsAccessController cmsAccessController;
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    public void setUp() throws Exception
+    {
+        super.setUp();        
+        try
+        {
+            cmsAccessController = (CmsAccessController) ctx.getBean("org.apache.portals.graffito.security.CmsAccessController");
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Fail to run due to an exception : " + e);
+        }
+
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+
+        // Logout
+        try
+        {
+            loginContext.logout();
+        }
+        catch (LoginException le)
+        {
+            le.printStackTrace();
+            assertTrue("\t\t[TestRdbmsPolicy] Failed to tear down test.", false);
+        }
+        destroyUser();
+        super.tearDown();
+    }
+
+    /**
+     * Start test suite
+     * @return test suite
+     */
+    public static Test suite()
+    {
+        // All methods starting with "test" will be executed in the test suite.
+        return new TestSuite(TestPermissions.class);
+    }
+
+    /**
+     * Test getPermissions
+     */
+    public void testgetPermission()
+    {
+                
+        Permissions permissions = pms.getPermissions("/files/subfolder1");
+        
+        Enumeration enum = permissions.elements();
+        int count = 0;
+        while (enum.hasMoreElements())
+        {
+            CmsPermission permission = (CmsPermission) enum.nextElement();            
+            System.out.println("Permission found - actions : " + permission.getActions() + " name : " + permission.getName());
+            Iterator fullPathIterator = permission.getPrincipalFullPaths().iterator();
+            while (fullPathIterator.hasNext())
+            {
+                String fullPath = (String) fullPathIterator.next();
+                System.out.println("          fullPath : " + fullPath);                
+            }
+            
+            count++;
+        }
+        assertTrue("Invalid number of permissions for '/files/subfolder1", count == 2);
+       
+    }  
+    
+    /**
+     * Test isRecursive
+     */
+    public void testisRecursive()
+    {
+                
+        CmsPermissionImpl perm = new CmsPermissionImpl("/files/subfolder1/-", "view");
+        assertTrue("Permission /files/subfolder1/- is not recursive", perm.isRecursive() );
+        
+        perm = new CmsPermissionImpl("/files/subfolder1", "view");
+        assertFalse("Permission /files/subfolder1 is  recursive", perm.isRecursive() );
+        
+        perm = new CmsPermissionImpl("/files/subfolder1/*", "view");
+        assertFalse("Permission  /files/subfolder1/* is  recursive", perm.isRecursive() );
+       
+    }     
+    /**
+     * <p>
+     * Initialize user test object.
+     * </p>
+     */
+    protected void initUser()
+    {
+        try
+        {
+            ums.addUser("anon", "password");
+            ums.addUser("christophe", "password");
+        }
+        catch (SecurityException sex)
+        {
+        }
+
+        UserPrincipal user = new UserPrincipalImpl("anon");
+        UserPrincipal user2 = new UserPrincipalImpl("christophe");
+        
+        CmsPermissionImpl perm1 = new CmsPermissionImpl("/files/test.xml", "edit");
+        CmsPermissionImpl perm2 = new CmsPermissionImpl("/files/subfolder1/-", "view");
+        CmsPermissionImpl perm3 = new CmsPermissionImpl("/files/subfolder1/*", "edit");
+        CmsPermissionImpl perm4 = new CmsPermissionImpl("/files/subfolder2/-", "view");
+        CmsPermissionImpl perm5 = new CmsPermissionImpl("/files/subfolder3/*", "view,insert");
+        
+        try
+        {
+            
+            pms.addPermission(perm1);
+            pms.addPermission(perm2);
+            pms.addPermission(perm3);
+            pms.addPermission(perm4);
+            pms.addPermission(perm5);
+            pms.grantPermission(user, perm1);
+            pms.grantPermission(user, perm2);
+            pms.grantPermission(user, perm3);
+            pms.grantPermission(user, perm4);
+            pms.grantPermission(user, perm5);
+            pms.grantPermission(user2, perm2);
+            
+        }
+        catch (SecurityException sex)
+        {
+            sex.printStackTrace();
+        }
+    }
+
+    /**
+     * 
+     * Destroy user test object.
+     * 
+     * @throws Exception when it is not possible to clean up
+     */
+    protected void destroyUser() throws Exception
+    {
+        ums.removeUser("anon");
+        ums.removeUser("christophe");
+
+        CmsPermissionImpl perm1 = new CmsPermissionImpl("/files/test.xml", "edit");
+        CmsPermissionImpl perm2 = new CmsPermissionImpl("/files/subfolder1/*", "view");
+        CmsPermissionImpl perm3 = new CmsPermissionImpl("/files/subfolder1/-", "view");
+        CmsPermissionImpl perm4 = new CmsPermissionImpl("/files/subfolder2/-", "view");
+        CmsPermissionImpl perm5 = new CmsPermissionImpl("/files/subfolder3/-", "view,insert");
+        pms.removePermission(perm1);
+        pms.removePermission(perm2);
+        pms.removePermission(perm3);
+        pms.removePermission(perm4);
+        pms.removePermission(perm5);
+    }
+
+}
\ No newline at end of file