-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathreporter_test.py
82 lines (69 loc) · 2.51 KB
/
reporter_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Copyright 2023 Google LLC
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
"""Tests for Reporter."""
import dataclasses
from unittest import mock
from vanir import reporter
from vanir import vulnerability_manager
from absl.testing import absltest
_TEST_SIGN_ID = 'asb-a-test-sign-1234'
_TEST_TARGET_FILE = 'foo/bar/target_file.c'
_TEST_TARGET_FUNC = 'target_func1'
_TEST_SOURCE = 'https://android.googlesource.com/some/test/source'
_TEST_UNPATCHED_FILE = 'foo/bar/unpatched_file.c'
_TEST_UNPATCHED_FUNC = 'unpatched_func1'
_TEST_IS_NON_TARGET_MATCH = True
class ReporterTest(absltest.TestCase):
def setUp(self):
super().setUp()
self._test_report = reporter.Report(
_TEST_SIGN_ID,
_TEST_TARGET_FILE,
_TEST_TARGET_FUNC,
_TEST_SOURCE,
_TEST_UNPATCHED_FILE,
_TEST_UNPATCHED_FUNC,
_TEST_IS_NON_TARGET_MATCH,
)
def test_get_simple_report(self):
expected_simple_report = 'foo/bar/unpatched_file.c::unpatched_func1()'
self.assertEqual(
self._test_report.get_simple_report(), expected_simple_report
)
def test_generate_report_book(self):
reports = []
for i in range(10):
new_sign_id = _TEST_SIGN_ID + str(i)
new_source = _TEST_SOURCE + str(i)
report = dataclasses.replace(
self._test_report,
signature_id=new_sign_id,
signature_source=new_source,
)
reports.append(report)
mock_vul_manager = mock.create_autospec(
vulnerability_manager.VulnerabilityManager, instance=True
)
mock_vul_manager.sign_id_to_osv_id.side_effect = (
lambda sign_id: 'osv-id-%s' % sign_id[-1]
)
mock_vul_manager.osv_id_to_cve_ids.side_effect = (
lambda osv_id: [osv_id.replace('osv', 'cve')]
)
test_report_book = reporter.ReportBook(reports, mock_vul_manager)
expected_unpatched_vuls = ['osv-id-%d' % i for i in range(10)]
self.assertEqual(
test_report_book.unpatched_vulnerabilities, expected_unpatched_vuls
)
expected_unpatched_cves = ['cve-id-%d' % i for i in range(10)]
self.assertEqual(test_report_book.unpatched_cves, expected_unpatched_cves)
embedded_reports = []
for osv_id in test_report_book.unpatched_vulnerabilities:
rgroup = test_report_book.get_report_group(osv_id)
embedded_reports += rgroup.reports
self.assertCountEqual(embedded_reports, reports)
if __name__ == '__main__':
absltest.main()