|
1 | 1 | import unittest |
2 | | -from unittest.mock import patch, MagicMock |
| 2 | +from unittest.mock import patch |
3 | 3 |
|
4 | 4 | from webapp.publisher.cve.cve_helper import CveHelper |
| 5 | +from werkzeug.exceptions import NotFound |
5 | 6 |
|
6 | 7 |
|
7 | | -class HasCvesTest(unittest.TestCase): |
| 8 | +class HasRevisionsWithCvesTest(unittest.TestCase): |
8 | 9 |
|
9 | | - def setUp(self): |
10 | | - self.file_metadata = {"download_url": "https://example.com/file.json"} |
| 10 | + @patch("webapp.publisher.cve.cve_helper.CveHelper._get_cve_file_metadata") |
| 11 | + def test_returns_revision_numbers(self, mock_get_metadata): |
| 12 | + mock_get_metadata.return_value = [ |
| 13 | + {"name": "123.yaml"}, |
| 14 | + {"name": "456.yaml"}, |
| 15 | + {"name": "789.yaml"}, |
| 16 | + ] |
11 | 17 |
|
12 | | - @patch("requests.get") |
13 | | - def test_has_cve_data(self, mock_get): |
14 | | - mock_get.side_effect = [ |
15 | | - MagicMock(status_code=200, json=lambda: self.file_metadata), |
| 18 | + result = CveHelper.get_revisions_with_cves("my-snap") |
| 19 | + self.assertEqual(result, [123, 456, 789]) |
| 20 | + |
| 21 | + @patch("webapp.publisher.cve.cve_helper.CveHelper._get_cve_file_metadata") |
| 22 | + def test_ignores_non_yaml_files(self, mock_get_metadata): |
| 23 | + mock_get_metadata.return_value = [ |
| 24 | + {"name": "README.md"}, |
| 25 | + {"name": "123.yaml"}, |
| 26 | + {"name": "abc.yaml"}, |
| 27 | + {"name": "456.yaml"}, |
| 28 | + {"name": "data.txt"}, |
16 | 29 | ] |
17 | 30 |
|
18 | | - result = CveHelper.has_cve_data("my-snap") |
19 | | - self.assertTrue(result) |
| 31 | + result = CveHelper.get_revisions_with_cves("my-snap") |
| 32 | + self.assertEqual(result, [123, 456]) |
20 | 33 |
|
21 | | - @patch("requests.get") |
22 | | - def test_has_cve_data_not_found(self, mock_get): |
23 | | - mock_get.side_effect = [ |
24 | | - MagicMock(status_code=404, json=lambda: {}), |
| 34 | + @patch("webapp.publisher.cve.cve_helper.CveHelper._get_cve_file_metadata") |
| 35 | + def test_returns_empty_list_if_no_revision_files(self, mock_get_metadata): |
| 36 | + mock_get_metadata.return_value = [ |
| 37 | + {"name": "README.md"}, |
| 38 | + {"name": "notes.txt"}, |
25 | 39 | ] |
26 | 40 |
|
27 | | - result = CveHelper.has_cve_data("my-snap") |
28 | | - self.assertFalse(result) |
| 41 | + result = CveHelper.get_revisions_with_cves("my-snap") |
| 42 | + self.assertEqual(result, []) |
| 43 | + |
| 44 | + @patch("webapp.publisher.cve.cve_helper.CveHelper._get_cve_file_metadata") |
| 45 | + def test_returns_empty_list_on_not_found(self, mock_get_metadata): |
| 46 | + mock_get_metadata.side_effect = NotFound() |
| 47 | + |
| 48 | + result = CveHelper.get_revisions_with_cves("my-snap") |
| 49 | + self.assertEqual(result, []) |
0 commit comments