package org.exoplatform.services.cms.lock.impl; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.ObjectParameter; import org.exoplatform.services.cms.lock.LockService; import org.exoplatform.services.jcr.impl.AddNodeTypePlugin; import org.exoplatform.services.wcm.BaseWCMTestCase; import org.picocontainer.Startable; public class TestLockService extends BaseWCMTestCase { private LockService lockService_; public void setUp() throws Exception { super.setUp(); lockService_ = (LockService)container.getComponentInstanceOfType(LockService.class); applySystemSession(); } public void testStartNormal() throws Exception { try { LockGroupsOrUsersConfig config1 = new LockGroupsOrUsersConfig(); List<String> lockList1 = new ArrayList<String>(); lockList1.add("*:/platform/administrators"); lockList1.add("*:/platform/powers"); config1.setSettingLockList(lockList1); InitParams params = new InitParams(); ObjectParameter objParam = new ObjectParameter(); objParam.setObject(config1); params.addParameter(objParam); LockGroupsOrUsersPlugin plugin1 = new LockGroupsOrUsersPlugin(params); List<LockGroupsOrUsersPlugin> lockGroupsOrUsersPlugins = new ArrayList<LockGroupsOrUsersPlugin>(); lockGroupsOrUsersPlugins.add(plugin1); Field field = LockServiceImpl.class.getDeclaredField("lockGroupsOrUsersPlugin_"); field.setAccessible(true); field.set(lockService_, lockGroupsOrUsersPlugins); ((LockServiceImpl)lockService_).addLockGroupsOrUsersPlugin(new AddNodeTypePlugin(new InitParams())); ((Startable)lockService_).start(); } catch (Exception e) { fail(); } finally { ((Startable)lockService_).stop(); } } public void testAddGroupsOrUsersForLock() throws Exception { try { lockService_.addGroupsOrUsersForLock("*:/platform/powers"); lockService_.addGroupsOrUsersForLock("*:/platform/powers"); lockService_.addGroupsOrUsersForLock("*:/platform/suppers"); assertEquals(1, lockService_.getPreSettingLockList().size()); assertEquals(3, lockService_.getAllGroupsOrUsersForLock().size()); assertTrue(lockService_.getPreSettingLockList().contains("*:/platform/administrators")); } catch (Exception e) { fail(); } } public void testRemoveGroupsOrUsersForLock() throws Exception { try { lockService_.addGroupsOrUsersForLock("*:/platform/powers"); lockService_.addGroupsOrUsersForLock("*:/platform/suppers"); lockService_.removeGroupsOrUsersForLock("*:/platform/administrators"); // remove existing group lockService_.removeGroupsOrUsersForLock("*:/platform/administrators1"); // remove not-existing group assertEquals(1, lockService_.getPreSettingLockList().size()); assertEquals(2, lockService_.getAllGroupsOrUsersForLock().size()); assertTrue(lockService_.getPreSettingLockList().contains("*:/platform/administrators")); } catch (Exception e) { fail(); } } public void tearDown() throws Exception { ((Startable)lockService_).stop(); ((Startable)lockService_).start(); super.tearDown(); } }