Subject subject = new Subject();
subject.setName("dummy-subject");
subject = subjectManager.createSubject(superuser, subject);
subject = createSession(subject);
Role new_role = new Role("dummy-role");
Role new_role2 = new Role("dummy-role2");
new_role = roleManager.createRole(superuser, new_role);
new_role2 = roleManager.createRole(superuser, new_role2);
PageList<Role> all_roles = roleManager.findRoles(PageControl.getUnlimitedInstance());
assert all_roles.size() >= 3 : "There should at least be the two dummy roles and the super user role";
PageList<Role> roles;
roles = roleManager.findAvailableRolesForSubject(superuser, subject.getId(), new Integer[0],
PageControl.getUnlimitedInstance());
assert roles.size() == all_roles.size() : "All roles should be available for this subject";
assert roles.containsAll(all_roles);
roles = roleManager.findAvailableRolesForSubject(superuser, subject.getId(),
new Integer[] { new_role.getId() }, PageControl.getUnlimitedInstance());
assert (roles.size() + 1) == all_roles.size() : "All roles but one should be available for this subject";
assert !roles.contains(new_role);
roles = roleManager.findAvailableRolesForSubject(superuser, subject.getId(),
new Integer[] { new_role.getId(), new_role2.getId() }, PageControl.getUnlimitedInstance());
assert (roles.size() + 2) == all_roles.size() : "All roles but two should be available for this subject";
assert !roles.contains(new_role);
assert !roles.contains(new_role2);
roleManager.addRolesToSubject(superuser, subject.getId(), new int[] { new_role.getId() });
roles = roleManager.findAvailableRolesForSubject(superuser, subject.getId(), new Integer[0],
PageControl.getUnlimitedInstance());
assert (roles.size() + 1) == all_roles.size() : "All but one role should be available for this subject";
assert !roles.contains(new_role) : "We already assigned this new role to the subject - it isn't available";
roles = roleManager.findAvailableRolesForSubject(superuser, subject.getId(),
new Integer[] { new_role2.getId() }, PageControl.getUnlimitedInstance());
assert (roles.size() + 2) == all_roles.size() : "One is already assigned and one is excluded so all but two roles should be available for this subject";
assert !roles.contains(new_role) : "We already assigned this new role to the subject - it isn't available";
assert !roles.contains(new_role2) : "We excluded this new role - it isn't available";
try {