Skip to content

Commit d15fa7d

Browse files
committed
fix: prevent request failure by skipping JIRA push when not configured in test case
1 parent d8cdc52 commit d15fa7d

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed

dojo/jira_link/helper.py

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,13 +1451,14 @@ def close_epic(engagement_id, push_to_jira, **kwargs):
14511451
def update_epic(engagement_id, **kwargs):
14521452
engagement = get_object_or_none(Engagement, id=engagement_id)
14531453
if not engagement:
1454-
logger.warning("Engagement with id %s does not exist, skipping update_epic", engagement_id)
1455-
return False
1454+
message = f"Engagement with id {engagement_id} does not exist, skipping update_epic"
1455+
logger.warning(message)
1456+
return False, message
14561457

14571458
logger.debug("trying to update jira EPIC for %d:%s", engagement.id, engagement.name)
14581459

14591460
if not is_jira_configured_and_enabled(engagement):
1460-
return False
1461+
return False, "JIRA integration is not properly configured for this engagement."
14611462

14621463
logger.debug("config found")
14631464

@@ -1483,35 +1484,40 @@ def update_epic(engagement_id, **kwargs):
14831484
jira_issue_update_kwargs["priority"] = {"name": epic_priority}
14841485
issue.update(**jira_issue_update_kwargs)
14851486
except JIRAError as e:
1486-
logger.exception("Jira Engagement/Epic Update Error")
1487-
log_jira_generic_alert("Jira Engagement/Epic Update Error", str(e))
1488-
return False
1487+
message = f"Failed to update the JIRA EPIC for engagement {engagement.id} - {e}"
1488+
logger.exception(message)
1489+
log_jira_generic_alert(message)
1490+
return False, message
14891491

1490-
return True
1492+
return True, "JIRA EPIC updated successfully."
14911493

1492-
add_error_message_to_response("Push to JIRA for Epic skipped because enable_engagement_epic_mapping is not checked for this engagement")
1493-
return False
1494+
message = f"Push to JIRA for Epic skipped because enable_engagement_epic_mapping is not checked for engagement {engagement.id}."
1495+
add_error_message_to_response(message)
1496+
return False, message
14941497

14951498

14961499
@app.task
14971500
def add_epic(engagement_id, **kwargs):
14981501
engagement = get_object_or_none(Engagement, id=engagement_id)
14991502
if not engagement:
1500-
logger.warning("Engagement with id %s does not exist, skipping add_epic", engagement_id)
1501-
return False
1503+
message = f"Engagement with id {engagement_id} does not exist, skipping add_epic"
1504+
logger.warning(message)
1505+
return False, message
15021506

15031507
logger.debug("trying to create a new jira EPIC for %d:%s", engagement.id, engagement.name)
15041508

15051509
if not is_jira_configured_and_enabled(engagement):
1506-
return False
1510+
message = f"JIRA integration is not properly configured for engagement {engagement.id}."
1511+
return False, message
15071512

15081513
logger.debug("config found")
15091514

15101515
jira_project = get_jira_project(engagement)
15111516
jira_instance = get_jira_instance(engagement)
15121517
if not jira_instance:
1513-
logger.warning("JIRA add epic failed: jira_instance is None")
1514-
return False
1518+
message = f"JIRA add epic failed for engagement {engagement.id}: jira_instance is None"
1519+
logger.warning(message)
1520+
return False, message
15151521

15161522
if jira_project and jira_project.enable_engagement_epic_mapping:
15171523
epic_name = kwargs.get("epic_name")
@@ -1559,15 +1565,15 @@ def add_epic(engagement_id, **kwargs):
15591565
message = "The 'Epic name id' in your DefectDojo Jira Configuration does not appear to be correct. Please visit, " + jira_instance.url + \
15601566
"/rest/api/2/field and search for Epic Name. Copy the number out of cf[number] and place in your DefectDojo settings for Jira and try again. For example, if your results are cf[100001] then copy 100001 and place it in 'Epic name id'. (Your Epic Id will be different.) \n\n"
15611567
logger.exception(message)
1568+
message = f"JIRA add epic failed for engagement {engagement.id}: {message}"
1569+
log_jira_generic_alert(message)
1570+
return False, message
15621571

1563-
log_jira_generic_alert("Jira Engagement/Epic Creation Error",
1564-
message + error)
1565-
return False
1566-
1567-
return True
1572+
return True, "JIRA EPIC created successfully."
15681573

1569-
add_error_message_to_response("Push to JIRA for Epic skipped because enable_engagement_epic_mapping is not checked for this engagement")
1570-
return False
1574+
message = f"Push to JIRA for Epic skipped because enable_engagement_epic_mapping is not checked for engagement {engagement.id}."
1575+
add_error_message_to_response(message)
1576+
return False, message
15711577

15721578

15731579
def jira_get_issue(jira_project, issue_key):

unittests/test_rest_framework.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1767,7 +1767,8 @@ def __init__(self, *args, **kwargs):
17671767
"files": [],
17681768
"tags": ["tag1", "tag_2"],
17691769
}
1770-
self.update_fields = {"duplicate": False, "active": True, "push_to_jira": "True", "tags": ["finding_tag_new"]}
1770+
# Do not push to jira here as it will make the request fail due to jira not being configured
1771+
self.update_fields = {"duplicate": False, "active": True, "tags": ["finding_tag_new"]}
17711772
self.test_type = TestType.OBJECT_PERMISSIONS
17721773
self.permission_check_class = Finding
17731774
self.permission_create = Permissions.Finding_Add

0 commit comments

Comments
 (0)