List of usage examples for org.apache.shiro.authc SaltedAuthenticationInfo getPrincipals
PrincipalCollection getPrincipals();
From source file:com.epimorphics.registry.security.TestDBUserStore.java
License:Apache License
@Test public void testStore() throws InterruptedException { // Register/*from w w w .j a v a 2s .c o m*/ store.register(new UserInfo(ALICE_ID, ALICE_NAME)); store.register(new UserInfo(BOB_ID, BOB_NAME)); UserRecord record = store.getRecord(ALICE_ID); assertEquals(ALICE_NAME, record.name); assertNotNull(record.salt); assertNull(record.getPasword()); record = store.getRecord(BOB_ID); assertEquals(BOB_NAME, record.name); SaltedAuthenticationInfo info = store.checkUser(ALICE_ID); assertEquals(ALICE_NAME, ((UserInfo) info.getPrincipals().getPrimaryPrincipal()).getName()); // Check credentials management record = store.getRecord(ALICE_ID); record.setPassword(ByteSource.Util.bytes("my password"), 10); String expectedPassword = record.password; store.setCredentials(ALICE_ID, ByteSource.Util.bytes("my password"), 10); record = store.getRecord(ALICE_ID); assertNotNull(record.getPasword()); assertEquals(expectedPassword, record.password); store.removeCredentials(ALICE_ID); record = store.getRecord(ALICE_ID); assertNull(record.getPasword()); store.setCredentials(ALICE_ID, ByteSource.Util.bytes("my password"), 0); Thread.sleep(10); info = store.checkUser(ALICE_ID); String password = (String) info.getCredentials(); assertTrue(password == null || password.isEmpty()); // Check permissions management store.addPermision(ALICE_ID, new RegPermission("Update", "/reg2")); Set<Permission> permissions = store.getPermissions(ALICE_ID).getObjectPermissions(); assertEquals(1, permissions.size()); assertEquals("Update:/reg2", permissions.iterator().next().toString()); store.addPermision(ALICE_ID, new RegPermission("Register", "/reg1")); store.addPermision(ALICE_ID, new RegPermission("Register,StatusUpdate", "/reg2")); store.addPermision(BOB_ID, new RegPermission("StatusUpdate", "/reg2")); permissions = store.getPermissions(ALICE_ID).getObjectPermissions(); assertEquals(3, permissions.size()); List<UserPermission> authusers = store.authorizedOn("/reg2"); assertEquals(3, authusers.size()); Collections.sort(authusers, new Comparator<UserPermission>() { @Override public int compare(UserPermission o1, UserPermission o2) { int nameCompare = o1.getUser().getName().compareTo(o2.getUser().getName()); if (nameCompare == 0) { return o1.getPermissions().compareTo(o2.getPermissions()); } else { return nameCompare; } } }); assertEquals(ALICE_NAME, authusers.get(0).getUser().getName()); assertEquals(ALICE_NAME, authusers.get(1).getUser().getName()); assertEquals("Update", authusers.get(1).getPermissions()); assertEquals(BOB_NAME, authusers.get(2).getUser().getName()); store.removePermission(ALICE_ID, "/reg2"); permissions = store.getPermissions(ALICE_ID).getObjectPermissions(); assertEquals(1, permissions.size()); assertEquals("Register:/reg1", permissions.iterator().next().toString()); store.addPermision(ALICE_ID, new RegPermission("Update", "/reg3/_item")); assertEquals(1, store.authorizedOn("/reg3/_item").size()); assertEquals(1, store.authorizedOn("/reg3/item").size()); RegAuthorizationInfo auth = store.getPermissions(ALICE_ID); Set<String> roles = auth.getRoles(); assertTrue(roles == null || roles.isEmpty()); assertEquals(0, store.listAdminUsers().size()); store.setRole(ALICE_ID, RegAuthorizationInfo.ADMINSTRATOR_ROLE); roles = store.getPermissions(ALICE_ID).getRoles(); assertFalse(roles.isEmpty()); assertEquals(RegAuthorizationInfo.ADMINSTRATOR_ROLE, roles.iterator().next()); List<UserInfo> admins = store.listAdminUsers(); assertEquals(1, admins.size()); assertEquals(ALICE_ID, admins.get(0).getOpenid()); // Check listing users store.register(new UserInfo("http://example.com/bob2", "Sponge Bob")); store.register(new UserInfo("http://example.com/bob3", "Bob Le Ponge")); List<UserInfo> bobs = store.listUsers("Bob"); assertTrue(bobs.size() == 3); assertEquals(BOB_NAME, bobs.get(0).getName()); assertEquals("Sponge Bob", bobs.get(2).getName()); // Check removal store.unregister(ALICE_ID); assertNull(store.checkUser(ALICE_ID)); }