Example usage for org.apache.shiro.authc SaltedAuthenticationInfo getPrincipals

List of usage examples for org.apache.shiro.authc SaltedAuthenticationInfo getPrincipals

Introduction

In this page you can find the example usage for org.apache.shiro.authc SaltedAuthenticationInfo getPrincipals.

Prototype

PrincipalCollection getPrincipals();

Source Link

Document

Returns all principals associated with the corresponding Subject.

Usage

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));
}