Package org.exoplatform.services.jcr.impl.core.security

Source Code of org.exoplatform.services.jcr.impl.core.security.TestSecurityRepositoryManagment

/**
* Copyright (C) 2010 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.exoplatform.services.jcr.impl.core.security;

import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.CredentialsImpl;
import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.jcr.impl.dataflow.serialization.TesterItemsPersistenceListener;
import org.exoplatform.services.security.IdentityConstants;

import java.security.AccessControlException;
import java.security.PrivilegedExceptionAction;

/**
* @author <a href="mailto:andrew00x@gmail.com">Andrey Parfonov</a>
* @version $Id: TestGetSystemSession.java 2521 2010-06-09 11:50:54Z nzamosenchuk $
*/
public class TestSecurityRepositoryManagment extends BaseSecurityTest
{
   public void testGetSystemSessionSuccess()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.getSystemSession();
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able get system session. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testGetSystemSessionFail()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.getSystemSession();
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able get system session.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testGetSystemSessionFail2()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.login(new CredentialsImpl(IdentityConstants.SYSTEM, "".toCharArray()), repository.getSystemWorkspaceName());
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able get system session.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }
   public void testAddItemPersistenceListenerSuccess()
   {
      final TesterItemsPersistenceListener listener = new TesterItemsPersistenceListener(session, false);
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.addItemPersistenceListener(workspace.getName(), listener);
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able add listener. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
      finally
      {
         // unregister the listener to avoid keeping ItemData into the memory for nothing
         listener.pushChanges();
      }     
   }

   public void testAddItemPersistenceListenerFail()
   {
      final TesterItemsPersistenceListener listener = new TesterItemsPersistenceListener(session, false);
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.addItemPersistenceListener(workspace.getName(), listener);
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able add listener.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
      finally
      {
         // unregister the listener to avoid keeping ItemData into the memory for nothing
         listener.pushChanges();
      }     
   }

   public void testConfigWorkspaceSuccess() throws Exception
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            WorkspaceEntry defConfig =
               (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class);

            WorkspaceEntry wsConfig = new WorkspaceEntry();
            wsConfig.setName("testCWS");

            wsConfig.setAccessManager(defConfig.getAccessManager());
            wsConfig.setCache(defConfig.getCache());
            wsConfig.setContainer(defConfig.getContainer());
            wsConfig.setLockManager(defConfig.getLockManager());

            repository.configWorkspace(wsConfig);
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able config workspace. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }

      action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            // remove configured workspace
            repository.createWorkspace("testCWS");
            repository.internalRemoveWorkspace("testCWS");
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able config workspace. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testConfigWorkspaceFail() throws Exception
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            WorkspaceEntry defConfig =
               (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class);

            WorkspaceEntry wsConfig = new WorkspaceEntry();
            wsConfig.setName("testConfigWorkspaceFail");

            wsConfig.setAccessManager(defConfig.getAccessManager());
            wsConfig.setCache(defConfig.getCache());
            wsConfig.setContainer(defConfig.getContainer());
            wsConfig.setLockManager(defConfig.getLockManager());

            repository.configWorkspace(wsConfig);
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able config workspace.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testCreateWorkspaceSuccess() throws Exception
   {
      // configures workspace for creation
      WorkspaceEntry defConfig =
         (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class);

      final WorkspaceEntry wsConfig = new WorkspaceEntry();
      wsConfig.setName("testCWS");

      wsConfig.setAccessManager(defConfig.getAccessManager());
      wsConfig.setCache(defConfig.getCache());
      wsConfig.setContainer(defConfig.getContainer());
      wsConfig.setLockManager(defConfig.getLockManager());

      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.configWorkspace(wsConfig);
            repository.createWorkspace("testCWS");
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able create workspace. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
      action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            // remove configured workspace
            repository.internalRemoveWorkspace("testCWS");
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able config workspace. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }

   }

   public void testCreateWorkspaceFail()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.createWorkspace("testCreateWorkspaceFail");
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able create workspace.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testInternalRemoveWorkspaceSuccess() throws Exception
   {
      // configures and create workspace
      WorkspaceEntry defConfig =
         (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class);

      final WorkspaceEntry wsConfig = new WorkspaceEntry();
      wsConfig.setName("testIRWS");

      wsConfig.setAccessManager(defConfig.getAccessManager());
      wsConfig.setCache(defConfig.getCache());
      wsConfig.setContainer(defConfig.getContainer());
      wsConfig.setLockManager(defConfig.getLockManager());


      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.configWorkspace(wsConfig);
            repository.createWorkspace("testIRWS");
            repository.internalRemoveWorkspace("testIRWS");
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able remove workspace. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testInternalRemoveWorkspaceFail()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.internalRemoveWorkspace("testInternalRemoveWorkspaceFail");
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able remove workspace.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testSetStateeSuccess()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.setState(ManageableRepository.OFFLINE);
            repository.setState(ManageableRepository.ONLINE);
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able set state. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testSetStateFail()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.setState(ManageableRepository.OFFLINE);
            repository.setState(ManageableRepository.ONLINE);
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able set state.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testGetConfigurationSuccess()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.getConfiguration();
            return null;
         }

      };
      try
      {
         doPrivilegedActionStaticPermissions(action);
      }
      catch (AccessControlException ace)
      {
         fail("Must be able get configuration. We are under static permissions");
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

   public void testGetConfigurationFail()
   {
      PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
      {
         public Object run() throws Exception
         {
            repository.getConfiguration();
            return null;
         }

      };
      try
      {
         doPrivilegedAction(action);
         fail("Must not be able get configuration.");
      }
      catch (AccessControlException ace)
      {
         // OK
      }
      catch (Throwable t)
      {
         t.printStackTrace();
         fail();
      }
   }

}
TOP

Related Classes of org.exoplatform.services.jcr.impl.core.security.TestSecurityRepositoryManagment

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.