75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
| import datetime as dt
 | |
| 
 | |
| import pytest
 | |
| import pytz
 | |
| 
 | |
| import stix2
 | |
| 
 | |
| from .constants import VULNERABILITY_ID
 | |
| 
 | |
| EXPECTED = """{
 | |
|     "type": "vulnerability",
 | |
|     "spec_version": "2.1",
 | |
|     "id": "vulnerability--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061",
 | |
|     "created": "2016-05-12T08:17:27.000Z",
 | |
|     "modified": "2016-05-12T08:17:27.000Z",
 | |
|     "name": "CVE-2016-1234",
 | |
|     "external_references": [
 | |
|         {
 | |
|             "source_name": "cve",
 | |
|             "external_id": "CVE-2016-1234"
 | |
|         }
 | |
|     ]
 | |
| }"""
 | |
| 
 | |
| 
 | |
| def test_vulnerability_example():
 | |
|     vulnerability = stix2.v21.Vulnerability(
 | |
|         id=VULNERABILITY_ID,
 | |
|         created="2016-05-12T08:17:27.000Z",
 | |
|         modified="2016-05-12T08:17:27.000Z",
 | |
|         name="CVE-2016-1234",
 | |
|         external_references=[
 | |
|             stix2.ExternalReference(
 | |
|                 source_name='cve',
 | |
|                 external_id="CVE-2016-1234",
 | |
|             ),
 | |
|         ],
 | |
|     )
 | |
| 
 | |
|     assert str(vulnerability) == EXPECTED
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "data", [
 | |
|         EXPECTED,
 | |
|         {
 | |
|             "created": "2016-05-12T08:17:27Z",
 | |
|             "external_references": [
 | |
|                 {
 | |
|                     "external_id": "CVE-2016-1234",
 | |
|                     "source_name": "cve",
 | |
|                 },
 | |
|             ],
 | |
|             "id": VULNERABILITY_ID,
 | |
|             "modified": "2016-05-12T08:17:27Z",
 | |
|             "name": "CVE-2016-1234",
 | |
|             "spec_version": "2.1",
 | |
|             "type": "vulnerability",
 | |
|         },
 | |
|     ],
 | |
| )
 | |
| def test_parse_vulnerability(data):
 | |
|     vuln = stix2.parse(data, version="2.1")
 | |
| 
 | |
|     assert vuln.type == 'vulnerability'
 | |
|     assert vuln.spec_version == '2.1'
 | |
|     assert vuln.id == VULNERABILITY_ID
 | |
|     assert vuln.created == dt.datetime(2016, 5, 12, 8, 17, 27, tzinfo=pytz.utc)
 | |
|     assert vuln.modified == dt.datetime(2016, 5, 12, 8, 17, 27, tzinfo=pytz.utc)
 | |
|     assert vuln.name == "CVE-2016-1234"
 | |
|     assert vuln.external_references[0].external_id == "CVE-2016-1234"
 | |
|     assert vuln.external_references[0].source_name == "cve"
 | |
| 
 | |
| # TODO: Add other examples
 |