@@ -58,14 +58,23 @@ def _diff(
5858 diff_url : str | None = "https://socket.dev/orgs/fictional/diffs/diff-456" ,
5959 is_full_scan : bool = False ,
6060 alerts_fetched : bool = True ,
61+ diff_scan_id : str | None = None ,
62+ old_scan_id : str | None = None ,
63+ new_scan_id : str | None = "full-123" ,
64+ old_scan_url : str | None = None ,
65+ new_scan_url : str | None = None ,
6166) -> Diff :
6267 return Diff (
6368 id = "full-123" ,
64- new_scan_id = "full-123" ,
6569 report_url = report_url ,
6670 diff_url = diff_url ,
6771 is_full_scan = is_full_scan ,
6872 alerts_fetched = alerts_fetched ,
73+ diff_scan_id = diff_scan_id ,
74+ old_scan_id = old_scan_id ,
75+ new_scan_id = new_scan_id ,
76+ old_scan_url = old_scan_url ,
77+ new_scan_url = new_scan_url ,
6978 new_alerts = list (new_alerts or []),
7079 unchanged_alerts = list (unchanged_alerts or []),
7180 )
@@ -245,6 +254,11 @@ def test_default_socket_json_key_set_and_metadata_remain_unchanged():
245254 "branch" ,
246255 "commit_sha" ,
247256 "legal_mode" ,
257+ "diff_scan_id" ,
258+ "old_scan_id" ,
259+ "new_scan_id" ,
260+ "old_scan_url" ,
261+ "new_scan_url" ,
248262 }
249263 assert report == {
250264 "scan_failed" : False ,
@@ -256,9 +270,77 @@ def test_default_socket_json_key_set_and_metadata_remain_unchanged():
256270 "branch" : "feature/example" ,
257271 "commit_sha" : "abc123" ,
258272 "legal_mode" : True ,
273+ "diff_scan_id" : None ,
274+ "old_scan_id" : None ,
275+ "new_scan_id" : "full-123" ,
276+ "old_scan_url" : None ,
277+ "new_scan_url" : None ,
259278 }
260279
261280
281+ def test_scan_references_are_distinct_nullable_and_preserve_input ():
282+ diff = _diff (
283+ diff_scan_id = "comparison-789" ,
284+ old_scan_id = "baseline-456" ,
285+ new_scan_id = "full-123" ,
286+ old_scan_url = "https://reports.example.test/before?x=1#base" ,
287+ new_scan_url = "https://reports.example.test/after?x=2#new" ,
288+ )
289+ original = copy .deepcopy (diff .__dict__ )
290+
291+ report = build_socket_json_report (diff , _config ())
292+
293+ assert report == {
294+ "scan_failed" : False ,
295+ "new_alerts" : [],
296+ "full_scan_id" : "full-123" ,
297+ "diff_url" : "https://socket.dev/orgs/fictional/diffs/diff-456" ,
298+ "report_url" : "https://socket.dev/orgs/fictional/reports/full-123" ,
299+ "repo" : "fictional-repo" ,
300+ "branch" : "" ,
301+ "commit_sha" : "" ,
302+ "legal_mode" : False ,
303+ "diff_scan_id" : "comparison-789" ,
304+ "old_scan_id" : "baseline-456" ,
305+ "new_scan_id" : "full-123" ,
306+ "old_scan_url" : "https://reports.example.test/before?x=1#base" ,
307+ "new_scan_url" : "https://reports.example.test/after?x=2#new" ,
308+ }
309+ assert json .loads (json .dumps (report ))["old_scan_id" ] == "baseline-456"
310+ assert diff .__dict__ == original
311+
312+
313+ def test_missing_references_remain_null_without_url_inference ():
314+ diff = _diff (
315+ report_url = "https://reports.example.test/display" ,
316+ diff_url = None ,
317+ diff_scan_id = None ,
318+ old_scan_id = None ,
319+ new_scan_id = None ,
320+ old_scan_url = None ,
321+ new_scan_url = None ,
322+ )
323+
324+ report = build_socket_json_report (diff , _config ())
325+
326+ assert report ["diff_scan_id" ] is None
327+ assert report ["new_scan_id" ] is None
328+ assert report ["new_scan_url" ] is None
329+ assert report ["diff_url" ] is None
330+ assert report ["report_url" ] == "https://reports.example.test/display"
331+
332+
333+ def test_canonical_scan_url_is_distinct_from_display_report_url ():
334+ canonical_url = "https://reports.example.test/scan?id=full-123#result"
335+ display_url = "https://reports.example.test/scan?id=full-123&include_license_details=false#result"
336+ diff = _diff (report_url = display_url , new_scan_url = canonical_url )
337+
338+ report = build_socket_json_report (diff , _config ())
339+
340+ assert report ["new_scan_url" ] == canonical_url
341+ assert report ["report_url" ] == display_url
342+
343+
262344def test_missing_reference_fields_keep_existing_json_defaults ():
263345 diff = Diff (new_alerts = [])
264346
0 commit comments