/* * ModeShape (http://www.modeshape.org) * * 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.modeshape.jcr.security.acl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import javax.jcr.ImportUUIDBehavior; import javax.jcr.security.Privilege; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.modeshape.jcr.MultiUseAbstractTest; /** * @author kulikov */ public class PrivilegeImplTest extends MultiUseAbstractTest { // non aggregate privileges private PrivilegeImpl p1; private PrivilegeImpl p2; // aggegate privileges private PrivilegeImpl p3; private PrivilegeImpl p4; // abstract private PrivilegeImpl p5; public PrivilegeImplTest() { } @BeforeClass public static final void beforeAll() throws Exception { MultiUseAbstractTest.beforeAll(); // Import the node types and the data ... registerNodeTypes("cars.cnd"); importContent("/", "io/cars-system-view-with-uuids.xml", ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW); } @AfterClass public static final void afterAll() throws Exception { MultiUseAbstractTest.afterAll(); } @Before public void setUp() throws Exception { p1 = new PrivilegeImpl(session, "{}p1", new Privilege[] {}); p2 = new PrivilegeImpl(session, "{}p2", new Privilege[] {}); // aggegate privileges p3 = new PrivilegeImpl(session, "{}p3", new Privilege[] {p1, p2}); p4 = new PrivilegeImpl(session, "{}p4", new Privilege[] {p3}); // abstract p5 = new PrivilegeImpl(session, "{}p5", new Privilege[] {}, true); } /** * Test of getName method, of class PrivilegeImpl. */ @Test public void testGetName() { assertEquals("jcr:p1", p1.getName()); } /** * Test of isAbstract method, of class PrivilegeImpl. */ @Test public void testIsAbstract() { assertTrue(!p1.isAbstract()); assertTrue(p5.isAbstract()); } /** * Test of isAggregate method, of class PrivilegeImpl. */ @Test public void testIsAggregate() { assertTrue(!p1.isAggregate()); assertTrue(p3.isAggregate()); } /** * Test of getDeclaredAggregatePrivileges method, of class PrivilegeImpl. */ @Test public void testGetDeclaredAggregatePrivileges() { Privilege[] pp = p3.getDeclaredAggregatePrivileges(); assertEquals(2, pp.length); assertEquals(p1, pp[0]); assertEquals(p2, pp[1]); } /** * Test of getAggregatePrivileges method, of class PrivilegeImpl. */ @Test public void testGetAggregatePrivileges() { Privilege[] pp = p4.getAggregatePrivileges(); assertEquals(3, pp.length); assertTrue(contains(p1, pp)); assertTrue(contains(p2, pp)); assertTrue(contains(p3, pp)); } private boolean contains( Privilege p, Privilege[] pp ) { for (int i = 0; i < pp.length; i++) { if (pp[i].getName().equals(p.getName())) { return true; } } return false; } /** * Test of contains method, of class PrivilegeImpl. */ @Test public void testContains() { assertTrue(p4.contains(p3)); assertTrue(p4.contains(p2)); assertTrue(p4.contains(p4)); } }