Skip to content

Commit fff7fd8

Browse files
Jino-Tclaude
andcommitted
add unit tests for SSRF protection in risk recon API init
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 6cad64e commit fff7fd8

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

unittests/tools/test_risk_recon_parser.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import datetime
2+
from unittest.mock import MagicMock, patch
23

34
from dojo.models import Test
5+
from dojo.tools.risk_recon.api import RiskReconAPI
46
from dojo.tools.risk_recon.parser import RiskReconParser
7+
from dojo.utils_ssrf import SSRFError
58
from unittests.dojo_test_case import DojoTestCase, get_unit_tests_scans_path
69

710

@@ -32,3 +35,20 @@ def test_parser_without_api(self):
3235
finding = findings[1]
3336
self.assertEqual(datetime.date(2017, 3, 17), finding.date.date())
3437
self.assertEqual("ff2bbdbfc2b6gsrgwergwe6b1fasfwefb", finding.unique_id_from_tool)
38+
39+
@patch("dojo.tools.risk_recon.api.validate_url_for_ssrf", side_effect=SSRFError("blocked: private address"))
40+
def test_ssrf_error_is_raised_as_exception(self, mock_validate):
41+
with self.assertRaisesRegex(Exception, "Invalid Risk Recon API url"):
42+
RiskReconAPI(api_key="somekey", endpoint="http://192.168.1.1/api", data=[])
43+
mock_validate.assert_called_once_with("http://192.168.1.1/api")
44+
45+
@patch.object(RiskReconAPI, "get_findings")
46+
@patch.object(RiskReconAPI, "map_toes")
47+
@patch("dojo.tools.risk_recon.api.make_ssrf_safe_session")
48+
@patch("dojo.tools.risk_recon.api.validate_url_for_ssrf")
49+
def test_make_ssrf_safe_session_called_on_init(self, mock_validate, mock_make_session, mock_map_toes, mock_get_findings):
50+
mock_session = MagicMock()
51+
mock_make_session.return_value = mock_session
52+
api = RiskReconAPI(api_key="somekey", endpoint="https://api.riskrecon.com/v1", data=[])
53+
mock_make_session.assert_called_once()
54+
self.assertIs(api.session, mock_session)

0 commit comments

Comments
 (0)