/******************************************************************************* * Copyright (c) 2012 RelationWare, Benno Luthiger * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * RelationWare, Benno Luthiger ******************************************************************************/ package org.ripla.useradmin.admin; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Test; import org.osgi.service.useradmin.Authorization; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdmin; /** * @author Luthiger */ public class RiplaAuthorizationTest { private static final String USER_NAME = "test.user"; private static final String GROUP_NAME = "test.group"; /** * Test method for * {@link org.ripla.useradmin.admin.RiplaAuthorization#getName()}. * * @throws Exception */ @Test public void testGetName() throws Exception { // NOPMD by Luthiger on // 08.09.12 23:44 final UserAdmin lUserAdmin = TestRiplaUserAdmin.createUserAdmin(); final User lUser = (User) lUserAdmin.createRole(USER_NAME, Role.USER); final Authorization lAuthorization = lUserAdmin.getAuthorization(lUser); assertEquals("Wrong username.", USER_NAME, lAuthorization.getName()); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaAuthorization#getRoles()}. * * @throws Exception */ @Test public void testGetRoles() throws Exception { // NOPMD by Luthiger on // 08.09.12 23:45 final UserAdmin lUserAdmin = TestRiplaUserAdmin.createUserAdmin(); final User lUser = (User) lUserAdmin.createRole(USER_NAME, Role.USER); Authorization lAuthorization = lUserAdmin.getAuthorization(lUser); String[] lRoles = lAuthorization.getRoles(); assertEquals("wrong length", 1, lRoles.length); // NOPMD by Luthiger on // 08.09.12 23:50 assertEquals("wrong username", USER_NAME, lRoles[0]); final Group lGroup = (Group) lUserAdmin.createRole(GROUP_NAME, Role.GROUP); lAuthorization = lUserAdmin.getAuthorization(lGroup); lRoles = lAuthorization.getRoles(); assertEquals("wrong length", 1, lRoles.length); assertEquals("wrong group name", GROUP_NAME, lRoles[0]); lGroup.addMember(lUser); lAuthorization = lUserAdmin.getAuthorization(lUser); lRoles = lAuthorization.getRoles(); assertEquals("wrong length", 2, lRoles.length); assertContains(lRoles, GROUP_NAME); assertContains(lRoles, USER_NAME); lAuthorization = lUserAdmin.getAuthorization(lGroup); lRoles = lAuthorization.getRoles(); assertEquals("wrong length", 1, lRoles.length); assertEquals("wrong group name", GROUP_NAME, lRoles[0]); } private void assertContains(final String[] inRoles, final String inRoleName) { for (final String lRole : inRoles) { if (inRoleName.equals(lRole)) { return; } } fail(); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaAuthorization#hasRole(java.lang.String)} * . * * @throws Exception */ @Test public void testHasRole() throws Exception { // NOPMD by Luthiger on // 08.09.12 23:45 final UserAdmin lUserAdmin = TestRiplaUserAdmin.createUserAdmin(); final User lUser = (User) lUserAdmin.createRole(USER_NAME, Role.USER); Authorization lAuthorization = lUserAdmin.getAuthorization(lUser); assertFalse("authorization must have role", lAuthorization.hasRole("test.role")); // test examples r4.cmpn: 107.8.3, see {@link Group} final String lRoleName = "foo"; // NOPMD by Luthiger final String lGroupName = "marketing"; // NOPMD by Luthiger final String lUserName1 = "alice"; // NOPMD by Luthiger final String lUserName2 = "bob"; // NOPMD by Luthiger final String lUserName3 = "adam"; // NOPMD by Luthiger final User lUser1 = (User) lUserAdmin.createRole(lUserName1, Role.USER); final User lUser2 = (User) lUserAdmin.createRole(lUserName2, Role.USER); final User lUser3 = (User) lUserAdmin.createRole(lUserName3, Role.USER); final Group lMarketing = (Group) lUserAdmin.createRole(lGroupName, Role.GROUP); final Group lFoo = (Group) lUserAdmin.createRole(lRoleName, Role.GROUP); lMarketing.addMember(lUser1); lMarketing.addMember(lUser2); lMarketing.addMember(lUser3); lFoo.addRequiredMember(lMarketing); lFoo.addMember(lUser1); lFoo.addMember(lUser2); lAuthorization = lUserAdmin.getAuthorization(lUser1); assertTrue("authorization should have role " + lRoleName, // NOPMD by Luthiger on 08.09.12 23:55 lAuthorization.hasRole(lRoleName)); lAuthorization = lUserAdmin.getAuthorization(lUser2); assertTrue("authorization should have role " + lRoleName, lAuthorization.hasRole(lRoleName)); lAuthorization = lUserAdmin.getAuthorization(lUser3); assertFalse("authorization must not have role " + lRoleName, lAuthorization.hasRole(lRoleName)); lFoo.removeMember(lUser2); lAuthorization = lUserAdmin.getAuthorization(lUser2); assertFalse("authorization must not have role " + lRoleName, lAuthorization.hasRole(lRoleName)); lFoo.removeMember(lUser1); lAuthorization = lUserAdmin.getAuthorization(lUser1); assertFalse("authorization must not have role " + lRoleName, lAuthorization.hasRole(lRoleName)); // add anonymous as basic member to foo lFoo.addMember(lUserAdmin.getRole(Role.USER_ANYONE)); lAuthorization = lUserAdmin.getAuthorization(lUser1); assertTrue("authorization should have role " + lRoleName, lAuthorization.hasRole(lRoleName)); lAuthorization = lUserAdmin.getAuthorization(lUser2); assertTrue("authorization should have role " + lRoleName, lAuthorization.hasRole(lRoleName)); lAuthorization = lUserAdmin.getAuthorization(lUser3); assertTrue("authorization should have role " + lRoleName, lAuthorization.hasRole(lRoleName)); } }