test(jira): add hourly sync job tests [FASE-1.7]
Some checks failed
Aegis CI / lint-and-test (push) Has been cancelled

Verify skip when disabled, per-link sync invocation, and continued batch on single-link failures.
This commit is contained in:
2026-05-18 13:36:26 +02:00
parent 03d7d1cc80
commit 0d4c404f08

View File

@@ -0,0 +1,69 @@
"""Jira sync scheduled job tests (FASE-1.7)."""
from unittest.mock import patch
from uuid import uuid4
import pytest
from app.jobs.jira_sync_job import sync_all_jira_links
from app.models.jira_link import JiraLink, JiraLinkEntityType
from tests.conftest import TestingSessionLocal
@pytest.fixture(autouse=True)
def _job_uses_test_db(monkeypatch):
"""Route the job's SessionLocal to the in-memory SQLite test engine."""
import app.database as database_module
monkeypatch.setattr(database_module, "_SessionLocal", TestingSessionLocal)
monkeypatch.setattr(
"app.jobs.jira_sync_job.SessionLocal",
TestingSessionLocal,
)
def test_sync_all_jira_links_skips_when_disabled(monkeypatch, db):
monkeypatch.setattr("app.jobs.jira_sync_job.settings.JIRA_ENABLED", False)
with patch("app.jobs.jira_sync_job.jira_service.sync_jira_to_aegis") as mock_sync:
sync_all_jira_links()
mock_sync.assert_not_called()
@patch("app.jobs.jira_sync_job.jira_service.sync_jira_to_aegis")
def test_sync_all_jira_links_updates_links(mock_sync, monkeypatch, db, admin_user):
monkeypatch.setattr("app.jobs.jira_sync_job.settings.JIRA_ENABLED", True)
link = JiraLink(
entity_type=JiraLinkEntityType.test,
entity_id=uuid4(),
jira_issue_key="SEC-1",
created_by=admin_user.id,
)
db.add(link)
db.commit()
sync_all_jira_links()
assert mock_sync.call_count == 1
@patch("app.jobs.jira_sync_job.jira_service.sync_jira_to_aegis")
def test_sync_all_jira_links_continues_on_single_failure(mock_sync, monkeypatch, db, admin_user):
monkeypatch.setattr("app.jobs.jira_sync_job.settings.JIRA_ENABLED", True)
for key in ("SEC-A", "SEC-B"):
db.add(
JiraLink(
entity_type=JiraLinkEntityType.test,
entity_id=uuid4(),
jira_issue_key=key,
created_by=admin_user.id,
),
)
db.commit()
mock_sync.side_effect = [Exception("issue deleted"), None]
sync_all_jira_links()
assert mock_sync.call_count == 2