From 567778991961189679c45f1ca0312c5ff089702e Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 14 May 2026 13:40:28 +0000 Subject: [PATCH] =?UTF-8?q?pashub=5Fjob=5Fid=20extracts=20ID=20from=20/evi?= =?UTF-8?q?dence/view=20links=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pashub_to_ara_trigger_request.py | 8 ++++++-- .../test_pashub_to_ara_trigger_request.py | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/backend/pashub_fetcher/pashub_to_ara_trigger_request.py b/backend/pashub_fetcher/pashub_to_ara_trigger_request.py index 518a8dc3..2e077c2e 100644 --- a/backend/pashub_fetcher/pashub_to_ara_trigger_request.py +++ b/backend/pashub_fetcher/pashub_to_ara_trigger_request.py @@ -1,10 +1,11 @@ +import re from typing import Optional from pydantic import BaseModel class PashubToAraTriggerRequest(BaseModel): pashub_link: ( - str # e.g. https://pashub.net/jobs/12345-abcd-1234-abcd-12345abcde/details + str # e.g. https://pashub.net/jobs/{id}/details, /jobs/{id}/evidence/view, /jobs/{id} ) address: Optional[str] = None @@ -17,4 +18,7 @@ class PashubToAraTriggerRequest(BaseModel): @property def pashub_job_id(self) -> str: - return self.pashub_link.split("/")[-2] + match = re.search(r"/jobs/([^/]+)", self.pashub_link) + if not match: + raise ValueError(f"No job ID found in PasHub link: {self.pashub_link}") + return match.group(1) diff --git a/backend/pashub_fetcher/tests/test_pashub_to_ara_trigger_request.py b/backend/pashub_fetcher/tests/test_pashub_to_ara_trigger_request.py index b538fa7e..6eec1e14 100644 --- a/backend/pashub_fetcher/tests/test_pashub_to_ara_trigger_request.py +++ b/backend/pashub_fetcher/tests/test_pashub_to_ara_trigger_request.py @@ -9,6 +9,26 @@ def make_request(pashub_link: str) -> PashubToAraTriggerRequest: return PashubToAraTriggerRequest(pashub_link=pashub_link) +def test_pashub_job_id_raises_for_invalid_link() -> None: + # Arrange + request = make_request("https://pashub.net/rcs-dashboard") + + # Act / Assert + with pytest.raises(ValueError): + request.pashub_job_id + + +def test_pashub_job_id_extracts_id_from_bare_job_link() -> None: + # Arrange + request = make_request("https://pashub.net/jobs/job-id-123") + + # Act + result = request.pashub_job_id + + # Assert + assert result == "job-id-123" + + def test_pashub_job_id_extracts_id_from_evidence_view_link() -> None: # Arrange request = make_request("https://pashub.net/jobs/job-id-123/evidence/view")