use of io.jans.scim.model.scim2.group.Member in project jans by JanssenProject.
the class GroupAssignUserTest method assignToGroup.
@Test(dependsOnMethods = "createUsers")
public void assignToGroup() {
Set<Member> buddies = friends.stream().map(buddy -> {
Member m = new Member();
m.setValue(buddy.getId());
m.setDisplay(buddy.getDisplayName());
return m;
}).collect(Collectors.toSet());
GroupResource gr = new GroupResource();
gr.setDisplayName("3 best demented buddies");
gr.setMembers(buddies);
logger.info("Assigning users to new group...");
Response response = client.createGroup(gr, null, null);
assertEquals(response.getStatus(), CREATED.getStatusCode());
group = response.readEntity(GroupResource.class);
// Verify the sanitarium is completely booked
assertTrue(group.getMembers().stream().map(Member::getValue).collect(Collectors.toSet()).equals(friends.stream().map(UserResource::getId).collect(Collectors.toSet())));
}
use of io.jans.scim.model.scim2.group.Member in project jans by JanssenProject.
the class PatchGroupTest method patch2.
@Test(dependsOnMethods = "patch1")
public void patch2() throws Exception {
List<UserResource> users = getTestUsers("aaa");
assertTrue(users.size() > 0);
// Define one "add" operation to insert the users retrieved in the created group
PatchOperation operation = new PatchOperation();
operation.setOperation("add");
operation.setPath("members");
List<Member> memberList = new ArrayList<>();
users.stream().forEach(u -> {
Member m = new Member();
m.setType(ScimResourceUtil.getType(usrClass));
m.setValue(u.getId());
m.setDisplay(u.getDisplayName());
m.setRef("/scim/v2/Users/" + u.getId());
memberList.add(m);
});
operation.setValue(memberList);
// Apply the patch to the group
PatchRequest pr = new PatchRequest();
pr.setOperations(Collections.singletonList(operation));
Response response = client.patchGroup(pr, group.getId(), null, null);
assertEquals(response.getStatus(), OK.getStatusCode());
group = response.readEntity(groupCls);
// Verify the new users are there
Set<Member> members = group.getMembers();
assertNotNull(members);
assertTrue(members.stream().allMatch(m -> m.getDisplay() != null && m.getType() != null && m.getValue() != null && m.getRef() != null));
// Verify the Ids are the same (both provided and returned)
Set<String> userIds = users.stream().map(UserResource::getId).collect(Collectors.toSet());
assertTrue(members.stream().map(Member::getValue).collect(Collectors.toSet()).equals(userIds));
}
use of io.jans.scim.model.scim2.group.Member in project jans by JanssenProject.
the class PatchGroupTest method patch3.
@Test(dependsOnMethods = "patch2")
public void patch3() {
Member[] members = group.getMembers().toArray(new Member[0]);
// Try modifying one of the members. This should fail because of mutability
PatchOperation operation = new PatchOperation();
operation.setOperation("replace");
operation.setPath(String.format("members[value eq \"%s\"].value", members[0].getValue()));
operation.setValue(members[1].getValue());
PatchRequest pr = new PatchRequest();
pr.setOperations(Collections.singletonList(operation));
Response response = client.patchGroup(pr, group.getId(), null, null);
assertEquals(response.getStatus(), BAD_REQUEST.getStatusCode());
// Try modifying one of the members. This should not fail ...
operation.setValue(members[0].getValue());
response = client.patchGroup(pr, group.getId(), null, null);
assertEquals(response.getStatus(), OK.getStatusCode());
// Try deleting value subattribute. This should fail ...
operation.setOperation("remove");
response = client.patchGroup(pr, group.getId(), null, null);
assertEquals(response.getStatus(), BAD_REQUEST.getStatusCode());
// Try removing one of the members. This should not fail ...
operation.setPath(String.format("members[value eq \"%s\"]", members[0].getValue()));
response = client.patchGroup(pr, group.getId(), null, null);
group = response.readEntity(GroupResource.class);
assertEquals(response.getStatus(), OK.getStatusCode());
assertEquals(members.length - 1, group.getMembers().size());
}
use of io.jans.scim.model.scim2.group.Member in project oxTrust by GluuFederation.
the class Scim2GroupService method transferAttributesToGroup.
private void transferAttributesToGroup(GroupResource res, GluuGroup group, String usersUrl) {
// externalId (so oxTrustExternalId) not part of LDAP schema
group.setAttribute("oxTrustMetaCreated", res.getMeta().getCreated());
group.setAttribute("oxTrustMetaLastModified", res.getMeta().getLastModified());
// When creating group, location will be set again when having an inum
group.setAttribute("oxTrustMetaLocation", res.getMeta().getLocation());
group.setDisplayName(res.getDisplayName());
group.setStatus(GluuStatus.ACTIVE);
group.setOrganization(organizationService.getDnForOrganization());
// Add the members, and complement the $refs and users' display names in res
Set<Member> members = res.getMembers();
if (members != null && members.size() > 0) {
List<String> listMembers = new ArrayList<String>();
for (Member member : members) {
// it's not null as it is required in GroupResource
String inum = member.getValue();
GluuCustomPerson person = personService.getPersonByInum(inum);
if (person == null)
log.info("Member identified by {} does not exist. Ignored", inum);
else {
member.setDisplay(person.getDisplayName());
member.setRef(usersUrl + "/" + inum);
member.setType(ScimResourceUtil.getType(UserResource.class));
listMembers.add(person.getDn());
}
}
group.setMembers(listMembers);
}
}
use of io.jans.scim.model.scim2.group.Member in project jans by JanssenProject.
the class GroupAssignUserTest method alterMemberships.
@Test(dependsOnMethods = "modifyGroupFromUser")
public void alterMemberships() {
// Effectively remove one member and add admin
Member aMental = group.getMembers().stream().findAny().get();
Member admin = new Member();
admin.setValue(getAdminId());
group.getMembers().remove(aMental);
group.getMembers().add(admin);
logger.info("Removing one and adding one member...");
Response response = client.updateGroup(group, group.getId(), null, null);
assertEquals(response.getStatus(), OK.getStatusCode());
group = response.readEntity(GroupResource.class);
assertFalse(group.getMembers().contains(aMental));
// Here we don't use contains because equality in Member object inspects all fields (not only value)
assertTrue(group.getMembers().stream().anyMatch(m -> admin.getValue().equals(m.getValue())));
logger.info("Group has correct members");
// Verify groups attribute in users reflected changes
response = client.getUserById(aMental.getValue(), "groups", null);
assertEquals(response.getStatus(), OK.getStatusCode());
UserResource patient = response.readEntity(usrClass);
assertTrue(patient.getGroups() == null || patient.getGroups().stream().noneMatch(gr -> gr.getValue().equals(group.getId())));
response = client.getUserById(admin.getValue(), "groups", null);
assertEquals(response.getStatus(), OK.getStatusCode());
patient = response.readEntity(usrClass);
assertTrue(patient.getGroups().stream().anyMatch(gr -> gr.getValue().equals(group.getId())));
logger.info("Users have correct memberships");
}
Aggregations