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
 |