/*******************************************************************************
* Copyright (c) 2008, 2013 IBM Corporation and others
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.useradmin.tests;
import static org.junit.Assert.assertEquals;
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 java.util.Dictionary;
import org.eclipse.equinox.compendium.tests.Activator;
import org.junit.*;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.useradmin.*;
public class UserTest {
private UserAdmin userAdmin;
private ServiceReference<UserAdmin> userAdminReference;
@Test
public void testUser1() {
try {
createUser1();
User user = userAdmin.getUser("test", "valu"); //$NON-NLS-1$ //$NON-NLS-2$
assertNotNull(user);
assertEquals("testUserCreate1", user.getName()); //$NON-NLS-1$
assertTrue(user.getType() == Role.USER);
try {
Role[] roles = userAdmin.getRoles("(test=valu)"); //$NON-NLS-1$
assertNotNull(roles);
assertEquals("number of roles", 1, roles.length); //$NON-NLS-1$
} catch (InvalidSyntaxException e) {
fail(e.getMessage());
}
removeUser1();
} finally {
removeUser1Silently();
}
}
@Test
public void testUser2() {
try {
createUser2();
Role user = userAdmin.getRole("testUserCreate2"); //$NON-NLS-1$
assertNotNull(user);
assertEquals("testUserCreate2", user.getName()); //$NON-NLS-1$
assertTrue(user.getType() == Role.USER);
Object test1 = user.getProperties().get("test1"); //$NON-NLS-1$
assertEquals("test1", "valu", test1); //$NON-NLS-1$ //$NON-NLS-2$
Object test2 = user.getProperties().get("test2"); //$NON-NLS-1$
assertEquals("test2", "xxxyyyzzz", test2); //$NON-NLS-1$ //$NON-NLS-2$
Object test3 = user.getProperties().get("test3"); //$NON-NLS-1$
assertTrue("test3 not byte[]", test3 instanceof byte[]); //$NON-NLS-1$
byte[] bytes = (byte[]) test3;
assertEquals("wrong size", 3, bytes.length); //$NON-NLS-1$
assertEquals("1", 1, bytes[0]); //$NON-NLS-1$
assertEquals("2", 2, bytes[1]); //$NON-NLS-1$
assertEquals("3", 3, bytes[2]); //$NON-NLS-1$
Dictionary<String, Object> creds = (((User) user).getCredentials());
test1 = creds.get("test1"); //$NON-NLS-1$
assertEquals("test1", "valu", test1); //$NON-NLS-1$ //$NON-NLS-2$
test2 = creds.get("test2"); //$NON-NLS-1$
assertEquals("test2", "xxxyyyzzz", test2); //$NON-NLS-1$ //$NON-NLS-2$
test3 = creds.get("test3"); //$NON-NLS-1$
assertTrue("test3 not byte[]", test3 instanceof byte[]); //$NON-NLS-1$
bytes = (byte[]) test3;
assertEquals("wrong size", 3, bytes.length); //$NON-NLS-1$
assertEquals("1", 1, bytes[0]); //$NON-NLS-1$
assertEquals("2", 2, bytes[1]); //$NON-NLS-1$
assertEquals("3", 3, bytes[2]); //$NON-NLS-1$
try {
Role[] roles = userAdmin.getRoles("(test3=1)"); //$NON-NLS-1$
assertNotNull(roles);
assertEquals("number of roles", 1, roles.length); //$NON-NLS-1$
} catch (InvalidSyntaxException e) {
fail(e.getMessage());
}
removeUser2();
} finally {
removeUser2Silently();
}
}
@Test
public void testUserCreateAndRemove() throws Exception {
User user = (User) userAdmin.createRole("testUserCreateAndRemove", Role.USER); //$NON-NLS-1$
assertNotNull(user);
assertEquals("testUserCreateAndRemove", user.getName()); //$NON-NLS-1$
assertTrue(user.getType() == Role.USER);
assertTrue(userAdmin.removeRole("testUserCreateAndRemove")); //$NON-NLS-1$
assertNull(userAdmin.getRole("testUserCreateAndRemove")); //$NON-NLS-1$
}
@Before
public void setUp() throws Exception {
Activator.getBundle(Activator.BUNDLE_USERADMIN).start();
userAdminReference = Activator.getBundleContext().getServiceReference(UserAdmin.class);
userAdmin = Activator.getBundleContext().getService(userAdminReference);
}
@After
public void tearDown() throws Exception {
Activator.getBundleContext().ungetService(userAdminReference);
Activator.getBundle(Activator.BUNDLE_USERADMIN).stop();
}
@SuppressWarnings("unchecked")
private void createUser1() {
User user = (User) userAdmin.createRole("testUserCreate1", Role.USER); //$NON-NLS-1$
assertNotNull(user);
assertEquals("testUserCreate1", user.getName()); //$NON-NLS-1$
assertTrue(user.getType() == Role.USER);
user.getProperties().put("test", "valu"); //$NON-NLS-1$ //$NON-NLS-2$
}
private void removeUser1() {
assertTrue(userAdmin.removeRole("testUserCreate1")); //$NON-NLS-1$
}
private void removeUser1Silently() {
try {
removeUser1();
} catch (Exception e) {
// Ignore.
} catch (AssertionError error) {
// Ignore.
}
}
@SuppressWarnings("unchecked")
private void createUser2() {
User user = (User) userAdmin.createRole("testUserCreate2", Role.USER); //$NON-NLS-1$
assertNotNull(user);
assertEquals("testUserCreate2", user.getName()); //$NON-NLS-1$
assertTrue(user.getType() == Role.USER);
user.getProperties().put("test1", "valu"); //$NON-NLS-1$ //$NON-NLS-2$
user.getProperties().put("test2", "xxxyyyzzz"); //$NON-NLS-1$ //$NON-NLS-2$
user.getProperties().put("test3", new byte[] {1, 2, 3}); //$NON-NLS-1$
user.getCredentials().put("test1", "valu"); //$NON-NLS-1$ //$NON-NLS-2$
user.getCredentials().put("test2", "xxxyyyzzz"); //$NON-NLS-1$ //$NON-NLS-2$
user.getCredentials().put("test3", new byte[] {1, 2, 3}); //$NON-NLS-1$
}
private void removeUser2() {
assertTrue(userAdmin.removeRole("testUserCreate2")); //$NON-NLS-1$
}
private void removeUser2Silently() {
try {
removeUser2();
} catch (Exception e) {
// Ignore.
} catch (AssertionError error) {
// Ignore.
}
}
}