diff --git a/atlassian/confluence/cloud/__init__.py b/atlassian/confluence/cloud/__init__.py index 24ad4b6a0..afad9f4d0 100644 --- a/atlassian/confluence/cloud/__init__.py +++ b/atlassian/confluence/cloud/__init__.py @@ -640,8 +640,12 @@ def get_users(self, **kwargs): return self.get("rest/api/user", **kwargs) def get_user(self, user_id, **kwargs): - """Get user by ID.""" - return self.get(f"rest/api/user/{user_id}", **kwargs) + """Get user by account ID. + + :param user_id: the user's account ID + """ + params = {**(kwargs.pop("params", None) or {}), "accountId": user_id} + return self.get("rest/api/user", params=params, **kwargs) def get_current_user(self, **kwargs): """Get current user.""" diff --git a/tests/confluence/test_confluence_cloud.py b/tests/confluence/test_confluence_cloud.py index da9ef56ae..ed2816a5e 100644 --- a/tests/confluence/test_confluence_cloud.py +++ b/tests/confluence/test_confluence_cloud.py @@ -694,10 +694,31 @@ def test_get_users(self, mock_get, confluence_cloud): @patch.object(ConfluenceCloud, "get") def test_get_user(self, mock_get, confluence_cloud): """Test get_user method.""" - mock_get.return_value = {"id": "user1", "name": "Test User"} + mock_get.return_value = {"accountId": "user1", "displayName": "Test User"} result = confluence_cloud.get_user("user1") - mock_get.assert_called_once_with("rest/api/user/user1", **{}) - assert result == {"id": "user1", "name": "Test User"} + mock_get.assert_called_once_with("rest/api/user", params={"accountId": "user1"}) + assert result == {"accountId": "user1", "displayName": "Test User"} + + @patch.object(ConfluenceCloud, "get") + def test_get_user_keeps_extra_params(self, mock_get, confluence_cloud): + mock_get.return_value = {"accountId": "user1"} + + assert confluence_cloud.get_user("user1", params={"expand": "personalSpace"}) == {"accountId": "user1"} + mock_get.assert_called_once_with("rest/api/user", params={"expand": "personalSpace", "accountId": "user1"}) + + def test_get_user_requests_wiki_user_endpoint(self, confluence_cloud): + response = Response() + response.status_code = 200 + response._content = b'{"accountId": "557058:f58131cb", "displayName": "Test User"}' + + with patch.object(confluence_cloud._session, "request", return_value=response) as mock_request: + assert confluence_cloud.get_user("557058:f58131cb") == { + "accountId": "557058:f58131cb", + "displayName": "Test User", + } + + url = mock_request.call_args.kwargs["url"] + assert url == "https://test.atlassian.net/wiki/rest/api/user?accountId=557058%3Af58131cb" @patch.object(ConfluenceCloud, "get") def test_get_current_user(self, mock_get, confluence_cloud):