Skip to content

Commit d7c7dec

Browse files
authored
Use permissions param in permitted_projects request (#793)
1 parent ab68cce commit d7c7dec

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

jbi/services/jira.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def permitted_projects(self, permissions: Optional[Iterable] = None) -> list[dic
147147

148148
response = self.post(
149149
"/rest/api/2/permissions/project",
150-
json={"permissions": list(JIRA_REQUIRED_PERMISSIONS)},
150+
json={"permissions": list(permissions)},
151151
)
152152
projects: list[dict] = response["projects"]
153153
return projects

tests/unit/services/test_jira.py

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import json
21
import logging
32

43
import pytest
@@ -444,3 +443,60 @@ def test_all_project_issue_types_exist(
444443
)
445444

446445
assert jira.get_service()._all_project_issue_types_exist(actions) == expected_result
446+
447+
448+
def test_visible_projects(mocked_responses):
449+
url = f"{get_settings().jira_base_url}rest/api/2/permissions/project"
450+
mocked_responses.add(
451+
responses.POST,
452+
url,
453+
status=200,
454+
match=[
455+
responses.matchers.json_params_matcher(
456+
{"permissions": []},
457+
)
458+
],
459+
json={"projects": [{"key": "ABC"}, {"key": "DEF"}]},
460+
)
461+
462+
projects = jira.get_service().fetch_visible_projects()
463+
assert projects == ["ABC", "DEF"]
464+
465+
466+
@pytest.mark.parametrize(
467+
"project_data, expected_result",
468+
[
469+
(
470+
[{"key": "ABC"}, {"key": "DEF"}],
471+
True,
472+
),
473+
(
474+
[{"key": "ABC"}],
475+
False,
476+
),
477+
],
478+
)
479+
def test_all_projects_permissions(
480+
mocked_responses, action_factory, project_data, expected_result
481+
):
482+
actions = Actions(
483+
root=[
484+
action_factory(whiteboard_tag="abc", parameters__jira_project_key="ABC"),
485+
action_factory(whiteboard_tag="def", parameters__jira_project_key="DEF"),
486+
]
487+
)
488+
489+
url = f"{get_settings().jira_base_url}rest/api/2/permissions/project"
490+
mocked_responses.add(
491+
responses.POST,
492+
url,
493+
status=200,
494+
match=[
495+
responses.matchers.json_params_matcher(
496+
{"permissions": list(jira.JIRA_REQUIRED_PERMISSIONS)},
497+
)
498+
],
499+
json={"projects": project_data},
500+
)
501+
502+
assert jira.get_service()._all_projects_permissions(actions) == expected_result

0 commit comments

Comments
 (0)