pashub_job_id extracts ID from /evidence/view links 🟩

This commit is contained in:
Daniel Roth 2026-05-14 13:40:28 +00:00
parent 0b358e6de6
commit 5677789919
2 changed files with 26 additions and 2 deletions

View file

@ -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)

View file

@ -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")