from vulnix.vulnerability import Vulnerability, Node
import json
import pkg_resources


def load(cve):
    return json.loads(pkg_resources.resource_string(
        'vulnix', 'tests/fixtures/{}.json'.format(cve)))


def test_update(nvd):
    nvd.update()
    assert len(nvd._root['advisory']) == 835
    cve = nvd.by_id('CVE-2010-0748')
    assert cve == Vulnerability.parse(load('CVE-2010-0748'))
    assert cve == nvd.by_product('transmission')[0]


def test_parse_vuln():
    v = Vulnerability.parse(load('CVE-2019-10160'))
    assert v.cve_id == 'CVE-2019-10160'
    assert v.nodes == [
        Node('python', 'python', '3.5'),
        Node('python', 'python', '3.6'),
        Node('python', 'python', '3.7'),
        Node('python', 'python', ['>=3.8.0a4', '<=3.8.0b1']),
    ]