]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java
Continue framework clean up.
[lgpl/argeo-commons.git] / org.argeo.security.core / ext / test / org / argeo / osgi / useradmin / LdifUserAdminTest.java
1 package org.argeo.osgi.useradmin;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.util.Arrays;
6 import java.util.List;
7
8 import junit.framework.TestCase;
9
10 import org.apache.commons.codec.binary.Base64;
11 import org.apache.commons.codec.digest.DigestUtils;
12 import org.apache.commons.io.IOUtils;
13 import org.osgi.service.useradmin.Authorization;
14 import org.osgi.service.useradmin.Group;
15 import org.osgi.service.useradmin.Role;
16 import org.osgi.service.useradmin.User;
17
18 public class LdifUserAdminTest extends TestCase implements BasicTestConstants {
19
20 public void testBasicUserAdmin() throws Exception {
21 // read
22 LdifUserAdmin initialUserAdmin = new LdifUserAdmin(getClass()
23 .getResourceAsStream("basic.ldif"));
24 // write
25 ByteArrayOutputStream out = new ByteArrayOutputStream();
26 initialUserAdmin.save(out);
27 byte[] arr = out.toByteArray();
28 initialUserAdmin.destroy();
29 IOUtils.closeQuietly(out);
30 String written = new String(arr);
31 System.out.print(written);
32 ByteArrayInputStream in = new ByteArrayInputStream(arr);
33 LdifUserAdmin userAdmin = new LdifUserAdmin(in);
34
35 // users
36 User rootUser = (User) userAdmin.getRole(ROOT_USER_DN);
37 assertNotNull(rootUser);
38 User demoUser = (User) userAdmin.getRole(DEMO_USER_DN);
39 assertNotNull(demoUser);
40
41 // groups
42 Group adminGroup = (Group) userAdmin.getRole(ADMIN_GROUP_DN);
43 assertNotNull(adminGroup);
44 Role[] members = adminGroup.getMembers();
45 assertEquals(1, members.length);
46 assertEquals(rootUser, members[0]);
47
48 Group editorGroup = (Group) userAdmin.getRole(EDITOR_GROUP_DN);
49 assertNotNull(editorGroup);
50 members = editorGroup.getMembers();
51 assertEquals(2, members.length);
52 assertEquals(adminGroup, members[0]);
53 assertEquals(demoUser, members[1]);
54
55 Authorization rootAuth = userAdmin.getAuthorization(rootUser);
56 List<String> rootRoles = Arrays.asList(rootAuth.getRoles());
57 assertEquals(3, rootRoles.size());
58 assertTrue(rootRoles.contains(ROOT_USER_DN));
59 assertTrue(rootRoles.contains(ADMIN_GROUP_DN));
60 assertTrue(rootRoles.contains(EDITOR_GROUP_DN));
61
62 // properties
63 assertEquals("root@localhost", rootUser.getProperties().get("mail"));
64
65 // credentials
66 byte[] hashedPassword = ("{SHA}" + Base64
67 .encodeBase64String(DigestUtils.sha1("demo".getBytes())))
68 .getBytes();
69 assertTrue(rootUser.hasCredential(LdifName.userPassword.name(),
70 hashedPassword));
71 assertTrue(demoUser.hasCredential(LdifName.userPassword.name(),
72 hashedPassword));
73
74 // search
75 Role[] search = userAdmin.getRoles(null);
76 assertEquals(4, search.length);
77 search = userAdmin.getRoles("(objectClass=groupOfNames)");
78 assertEquals(2, search.length);
79 search = userAdmin.getRoles("(objectclass=inetOrgPerson)");
80 assertEquals(2, search.length);
81 search = userAdmin.getRoles("(&(objectclass=inetOrgPerson)(uid=demo))");
82 assertEquals(1, search.length);
83 }
84 }