/******************************************************************************* * 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; // NOPMD by Luthiger on 09.09.12 00:12 import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Before; 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 RiplaUserAdminTest { private static final String PROPERTY_KEY_NAME = "test.user.name"; private transient UserAdmin userAdmin; @Before public void setUp() throws Exception { userAdmin = new TestRiplaUserAdmin(); ((RiplaUserAdmin) userAdmin) .setPreferences(new MockPreferencesService()); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#createRole(java.lang.String, int)} * . * * @throws Exception */ @Test(expected = IllegalArgumentException.class) public void testCreateRole() throws Exception { // NOPMD final String lUserName = "test.user"; // NOPMD final String lGroupName = "test.group"; // NOPMD User lTestUser = (User) userAdmin.createRole(lUserName, Role.USER); assertNotNull("Must not be null", lTestUser); // NOPMD assertEquals("Wrong name", lUserName, lTestUser.getName()); // NOPMD lTestUser = (User) userAdmin.createRole(lUserName, Role.USER); assertNull("Must be null", lTestUser); // NOPMD Group lTestGroup = (Group) userAdmin.createRole(lGroupName, Role.GROUP); assertNotNull("Must not be null", lTestGroup); assertEquals("Wrong name", lGroupName, lTestGroup.getName()); lTestGroup = (Group) userAdmin.createRole(lGroupName, Role.GROUP); assertNull("Must be null", lTestGroup); lTestUser = (User) userAdmin.createRole(lUserName, Role.ROLE); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#removeRole(java.lang.String)} * . */ @Test public void testRemoveRole() { final String lUserName = "test.user"; // NOPMD final String lGroupName = "test.group"; // NOPMD final User lTestUser = (User) userAdmin .createRole(lUserName, Role.USER); final Group lTestGroup = (Group) userAdmin.createRole(lGroupName, Role.GROUP); lTestGroup.addMember(lTestUser); final Role[] lMembers = lTestGroup.getMembers(); assertEquals("Wrong length", 1, lMembers.length); assertEquals("Wrong name", lUserName, lMembers[0].getName()); assertTrue("Could not remove role", userAdmin.removeRole(lUserName)); assertNull("Groups should be empty", lTestGroup.getMembers()); assertTrue("Could not remove role", userAdmin.removeRole(Role.USER_ANYONE)); assertFalse("Must not remove role", userAdmin.removeRole("foo.bar")); assertFalse("Must not remove role", userAdmin.removeRole(lUserName)); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#getRole(java.lang.String)} * . */ @Test public void testGetRole() { final String lUserName = "test.user"; // NOPMD final String lGroupName = "test.group"; // NOPMD userAdmin.createRole(lUserName, Role.USER); userAdmin.createRole(lGroupName, Role.GROUP); final User lTestUser = (User) userAdmin.getRole(lUserName); assertNotNull("Must not be null", lTestUser); assertEquals("Wrong name", lUserName, lTestUser.getName()); final Group lTestGroup = (Group) userAdmin.getRole(lGroupName); assertNotNull("Must not be null", lTestGroup); assertEquals("Wrong name", lGroupName, lTestGroup.getName()); final Role lAnonymous = userAdmin.getRole(Role.USER_ANYONE); assertEquals("Wrong name", Role.USER_ANYONE, lAnonymous.getName()); assertNull("Must be null", userAdmin.getRole("foo.bar")); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#getRoles(java.lang.String)} * . */ @SuppressWarnings("unchecked") @Test public void testGetRoles() throws Exception { // NOPMD by Luthiger on final String lUserName = "test.user"; // NOPMD final String lGroupName = "test.group"; // NOPMD Role lRole = userAdmin.createRole(lUserName, Role.USER); lRole.getProperties().put(PROPERTY_KEY_NAME, lUserName); lRole = userAdmin.createRole(lGroupName, Role.GROUP); lRole.getProperties().put(PROPERTY_KEY_NAME, lGroupName); final Role[] lRoles = userAdmin.getRoles(null); assertEquals("Wrong length", 3, lRoles.length); assertContains(lRoles, lUserName); assertContains(lRoles, lGroupName); assertContains(lRoles, Role.USER_ANYONE); // we can't test filtering without OSGi bundle context // String lFilter = String.format("(%s=%s)", PROPERTY_KEY_NAME, // lUserName); // lRoles = userAdmin.getRoles(lFilter); } private void assertContains(final Role[] inRoles, final String inRoleName) { for (final Role lRole : inRoles) { if (inRoleName.equals(lRole.getName())) { return; } } fail(); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#getUser(java.lang.String, java.lang.String)} * . */ @SuppressWarnings("unchecked") @Test public void testGetUser() { final String lUserName = "test.user"; // NOPMD Role lRole = userAdmin.createRole(lUserName, Role.USER); lRole.getProperties().put(PROPERTY_KEY_NAME, lUserName); final User lUser = userAdmin.getUser(PROPERTY_KEY_NAME, lUserName); assertNotNull("Must not be null", lUser); assertEquals("Wrong name", lUserName, lUser.getName()); assertNull("Must be null", userAdmin.getUser(PROPERTY_KEY_NAME, "foo")); lRole = userAdmin.createRole("foo", Role.USER); lRole.getProperties().put(PROPERTY_KEY_NAME, lUserName); assertNull("Must be null", userAdmin.getUser(PROPERTY_KEY_NAME, lUserName)); } /** * Test method for * {@link org.ripla.useradmin.admin.RiplaUserAdmin#getAuthorization(org.osgi.service.useradmin.User)} * . */ @Test public void testGetAuthorization() { final String lUserName = "test.user"; // NOPMD final User lRole = (User) userAdmin.createRole(lUserName, Role.USER); Authorization lAuthorization = userAdmin.getAuthorization(lRole); assertNotNull("Must not be null", lAuthorization); assertEquals("Wrong name", lUserName, lAuthorization.getName()); lAuthorization = userAdmin.getAuthorization(null); assertNotNull("Must not be null", lAuthorization); assertNull("Must be null", lAuthorization.getName()); } }