import unittest from unittest.mock import MagicMock, patch import requests from dependabro.utils import get_all_module_versions class TestGetAllModuleVersions(unittest.TestCase): @patch("dependabro.utils.requests.get") def test_get_latest_versions_success(self, mock_get): mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = {"tag_name": "v1.2.3"} mock_get.return_value = mock_response modules = ["module1", "module2"] expected_versions = {"module1": "v1.2.3", "module2": "v1.2.3"} result = get_all_module_versions(modules) self.assertEqual(result, expected_versions) @patch("dependabro.utils.requests.get") def test_get_all_module_versions_fetches_latest_versions(self, mock_get): mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = {"tag_name": "v1.0.0"} mock_get.return_value = mock_response modules = ["terraform-infra"] result = get_all_module_versions(modules) self.assertEqual(result, {"terraform-infra": "v1.0.0"}) @patch("dependabro.utils.requests.get") def test_get_all_module_versions_handles_timeout(self, mock_get): mock_get.side_effect = requests.exceptions.Timeout modules = ["terraform-infra"] result = get_all_module_versions(modules) self.assertEqual(result, {"terraform-infra": "unknown"}) @patch("dependabro.utils.requests.get") def test_get_all_module_versions_handles_request_exception(self, mock_get): mock_get.side_effect = requests.exceptions.RequestException modules = ["terraform-infra"] result = get_all_module_versions(modules) self.assertEqual(result, {"terraform-infra": "unknown"}) @patch("dependabro.utils.requests.get") def test_get_all_module_versions_handles_non_200_status(self, mock_get): mock_response = MagicMock() mock_response.status_code = 404 mock_response.json.return_value = {} mock_get.return_value = mock_response modules = ["terraform-infra"] result = get_all_module_versions(modules) self.assertEqual(result, {"terraform-infra": "unknown"}) @patch("dependabro.utils.requests.get") def test_get_all_module_versions_handles_multiple_modules(self, mock_get): mock_response_1 = MagicMock() mock_response_1.status_code = 200 mock_response_1.json.return_value = {"tag_name": "v1.0.0"} mock_response_2 = MagicMock() mock_response_2.status_code = 200 mock_response_2.json.return_value = {"tag_name": "v2.0.0"} mock_get.side_effect = [mock_response_1, mock_response_2] modules = ["terraform-infra1", "terraform-infra2"] result = get_all_module_versions(modules) self.assertEqual( result, {"terraform-infra1": "v1.0.0", "terraform-infra2": "v2.0.0"} ) @patch("dependabro.utils.requests.get") def test_get_latest_versions_empty_modules(self, mock_get): modules = [] expected_versions = {} result = get_all_module_versions(modules) self.assertEqual(result, expected_versions) if __name__ == "__main__": unittest.main()