diff options
author | John L. Villalovos <john@sodarock.com> | 2022-01-13 10:23:57 -0800 |
---|---|---|
committer | John L. Villalovos <john@sodarock.com> | 2022-01-13 10:23:57 -0800 |
commit | 755e0a32e8ca96a3a3980eb7d7346a1a899ad58b (patch) | |
tree | 5d55046123a97d2f628da91404e741e11e2f7eab | |
parent | 4a000b6c41f0a7ef6121c62a4c598edc20973799 (diff) | |
download | gitlab-755e0a32e8ca96a3a3980eb7d7346a1a899ad58b.tar.gz |
fix(members): use new *All objects for *AllManager managers
Change it so that:
GroupMemberAllManager uses GroupMemberAll object
ProjectMemberAllManager uses ProjectMemberAll object
Create GroupMemberAll and ProjectMemberAll objects that do not support
any Mixin type methods. Previously we were using GroupMember and
ProjectMember which support the `save()` and `delete()` methods but
those methods will not work with objects retrieved using the
`/members/all/` API calls.
`list()` API calls: [1]
GET /groups/:id/members/all
GET /projects/:id/members/all
`get()` API calls: [2]
GET /groups/:id/members/all/:user_id
GET /projects/:id/members/all/:user_id
Closes: #1825
Closes: #848
[1] https://docs.gitlab.com/ee/api/members.html#list-all-members-of-a-group-or-project-including-inherited-and-invited-members
[2] https://docs.gitlab.com/ee/api/members.html#get-a-member-of-a-group-or-project-including-inherited-and-invited-members
-rw-r--r-- | gitlab/v4/objects/members.py | 22 | ||||
-rw-r--r-- | tests/functional/cli/test_cli_v4.py | 28 |
2 files changed, 44 insertions, 6 deletions
diff --git a/gitlab/v4/objects/members.py b/gitlab/v4/objects/members.py index 8fa2bb3..c7be039 100644 --- a/gitlab/v4/objects/members.py +++ b/gitlab/v4/objects/members.py @@ -17,9 +17,11 @@ __all__ = [ "GroupBillableMemberMembership", "GroupBillableMemberMembershipManager", "GroupMember", + "GroupMemberAll", "GroupMemberManager", "GroupMemberAllManager", "ProjectMember", + "ProjectMemberAll", "ProjectMemberManager", "ProjectMemberAllManager", ] @@ -70,15 +72,19 @@ class GroupBillableMemberMembershipManager(ListMixin, RESTManager): _from_parent_attrs = {"group_id": "group_id", "user_id": "id"} +class GroupMemberAll(RESTObject): + _short_print_attr = "username" + + class GroupMemberAllManager(RetrieveMixin, RESTManager): _path = "/groups/{group_id}/members/all" - _obj_cls = GroupMember + _obj_cls = GroupMemberAll _from_parent_attrs = {"group_id": "id"} def get( self, id: Union[str, int], lazy: bool = False, **kwargs: Any - ) -> GroupMember: - return cast(GroupMember, super().get(id=id, lazy=lazy, **kwargs)) + ) -> GroupMemberAll: + return cast(GroupMemberAll, super().get(id=id, lazy=lazy, **kwargs)) class ProjectMember(SaveMixin, ObjectDeleteMixin, RESTObject): @@ -103,12 +109,16 @@ class ProjectMemberManager(CRUDMixin, RESTManager): return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs)) +class ProjectMemberAll(RESTObject): + _short_print_attr = "username" + + class ProjectMemberAllManager(RetrieveMixin, RESTManager): _path = "/projects/{project_id}/members/all" - _obj_cls = ProjectMember + _obj_cls = ProjectMemberAll _from_parent_attrs = {"project_id": "id"} def get( self, id: Union[str, int], lazy: bool = False, **kwargs: Any - ) -> ProjectMember: - return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs)) + ) -> ProjectMemberAll: + return cast(ProjectMemberAll, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/tests/functional/cli/test_cli_v4.py b/tests/functional/cli/test_cli_v4.py index 91c0afa..da64957 100644 --- a/tests/functional/cli/test_cli_v4.py +++ b/tests/functional/cli/test_cli_v4.py @@ -701,6 +701,31 @@ def test_delete_group_deploy_token(gitlab_cli, group_deploy_token): # TODO assert not in list +def test_project_member_all(gitlab_cli, project): + cmd = [ + "project-member-all", + "list", + "--project-id", + project.id, + ] + ret = gitlab_cli(cmd) + + assert ret.success + + +def test_group_member_all(gitlab_cli, group): + cmd = [ + "group-member-all", + "list", + "--group-id", + group.id, + ] + ret = gitlab_cli(cmd) + + assert ret.success + + +# Deleting the project and group. Add your tests above here. def test_delete_project(gitlab_cli, project): cmd = ["project", "delete", "--id", project.id] ret = gitlab_cli(cmd) @@ -713,3 +738,6 @@ def test_delete_group(gitlab_cli, group): ret = gitlab_cli(cmd) assert ret.success + + +# Don't add tests below here as the group and project have been deleted |