diff --git a/gitlab/v4/cli.py b/gitlab/v4/cli.py index 128bd5bd0..4bfa5ea93 100644 --- a/gitlab/v4/cli.py +++ b/gitlab/v4/cli.py @@ -46,7 +46,7 @@ def __init__( self.mgr_cls._path = self.mgr_cls._path.format(**self.parent_args) self.mgr = self.mgr_cls(gl) - + self.mgr._from_parent_attrs = self.parent_args if self.mgr_cls._types: for attr_name, type_cls in self.mgr_cls._types.items(): if attr_name in self.args.keys(): diff --git a/gitlab/v4/objects/users.py b/gitlab/v4/objects/users.py index e2f10574e..fe93e4a68 100644 --- a/gitlab/v4/objects/users.py +++ b/gitlab/v4/objects/users.py @@ -666,7 +666,7 @@ def list(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: if self._parent: path = f"/users/{self._parent.id}/projects" else: - path = f"/users/{kwargs['user_id']}/projects" + path = f"/users/{self._from_parent_attrs['user_id']}/projects" return ListMixin.list(self, path=path, **kwargs) diff --git a/tests/functional/cli/test_cli_users.py b/tests/functional/cli/test_cli_users.py index 740201336..8bf2fbcd4 100644 --- a/tests/functional/cli/test_cli_users.py +++ b/tests/functional/cli/test_cli_users.py @@ -12,3 +12,10 @@ def test_create_user_impersonation_token_with_scopes(gitlab_cli, user): ret = gitlab_cli(cmd) assert ret.success + + +def test_list_user_projects(gitlab_cli, user): + cmd = ["user-project", "list", "--user-id", user.id] + ret = gitlab_cli(cmd) + + assert ret.success