gitlab4j / gitlab4j-api

GitLab4J API (gitlab4j-api) provides a full featured Java client library for working with GitLab repositories via the GitLab REST API
MIT License
1.06k stars 454 forks source link

groupApi removeMember remove subgroup and projects member #1137

Open CHYhave opened 2 months ago

CHYhave commented 2 months ago
  1. add subgroup member
  2. add group member
  3. remove group member expect group member has been removed and keep subgroup member actual subgroup also has been removed
CHYhave commented 2 months ago

test case: ` @Test public void removeMember() throws GitLabApiException, MalformedURLException { Integer groupId = 3, userId = 2; Integer subGroupId = 5; GitLabApi gitLabApi = new GitLabApi("http://10.10.102.202:33200/", "glpat-mW-1QqaqTquBGdGt8UY6"); GroupApi groupApi = gitLabApi.getGroupApi();

    Member groupMember = groupApi.getOptionalMember(groupId, userId, true).orElse(null);
    if (groupMember == null) {
        groupApi.addMember(groupId, userId, AccessLevel.MAINTAINER);
        groupMember = groupApi.getOptionalMember(groupId, userId).orElse(null);
    }
    Assert.assertNotNull(groupMember);

    Member subGroupMember = groupApi.getOptionalMember(subGroupId, userId).orElse(null);
    if (subGroupMember == null) {
        groupApi.addMember(subGroupId, userId, AccessLevel.MAINTAINER);
        subGroupMember = groupApi.getOptionalMember(subGroupId, userId).orElse(null);
    }
    Assert.assertNotNull(subGroupMember);

    Group group = groupApi.getGroup(groupId);
    groupApi.removeMember(group.getId(), userId);
    groupMember = groupApi.getOptionalMember(groupId, userId).orElse(null);
    Assert.assertNull(groupMember);
    subGroupMember = groupApi.getOptionalMember(subGroupId, userId).orElse(null);
    Assert.assertNotNull("sub group member has been removed", subGroupMember);
}

`

jmini commented 1 month ago

What you describes seems to be related to how GitLab itself works. I don't think we can influence this at client side.