Search in sources :

Example 6 with Member

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())));
}
Also used : Member(io.jans.scim.model.scim2.group.Member) UserBaseTest(io.jans.scim2.client.UserBaseTest) java.util(java.util) UserResource(io.jans.scim.model.scim2.user.UserResource) Test(org.testng.annotations.Test) Collectors(java.util.stream.Collectors) GroupResource(io.jans.scim.model.scim2.group.GroupResource) BaseScimResource(io.jans.scim.model.scim2.BaseScimResource) SearchRequest(io.jans.scim.model.scim2.SearchRequest) Group(io.jans.scim.model.scim2.user.Group) Response(javax.ws.rs.core.Response) Assert(org.testng.Assert) ListResponse(io.jans.scim.model.scim2.ListResponse) Status(javax.ws.rs.core.Response.Status) Response(javax.ws.rs.core.Response) ListResponse(io.jans.scim.model.scim2.ListResponse) Member(io.jans.scim.model.scim2.group.Member) GroupResource(io.jans.scim.model.scim2.group.GroupResource) UserBaseTest(io.jans.scim2.client.UserBaseTest) Test(org.testng.annotations.Test)

Example 7 with Member

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));
}
Also used : Response(javax.ws.rs.core.Response) Member(io.jans.scim.model.scim2.group.Member) UserResource(io.jans.scim.model.scim2.user.UserResource) PatchRequest(io.jans.scim.model.scim2.patch.PatchRequest) Set(java.util.Set) Test(org.testng.annotations.Test) BaseTest(io.jans.scim2.client.BaseTest) Collectors(java.util.stream.Collectors) ScimResourceUtil(io.jans.scim.model.scim2.util.ScimResourceUtil) ArrayList(java.util.ArrayList) GroupResource(io.jans.scim.model.scim2.group.GroupResource) List(java.util.List) Response(javax.ws.rs.core.Response) Assert(org.testng.Assert) Parameters(org.testng.annotations.Parameters) PatchOperation(io.jans.scim.model.scim2.patch.PatchOperation) io.jans.scim.model.scim2(io.jans.scim.model.scim2) Collections(java.util.Collections) Status(javax.ws.rs.core.Response.Status) UserResource(io.jans.scim.model.scim2.user.UserResource) PatchOperation(io.jans.scim.model.scim2.patch.PatchOperation) ArrayList(java.util.ArrayList) PatchRequest(io.jans.scim.model.scim2.patch.PatchRequest) Member(io.jans.scim.model.scim2.group.Member) Test(org.testng.annotations.Test) BaseTest(io.jans.scim2.client.BaseTest)

Example 8 with Member

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());
}
Also used : Response(javax.ws.rs.core.Response) PatchOperation(io.jans.scim.model.scim2.patch.PatchOperation) PatchRequest(io.jans.scim.model.scim2.patch.PatchRequest) Member(io.jans.scim.model.scim2.group.Member) GroupResource(io.jans.scim.model.scim2.group.GroupResource) Test(org.testng.annotations.Test) BaseTest(io.jans.scim2.client.BaseTest)

Example 9 with Member

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);
    }
}
Also used : GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) ArrayList(java.util.ArrayList) UserResource(org.gluu.oxtrust.model.scim2.user.UserResource) Member(org.gluu.oxtrust.model.scim2.group.Member)

Example 10 with Member

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");
}
Also used : Response(javax.ws.rs.core.Response) ListResponse(io.jans.scim.model.scim2.ListResponse) Member(io.jans.scim.model.scim2.group.Member) UserBaseTest(io.jans.scim2.client.UserBaseTest) java.util(java.util) UserResource(io.jans.scim.model.scim2.user.UserResource) Test(org.testng.annotations.Test) Collectors(java.util.stream.Collectors) GroupResource(io.jans.scim.model.scim2.group.GroupResource) BaseScimResource(io.jans.scim.model.scim2.BaseScimResource) SearchRequest(io.jans.scim.model.scim2.SearchRequest) Group(io.jans.scim.model.scim2.user.Group) Response(javax.ws.rs.core.Response) Assert(org.testng.Assert) ListResponse(io.jans.scim.model.scim2.ListResponse) Status(javax.ws.rs.core.Response.Status) UserResource(io.jans.scim.model.scim2.user.UserResource) Member(io.jans.scim.model.scim2.group.Member) GroupResource(io.jans.scim.model.scim2.group.GroupResource) UserBaseTest(io.jans.scim2.client.UserBaseTest) Test(org.testng.annotations.Test)

Aggregations

Member (io.jans.scim.model.scim2.group.Member)8 GroupResource (io.jans.scim.model.scim2.group.GroupResource)6 UserResource (io.jans.scim.model.scim2.user.UserResource)6 ArrayList (java.util.ArrayList)5 Collectors (java.util.stream.Collectors)5 Response (javax.ws.rs.core.Response)5 Test (org.testng.annotations.Test)5 HashSet (java.util.HashSet)4 Status (javax.ws.rs.core.Response.Status)4 GluuCustomPerson (io.jans.scim.model.GluuCustomPerson)3 BaseScimResource (io.jans.scim.model.scim2.BaseScimResource)3 ListResponse (io.jans.scim.model.scim2.ListResponse)3 List (java.util.List)3 Set (java.util.Set)3 WebApplicationException (javax.ws.rs.WebApplicationException)3 Assert (org.testng.Assert)3 PersistenceEntryManager (io.jans.orm.PersistenceEntryManager)2 GluuGroup (io.jans.scim.model.GluuGroup)2 Meta (io.jans.scim.model.scim2.Meta)2 PatchOperation (io.jans.scim.model.scim2.patch.PatchOperation)2