Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions atlassian/confluence/cloud/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,11 @@ def get_page_by_id(self, page_id, **kwargs):
"""Get a page (or other content) by ID from the Cloud V1 content API."""
return self.get(f"rest/api/content/{page_id}", **kwargs)

def get_page_space(self, page_id):
"""Get the space key of a page (or other content) by ID."""
page = self.get(f"rest/api/content/{page_id}", params={"expand": "space"})
return page.get("space", {}).get("key")

def create_page(
self,
space,
Expand Down
31 changes: 31 additions & 0 deletions tests/confluence/test_confluence_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,37 @@ def test_get_page_id_through_confluence_factory(self, mock_get):

assert confluence.get_page_id("TEST", "Test Page") == "123"

@patch.object(ConfluenceCloud, "get")
def test_get_page_space(self, mock_get, confluence_cloud):
mock_get.return_value = {"id": "123", "space": {"id": 42, "key": "TEST"}}

assert confluence_cloud.get_page_space("123") == "TEST"
mock_get.assert_called_once_with("rest/api/content/123", params={"expand": "space"})

@patch.object(ConfluenceCloud, "get")
def test_get_page_space_returns_none_without_space(self, mock_get, confluence_cloud):
mock_get.return_value = {"id": "123"}

assert confluence_cloud.get_page_space("123") is None

def test_get_page_space_requests_wiki_content_endpoint(self, confluence_cloud):
response = Response()
response.status_code = 200
response._content = b'{"id": "123", "space": {"key": "TEST"}}'

with patch.object(confluence_cloud._session, "request", return_value=response) as mock_request:
assert confluence_cloud.get_page_space("123") == "TEST"

url = mock_request.call_args.kwargs["url"]
assert url == "https://test.atlassian.net/wiki/rest/api/content/123?expand=space"

@patch.object(ConfluenceCloud, "get")
def test_get_page_space_through_confluence_factory(self, mock_get):
mock_get.return_value = {"id": "123", "space": {"key": "TEST"}}
confluence = Confluence(url="https://test.atlassian.net", username="user", password="api-token")

assert confluence.get_page_space("123") == "TEST"

@patch.object(ConfluenceCloud, "get")
def test_get_all_blog_posts_from_space(self, mock_get, confluence_cloud):
"""Test get_all_blog_posts_from_space method."""
Expand Down
Loading