Files
Aegis/backend/tests/test_jira_service.py
Kitos 73867d3990 test(jira): add jira_service unit tests [FASE-1.2]
Cover disabled client guard, issue search mapping, and sync_aegis_to_jira comment posting with mocks.
2026-05-18 13:33:27 +02:00

65 lines
2.0 KiB
Python

"""Jira service unit tests (FASE-1.2)."""
from datetime import datetime
from unittest.mock import MagicMock, patch
from uuid import uuid4
import pytest
from app.domain.exceptions import InvalidOperationError
from app.models.jira_link import JiraLink, JiraLinkEntityType
from app.services import jira_service
def test_get_jira_client_raises_when_disabled(monkeypatch):
monkeypatch.setattr("app.services.jira_service.settings.JIRA_ENABLED", False)
jira_service._jira_client = None
with pytest.raises(InvalidOperationError, match="not enabled"):
jira_service.get_jira_client()
@patch("app.services.jira_service.get_jira_client")
def test_sync_aegis_to_jira_adds_comment(mock_get_client, db):
mock_jira = MagicMock()
mock_get_client.return_value = mock_jira
link = JiraLink(
entity_type=JiraLinkEntityType.test,
entity_id=uuid4(),
jira_issue_key="SEC-99",
)
jira_service.sync_aegis_to_jira(db, link, {"state": "validated", "result": "pass"})
mock_jira.issue_add_comment.assert_called_once()
args = mock_jira.issue_add_comment.call_args[0]
assert args[0] == "SEC-99"
assert "Aegis Sync Update" in args[1]
assert link.last_synced_at is not None
@patch("app.services.jira_service.get_jira_client")
def test_search_jira_issues_maps_fields(mock_get_client):
mock_jira = MagicMock()
mock_get_client.return_value = mock_jira
mock_jira.jql.return_value = {
"issues": [
{
"key": "TST-1",
"fields": {
"summary": "Test issue",
"status": {"name": "In Progress"},
"assignee": {"displayName": "Alice"},
"priority": {"name": "High"},
},
}
]
}
results = jira_service.search_jira_issues("project = TEST", max_results=5)
assert len(results) == 1
assert results[0]["issue_key"] == "TST-1"
assert results[0]["summary"] == "Test issue"
assert results[0]["status"] == "In Progress"
mock_jira.jql.assert_called_once()