/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.examples.identity;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.restlet.security.Verifier;
/**
* @author Tom Baeyens
*/
public class IdentityTest extends PluggableActivitiTestCase {
public void testAuthentication() {
User user = identityService.newUser("johndoe");
user.setPassword("xxx");
identityService.saveUser(user);
assertEquals(Verifier.RESULT_VALID, identityService.checkPassword("johndoe", "xxx"));
assertEquals(Verifier.RESULT_INVALID, identityService.checkPassword("johndoe", "invalid pwd"));
identityService.deleteUser("johndoe");
}
public void testFindGroupsByUserAndType() {
Group sales = identityService.newGroup("sales");
sales.setType("hierarchy");
identityService.saveGroup(sales);
Group development = identityService.newGroup("development");
development.setType("hierarchy");
identityService.saveGroup(development);
Group admin = identityService.newGroup("admin");
admin.setType("security-role");
identityService.saveGroup(admin);
Group user = identityService.newGroup("user");
user.setType("security-role");
identityService.saveGroup(user);
User johndoe = identityService.newUser("johndoe");
identityService.saveUser(johndoe);
User joesmoe = identityService.newUser("joesmoe");
identityService.saveUser(joesmoe);
User jackblack = identityService.newUser("jackblack");
identityService.saveUser(jackblack);
identityService.createMembership("johndoe", "sales");
identityService.createMembership("johndoe", "user");
identityService.createMembership("johndoe", "admin");
identityService.createMembership("joesmoe", "user");
List<Group> groups = identityService.createGroupQuery().groupMember("johndoe").groupType("security-role").list();
Set<String> groupIds = getGroupIds(groups);
Set<String> expectedGroupIds = new HashSet<String>();
expectedGroupIds.add("user");
expectedGroupIds.add("admin");
assertEquals(expectedGroupIds, groupIds);
groups = identityService.createGroupQuery().groupMember("joesmoe").groupType("security-role").list();
groupIds = getGroupIds(groups);
expectedGroupIds = new HashSet<String>();
expectedGroupIds.add("user");
assertEquals(expectedGroupIds, groupIds);
groups = identityService.createGroupQuery().groupMember("jackblack").groupType("security-role").list();
assertTrue(groups.isEmpty());
identityService.deleteGroup("sales");
identityService.deleteGroup("development");
identityService.deleteGroup("admin");
identityService.deleteGroup("user");
identityService.deleteUser("johndoe");
identityService.deleteUser("joesmoe");
identityService.deleteUser("jackblack");
}
public void testUser() {
User user = identityService.newUser("johndoe");
user.setFirstName("John");
user.setLastName("Doe");
user.setEmail("johndoe@alfresco.com");
identityService.saveUser(user);
user = identityService.createUserQuery().userId("johndoe").singleResult();
assertEquals("johndoe", user.getId());
assertEquals("John", user.getFirstName());
assertEquals("Doe", user.getLastName());
assertEquals("johndoe@alfresco.com", user.getEmail());
identityService.deleteUser("johndoe");
}
public void testGroup() {
Group group = identityService.newGroup("sales");
group.setName("Sales division");
identityService.saveGroup(group);
group = identityService.createGroupQuery().groupId("sales").singleResult();
assertEquals("sales", group.getId());
assertEquals("Sales division", group.getName());
identityService.deleteGroup("sales");
}
public void testMembership() {
Group sales = identityService.newGroup("sales");
identityService.saveGroup(sales);
Group development = identityService.newGroup("development");
identityService.saveGroup(development);
User johndoe = identityService.newUser("johndoe");
identityService.saveUser(johndoe);
User joesmoe = identityService.newUser("joesmoe");
identityService.saveUser(joesmoe);
User jackblack = identityService.newUser("jackblack");
identityService.saveUser(jackblack);
identityService.createMembership("johndoe", "sales");
identityService.createMembership("joesmoe", "sales");
identityService.createMembership("joesmoe", "development");
identityService.createMembership("jackblack", "development");
List<Group> groups = identityService.createGroupQuery().groupMember("johndoe").list();
assertEquals(createStringSet("sales"), getGroupIds(groups));
groups = identityService.createGroupQuery().groupMember("joesmoe").list();
assertEquals(createStringSet("sales", "development"), getGroupIds(groups));
groups = identityService.createGroupQuery().groupMember("jackblack").list();
assertEquals(createStringSet("development"), getGroupIds(groups));
List<User> users = identityService.createUserQuery().memberOfGroup("sales").list();
assertEquals(createStringSet("johndoe", "joesmoe"), getUserIds(users));
users = identityService.createUserQuery().memberOfGroup("development").list();
assertEquals(createStringSet("joesmoe", "jackblack"), getUserIds(users));
identityService.deleteGroup("sales");
identityService.deleteGroup("development");
identityService.deleteUser("jackblack");
identityService.deleteUser("joesmoe");
identityService.deleteUser("johndoe");
}
private Object createStringSet(String... strings) {
Set<String> stringSet = new HashSet<String>();
for (String string : strings) {
stringSet.add(string);
}
return stringSet;
}
public Set<String> getGroupIds(List<Group> groups) {
Set<String> groupIds = new HashSet<String>();
for (Group group : groups) {
groupIds.add(group.getId());
}
return groupIds;
}
public Set<String> getUserIds(List<User> users) {
Set<String> userIds = new HashSet<String>();
for (User user : users) {
userIds.add(user.getId());
}
return userIds;
}
}