diff --git a/surfsense_backend/app/connectors/test_jira_connector.py b/surfsense_backend/app/connectors/test_jira_connector.py deleted file mode 100644 index a4b33b0..0000000 --- a/surfsense_backend/app/connectors/test_jira_connector.py +++ /dev/null @@ -1,226 +0,0 @@ -import unittest -from unittest.mock import Mock, patch - -# Import the JiraConnector -from .jira_connector import JiraConnector - - -class TestJiraConnector(unittest.TestCase): - def setUp(self): - """Set up test fixtures.""" - self.base_url = "https://test.atlassian.net" - self.email = "test@example.com" - self.api_token = "test_api_token" - self.connector = JiraConnector( - base_url=self.base_url, email=self.email, api_token=self.api_token - ) - - def test_init(self): - """Test JiraConnector initialization.""" - self.assertEqual(self.connector.base_url, self.base_url) - self.assertEqual(self.connector.email, self.email) - self.assertEqual(self.connector.api_token, self.api_token) - self.assertEqual(self.connector.api_version, "3") - - def test_init_with_trailing_slash(self): - """Test JiraConnector initialization with trailing slash in URL.""" - connector = JiraConnector( - base_url="https://test.atlassian.net/", - email=self.email, - api_token=self.api_token, - ) - self.assertEqual(connector.base_url, "https://test.atlassian.net") - - def test_set_credentials(self): - """Test setting credentials.""" - new_url = "https://newtest.atlassian.net/" - new_email = "new@example.com" - new_token = "new_api_token" - - self.connector.set_credentials(new_url, new_email, new_token) - - self.assertEqual(self.connector.base_url, "https://newtest.atlassian.net") - self.assertEqual(self.connector.email, new_email) - self.assertEqual(self.connector.api_token, new_token) - - def test_get_headers(self): - """Test header generation.""" - headers = self.connector.get_headers() - - self.assertIn("Content-Type", headers) - self.assertIn("Authorization", headers) - self.assertIn("Accept", headers) - self.assertEqual(headers["Content-Type"], "application/json") - self.assertEqual(headers["Accept"], "application/json") - self.assertTrue(headers["Authorization"].startswith("Basic ")) - - def test_get_headers_no_credentials(self): - """Test header generation without credentials.""" - connector = JiraConnector() - - with self.assertRaises(ValueError) as context: - connector.get_headers() - - self.assertIn("Jira credentials not initialized", str(context.exception)) - - @patch("requests.get") - def test_make_api_request_success(self, mock_get): - """Test successful API request.""" - mock_response = Mock() - mock_response.status_code = 200 - mock_response.json.return_value = {"test": "data"} - mock_get.return_value = mock_response - - result = self.connector.make_api_request("test/endpoint") - - self.assertEqual(result, {"test": "data"}) - mock_get.assert_called_once() - - @patch("requests.get") - def test_make_api_request_failure(self, mock_get): - """Test failed API request.""" - mock_response = Mock() - mock_response.status_code = 401 - mock_response.text = "Unauthorized" - mock_get.return_value = mock_response - - with self.assertRaises(Exception) as context: - self.connector.make_api_request("test/endpoint") - - self.assertIn("API request failed with status code 401", str(context.exception)) - - @patch.object(JiraConnector, "make_api_request") - def test_get_all_projects(self, mock_api_request): - """Test getting all projects.""" - mock_api_request.return_value = { - "values": [ - {"id": "1", "key": "TEST", "name": "Test Project"}, - {"id": "2", "key": "DEMO", "name": "Demo Project"}, - ] - } - - projects = self.connector.get_all_projects() - - self.assertEqual(len(projects), 2) - self.assertEqual(projects[0]["key"], "TEST") - self.assertEqual(projects[1]["key"], "DEMO") - mock_api_request.assert_called_once_with("project") - - @patch.object(JiraConnector, "make_api_request") - def test_get_all_issues(self, mock_api_request): - """Test getting all issues.""" - mock_api_request.return_value = { - "issues": [ - { - "id": "1", - "key": "TEST-1", - "fields": { - "summary": "Test Issue", - "description": "Test Description", - "status": {"name": "Open"}, - "priority": {"name": "High"}, - "issuetype": {"name": "Bug"}, - "project": {"key": "TEST"}, - "created": "2023-01-01T10:00:00.000+0000", - "updated": "2023-01-01T12:00:00.000+0000", - }, - } - ], - "total": 1, - } - - issues = self.connector.get_all_issues() - - self.assertEqual(len(issues), 1) - self.assertEqual(issues[0]["key"], "TEST-1") - self.assertEqual(issues[0]["fields"]["summary"], "Test Issue") - - def test_format_issue(self): - """Test issue formatting.""" - raw_issue = { - "id": "1", - "key": "TEST-1", - "fields": { - "summary": "Test Issue", - "description": "Test Description", - "status": {"name": "Open", "statusCategory": {"name": "To Do"}}, - "priority": {"name": "High"}, - "issuetype": {"name": "Bug"}, - "project": {"key": "TEST"}, - "created": "2023-01-01T10:00:00.000+0000", - "updated": "2023-01-01T12:00:00.000+0000", - "reporter": { - "accountId": "123", - "displayName": "John Doe", - "emailAddress": "john@example.com", - }, - "assignee": { - "accountId": "456", - "displayName": "Jane Smith", - "emailAddress": "jane@example.com", - }, - }, - } - - formatted = self.connector.format_issue(raw_issue) - - self.assertEqual(formatted["id"], "1") - self.assertEqual(formatted["key"], "TEST-1") - self.assertEqual(formatted["title"], "Test Issue") - self.assertEqual(formatted["status"], "Open") - self.assertEqual(formatted["priority"], "High") - self.assertEqual(formatted["issue_type"], "Bug") - self.assertEqual(formatted["project"], "TEST") - self.assertEqual(formatted["reporter"]["display_name"], "John Doe") - self.assertEqual(formatted["assignee"]["display_name"], "Jane Smith") - - def test_format_date(self): - """Test date formatting.""" - iso_date = "2023-01-01T10:30:00.000+0000" - formatted_date = JiraConnector.format_date(iso_date) - - self.assertEqual(formatted_date, "2023-01-01 10:30:00") - - def test_format_date_invalid(self): - """Test date formatting with invalid input.""" - formatted_date = JiraConnector.format_date("invalid-date") - self.assertEqual(formatted_date, "invalid-date") - - formatted_date = JiraConnector.format_date("") - self.assertEqual(formatted_date, "Unknown date") - - formatted_date = JiraConnector.format_date(None) - self.assertEqual(formatted_date, "Unknown date") - - def test_format_issue_to_markdown(self): - """Test issue to markdown conversion.""" - formatted_issue = { - "key": "TEST-1", - "title": "Test Issue", - "status": "Open", - "priority": "High", - "issue_type": "Bug", - "project": "TEST", - "assignee": {"display_name": "Jane Smith"}, - "reporter": {"display_name": "John Doe"}, - "created_at": "2023-01-01T10:00:00.000+0000", - "updated_at": "2023-01-01T12:00:00.000+0000", - "description": "Test Description", - "comments": [], - } - - markdown = self.connector.format_issue_to_markdown(formatted_issue) - - self.assertIn("# TEST-1: Test Issue", markdown) - self.assertIn("**Status:** Open", markdown) - self.assertIn("**Priority:** High", markdown) - self.assertIn("**Type:** Bug", markdown) - self.assertIn("**Project:** TEST", markdown) - self.assertIn("**Assignee:** Jane Smith", markdown) - self.assertIn("**Reporter:** John Doe", markdown) - self.assertIn("## Description", markdown) - self.assertIn("Test Description", markdown) - - -if __name__ == "__main__": - unittest.main()