|
9 | 9 |
|
10 | 10 |
|
11 | 11 | import os
|
12 |
| -from collections import OrderedDict |
13 |
| -from unittest import TestCase |
14 | 12 |
|
15 |
| -from packageurl import PackageURL |
16 |
| - |
17 |
| -from vulnerabilities.importer import AdvisoryData |
18 |
| -from vulnerabilities.importer import Reference |
19 | 13 | from vulnerabilities.importers.retiredotnet import RetireDotnetImporter
|
20 |
| -from vulnerabilities.utils import AffectedPackage |
| 14 | +from vulnerabilities.tests import util_tests |
21 | 15 |
|
22 | 16 | BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
23 | 17 |
|
24 | 18 |
|
25 |
| -class TestRetireDotnetImporter(TestCase): |
26 |
| - @classmethod |
27 |
| - def setUpClass(cls): |
28 |
| - data_source_cfg = { |
29 |
| - "repository_url": "https://test.net", |
30 |
| - } |
31 |
| - cls.data_src = RetireDotnetImporter(1, config=data_source_cfg) |
32 |
| - |
33 |
| - def test_vuln_id_from_desc(self): |
34 |
| - |
35 |
| - gibberish = "xyzabcpqr123" * 50 + "\n" * 100 |
36 |
| - res = self.data_src.vuln_id_from_desc(gibberish) |
37 |
| - assert res is None |
38 |
| - |
39 |
| - desc = "abcdef CVE-2002-1968 pqrstuvwxyz:_|-|" |
40 |
| - res = self.data_src.vuln_id_from_desc(desc) |
41 |
| - assert res == "CVE-2002-1968" |
42 |
| - |
43 |
| - def test_process_file(self): |
| 19 | +def test_vuln_id_from_desc(): |
| 20 | + importer = RetireDotnetImporter() |
| 21 | + gibberish = "xyzabcpqr123" * 50 + "\n" * 100 |
| 22 | + res = importer.vuln_id_from_desc(gibberish) |
| 23 | + assert res is None |
44 | 24 |
|
45 |
| - path = os.path.join(BASE_DIR, "test_data/retiredotnet/test_file.json") |
46 |
| - expected_data = Advisory( |
47 |
| - summary="Microsoft Security Advisory CVE-2019-0982: ASP.NET Core Denial of Service Vulnerability", |
48 |
| - vulnerability_id="CVE-2019-0982", |
49 |
| - affected_packages=[ |
50 |
| - AffectedPackage( |
51 |
| - vulnerable_package=PackageURL( |
52 |
| - type="nuget", |
53 |
| - namespace=None, |
54 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
55 |
| - version="1.0.0", |
56 |
| - ), |
57 |
| - patched_package=PackageURL( |
58 |
| - type="nuget", |
59 |
| - namespace=None, |
60 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
61 |
| - version="1.0.11", |
62 |
| - ), |
63 |
| - ), |
64 |
| - AffectedPackage( |
65 |
| - vulnerable_package=PackageURL( |
66 |
| - type="nuget", |
67 |
| - namespace=None, |
68 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
69 |
| - version="1.0.1", |
70 |
| - ), |
71 |
| - patched_package=PackageURL( |
72 |
| - type="nuget", |
73 |
| - namespace=None, |
74 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
75 |
| - version="1.0.11", |
76 |
| - ), |
77 |
| - ), |
78 |
| - AffectedPackage( |
79 |
| - vulnerable_package=PackageURL( |
80 |
| - type="nuget", |
81 |
| - namespace=None, |
82 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
83 |
| - version="1.0.2", |
84 |
| - ), |
85 |
| - patched_package=PackageURL( |
86 |
| - type="nuget", |
87 |
| - namespace=None, |
88 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
89 |
| - version="1.0.11", |
90 |
| - ), |
91 |
| - ), |
92 |
| - AffectedPackage( |
93 |
| - vulnerable_package=PackageURL( |
94 |
| - type="nuget", |
95 |
| - namespace=None, |
96 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
97 |
| - version="1.0.3", |
98 |
| - ), |
99 |
| - patched_package=PackageURL( |
100 |
| - type="nuget", |
101 |
| - namespace=None, |
102 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
103 |
| - version="1.0.11", |
104 |
| - ), |
105 |
| - ), |
106 |
| - AffectedPackage( |
107 |
| - vulnerable_package=PackageURL( |
108 |
| - type="nuget", |
109 |
| - namespace=None, |
110 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
111 |
| - version="1.0.4", |
112 |
| - ), |
113 |
| - patched_package=PackageURL( |
114 |
| - type="nuget", |
115 |
| - namespace=None, |
116 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
117 |
| - version="1.0.11", |
118 |
| - ), |
119 |
| - ), |
120 |
| - AffectedPackage( |
121 |
| - vulnerable_package=PackageURL( |
122 |
| - type="nuget", |
123 |
| - namespace=None, |
124 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
125 |
| - version="1.1.0", |
126 |
| - ), |
127 |
| - patched_package=PackageURL( |
128 |
| - type="nuget", |
129 |
| - namespace=None, |
130 |
| - name="Microsoft.AspNetCore.SignalR.Protocols.MessagePack", |
131 |
| - version="1.1.5", |
132 |
| - ), |
133 |
| - ), |
134 |
| - ], |
135 |
| - references=[ |
136 |
| - Reference( |
137 |
| - reference_id="", |
138 |
| - url="https://github.com/aspnet/Announcements/issues/359", |
139 |
| - severities=[], |
140 |
| - ) |
141 |
| - ], |
142 |
| - ) |
| 25 | + desc = "abcdef CVE-2002-1968 pqrstuvwxyz:_|-|" |
| 26 | + res = importer.vuln_id_from_desc(desc) |
| 27 | + assert res == "CVE-2002-1968" |
143 | 28 |
|
144 |
| - found_data = self.data_src.process_file(path) |
145 | 29 |
|
146 |
| - assert expected_data == found_data |
| 30 | +def test_process_file(): |
| 31 | + path = os.path.join(BASE_DIR, "test_data/retiredotnet/test_file.json") |
| 32 | + importer = RetireDotnetImporter() |
| 33 | + expected_file = os.path.join(BASE_DIR, "test_data/retiredotnet/expected_file.json") |
| 34 | + advisory = importer.process_file(path) |
| 35 | + util_tests.check_results_against_json(advisory.to_dict(), expected_file) |
0 commit comments