test(backend): add comprehensive tests for OAuth and agent endpoints
- Added tests for OAuth provider admin and consent endpoints covering edge cases. - Extended agent-related tests to handle incorrect project associations and lifecycle state transitions. - Introduced tests for sprint status transitions and validation checks. - Improved multiline formatting consistency across all test functions.
This commit is contained in:
@@ -107,7 +107,11 @@ class TestIssueModel:
|
||||
|
||||
def test_issue_timestamps(self, db_session):
|
||||
"""Test that timestamps are automatically set."""
|
||||
project = Project(id=uuid.uuid4(), name="Timestamp Issue Project", slug="timestamp-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(),
|
||||
name="Timestamp Issue Project",
|
||||
slug="timestamp-issue-project",
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -124,7 +128,9 @@ class TestIssueModel:
|
||||
|
||||
def test_issue_string_representation(self, db_session):
|
||||
"""Test the string representation of an issue."""
|
||||
project = Project(id=uuid.uuid4(), name="Repr Issue Project", slug="repr-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Repr Issue Project", slug="repr-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -147,7 +153,9 @@ class TestIssueStatus:
|
||||
|
||||
def test_all_issue_statuses(self, db_session):
|
||||
"""Test that all issue statuses can be stored."""
|
||||
project = Project(id=uuid.uuid4(), name="Status Issue Project", slug="status-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Status Issue Project", slug="status-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -170,7 +178,11 @@ class TestIssuePriority:
|
||||
|
||||
def test_all_issue_priorities(self, db_session):
|
||||
"""Test that all issue priorities can be stored."""
|
||||
project = Project(id=uuid.uuid4(), name="Priority Issue Project", slug="priority-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(),
|
||||
name="Priority Issue Project",
|
||||
slug="priority-issue-project",
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -193,7 +205,9 @@ class TestIssueSyncStatus:
|
||||
|
||||
def test_all_sync_statuses(self, db_session):
|
||||
"""Test that all sync statuses can be stored."""
|
||||
project = Project(id=uuid.uuid4(), name="Sync Issue Project", slug="sync-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Sync Issue Project", slug="sync-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -218,7 +232,9 @@ class TestIssueLabels:
|
||||
|
||||
def test_store_labels(self, db_session):
|
||||
"""Test storing labels list."""
|
||||
project = Project(id=uuid.uuid4(), name="Labels Issue Project", slug="labels-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Labels Issue Project", slug="labels-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -239,7 +255,9 @@ class TestIssueLabels:
|
||||
|
||||
def test_update_labels(self, db_session):
|
||||
"""Test updating labels."""
|
||||
project = Project(id=uuid.uuid4(), name="Update Labels Project", slug="update-labels-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Update Labels Project", slug="update-labels-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -255,7 +273,9 @@ class TestIssueLabels:
|
||||
issue.labels = ["updated", "new-label"]
|
||||
db_session.commit()
|
||||
|
||||
retrieved = db_session.query(Issue).filter_by(title="Update Labels Issue").first()
|
||||
retrieved = (
|
||||
db_session.query(Issue).filter_by(title="Update Labels Issue").first()
|
||||
)
|
||||
assert "initial" not in retrieved.labels
|
||||
assert "updated" in retrieved.labels
|
||||
|
||||
@@ -265,7 +285,9 @@ class TestIssueAssignment:
|
||||
|
||||
def test_assign_to_agent(self, db_session):
|
||||
"""Test assigning an issue to an agent."""
|
||||
project = Project(id=uuid.uuid4(), name="Agent Assign Project", slug="agent-assign-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Agent Assign Project", slug="agent-assign-project"
|
||||
)
|
||||
agent_type = AgentType(
|
||||
id=uuid.uuid4(),
|
||||
name="Test Agent Type",
|
||||
@@ -295,13 +317,17 @@ class TestIssueAssignment:
|
||||
db_session.add(issue)
|
||||
db_session.commit()
|
||||
|
||||
retrieved = db_session.query(Issue).filter_by(title="Agent Assignment Issue").first()
|
||||
retrieved = (
|
||||
db_session.query(Issue).filter_by(title="Agent Assignment Issue").first()
|
||||
)
|
||||
assert retrieved.assigned_agent_id == agent_instance.id
|
||||
assert retrieved.human_assignee is None
|
||||
|
||||
def test_assign_to_human(self, db_session):
|
||||
"""Test assigning an issue to a human."""
|
||||
project = Project(id=uuid.uuid4(), name="Human Assign Project", slug="human-assign-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Human Assign Project", slug="human-assign-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -314,7 +340,9 @@ class TestIssueAssignment:
|
||||
db_session.add(issue)
|
||||
db_session.commit()
|
||||
|
||||
retrieved = db_session.query(Issue).filter_by(title="Human Assignment Issue").first()
|
||||
retrieved = (
|
||||
db_session.query(Issue).filter_by(title="Human Assignment Issue").first()
|
||||
)
|
||||
assert retrieved.human_assignee == "developer@example.com"
|
||||
assert retrieved.assigned_agent_id is None
|
||||
|
||||
@@ -324,7 +352,9 @@ class TestIssueSprintAssociation:
|
||||
|
||||
def test_assign_issue_to_sprint(self, db_session):
|
||||
"""Test assigning an issue to a sprint."""
|
||||
project = Project(id=uuid.uuid4(), name="Sprint Assign Project", slug="sprint-assign-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Sprint Assign Project", slug="sprint-assign-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -381,7 +411,9 @@ class TestIssueExternalTracker:
|
||||
db_session.add(issue)
|
||||
db_session.commit()
|
||||
|
||||
retrieved = db_session.query(Issue).filter_by(title="Gitea Synced Issue").first()
|
||||
retrieved = (
|
||||
db_session.query(Issue).filter_by(title="Gitea Synced Issue").first()
|
||||
)
|
||||
assert retrieved.external_tracker_type == "gitea"
|
||||
assert retrieved.external_issue_id == "abc123xyz"
|
||||
assert retrieved.external_issue_number == 42
|
||||
@@ -405,7 +437,9 @@ class TestIssueExternalTracker:
|
||||
db_session.add(issue)
|
||||
db_session.commit()
|
||||
|
||||
retrieved = db_session.query(Issue).filter_by(title="GitHub Synced Issue").first()
|
||||
retrieved = (
|
||||
db_session.query(Issue).filter_by(title="GitHub Synced Issue").first()
|
||||
)
|
||||
assert retrieved.external_tracker_type == "github"
|
||||
assert retrieved.external_issue_number == 100
|
||||
|
||||
@@ -415,7 +449,9 @@ class TestIssueLifecycle:
|
||||
|
||||
def test_close_issue(self, db_session):
|
||||
"""Test closing an issue."""
|
||||
project = Project(id=uuid.uuid4(), name="Close Issue Project", slug="close-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Close Issue Project", slug="close-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
@@ -440,7 +476,9 @@ class TestIssueLifecycle:
|
||||
|
||||
def test_reopen_issue(self, db_session):
|
||||
"""Test reopening a closed issue."""
|
||||
project = Project(id=uuid.uuid4(), name="Reopen Issue Project", slug="reopen-issue-project")
|
||||
project = Project(
|
||||
id=uuid.uuid4(), name="Reopen Issue Project", slug="reopen-issue-project"
|
||||
)
|
||||
db_session.add(project)
|
||||
db_session.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user