Skip to content

Commit 968d983

Browse files
authored
add required parameter field 'permissions' to my_permissions() (#1472)
for Jira Cloud
1 parent 009ec9f commit 968d983

File tree

2 files changed

+55
-3
lines changed

2 files changed

+55
-3
lines changed

jira/client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2630,14 +2630,20 @@ def my_permissions(
26302630
projectId: Optional[str] = None,
26312631
issueKey: Optional[str] = None,
26322632
issueId: Optional[str] = None,
2633+
permissions: Optional[str] = None,
26332634
) -> Dict[str, Dict[str, Dict[str, str]]]:
26342635
"""Get a dict of all available permissions on the server.
26352636
2637+
``permissions`` is a comma-separated value list of permission keys that is
2638+
required in Jira Cloud. For possible and allowable permission values, see
2639+
https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes/#built-in-permissions
2640+
26362641
Args:
26372642
projectKey (Optional[str]): limit returned permissions to the specified project
26382643
projectId (Optional[str]): limit returned permissions to the specified project
26392644
issueKey (Optional[str]): limit returned permissions to the specified issue
26402645
issueId (Optional[str]): limit returned permissions to the specified issue
2646+
permissions (Optional[str]): limit returned permissions to the specified csv permission keys (cloud required field)
26412647
26422648
Returns:
26432649
Dict[str, Dict[str, Dict[str, str]]]
@@ -2651,6 +2657,9 @@ def my_permissions(
26512657
params["issueKey"] = issueKey
26522658
if issueId is not None:
26532659
params["issueId"] = issueId
2660+
if permissions is not None:
2661+
params["permissions"] = permissions
2662+
26542663
return self._get_json("mypermissions", params=params)
26552664

26562665
# Priorities

tests/tests.py

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from jira import JIRA, Issue, JIRAError
2323
from jira.client import ResultList
2424
from jira.resources import Dashboard, Resource, cls_for_resource
25-
from tests.conftest import JiraTestCase, rndpassword
25+
from tests.conftest import JiraTestCase, allow_on_cloud, rndpassword
2626

2727
LOGGER = logging.getLogger(__name__)
2828

@@ -154,9 +154,9 @@ def test_fields(self):
154154
self.assertGreater(len(fields), 10)
155155

156156

157-
class MyPermissionsTests(JiraTestCase):
157+
class MyPermissionsServerTests(JiraTestCase):
158158
def setUp(self):
159-
JiraTestCase.setUp(self)
159+
super().setUp()
160160
self.issue_1 = self.test_manager.project_b_issue1
161161

162162
def test_my_permissions(self):
@@ -178,6 +178,49 @@ def test_my_permissions_by_issue(self):
178178
self.assertGreaterEqual(len(perms["permissions"]), 10)
179179

180180

181+
@allow_on_cloud
182+
class MyPermissionsCloudTests(JiraTestCase):
183+
def setUp(self):
184+
super().setUp()
185+
if not self.jira._is_cloud:
186+
self.skipTest("cloud only test class")
187+
self.issue_1 = self.test_manager.project_b_issue1
188+
self.permission_keys = "BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS"
189+
190+
def test_my_permissions(self):
191+
perms = self.jira.my_permissions(permissions=self.permission_keys)
192+
self.assertEqual(len(perms["permissions"]), 3)
193+
194+
def test_my_permissions_by_project(self):
195+
perms = self.jira.my_permissions(
196+
projectKey=self.test_manager.project_a, permissions=self.permission_keys
197+
)
198+
self.assertEqual(len(perms["permissions"]), 3)
199+
perms = self.jira.my_permissions(
200+
projectId=self.test_manager.project_a_id, permissions=self.permission_keys
201+
)
202+
self.assertEqual(len(perms["permissions"]), 3)
203+
204+
def test_my_permissions_by_issue(self):
205+
perms = self.jira.my_permissions(
206+
issueKey=self.issue_1, permissions=self.permission_keys
207+
)
208+
self.assertEqual(len(perms["permissions"]), 3)
209+
perms = self.jira.my_permissions(
210+
issueId=self.test_manager.project_b_issue1_obj.id,
211+
permissions=self.permission_keys,
212+
)
213+
self.assertEqual(len(perms["permissions"]), 3)
214+
215+
def test_missing_required_param_my_permissions_raises_exception(self):
216+
with self.assertRaises(JIRAError):
217+
self.jira.my_permissions()
218+
219+
def test_invalid_param_my_permissions_raises_exception(self):
220+
with self.assertRaises(JIRAError):
221+
self.jira.my_permissions("INVALID_PERMISSION")
222+
223+
181224
class SearchTests(JiraTestCase):
182225
def setUp(self):
183226
JiraTestCase.setUp(self)

0 commit comments

Comments
 (0)