def test_get_year(self):
        # Arrange
        cve_id = 'CVE-2010-0000'
        expected = 2010

        # Act
        actual = utilities.get_year(cve_id)

        # Assert
        self.assertEqual(expected, actual)

        # Arrange
        cve_id = 'CVE-2010-00000'
        expected = 2010

        # Act
        actual = utilities.get_year(cve_id)

        # Assert
        self.assertEqual(expected, actual)

        # Arrange
        cve_id = 'CVE-201-0000'

        # Assert
        self.assertRaises(Exception, utilities.get_year, cve_id)
    def test_get_year(self):
        # Arrange
        cve_id = "CVE-2010-0000"
        expected = 2010

        # Act
        actual = utilities.get_year(cve_id)

        # Assert
        self.assertEqual(expected, actual)

        # Arrange
        cve_id = "CVE-2010-00000"
        expected = 2010

        # Act
        actual = utilities.get_year(cve_id)

        # Assert
        self.assertEqual(expected, actual)

        # Arrange
        cve_id = "CVE-201-0000"

        # Assert
        self.assertRaises(Exception, utilities.get_year, cve_id)
def load(file_):
    nvdxml = utilities.NvdXml()
    session = Session()

    reader = csv.reader(file_)
    next(reader, None)   # Ignoring the header
    for row in reader:
        debug(row)
        cve = Cve(id=row[0], year=utilities.get_year(row[0]), product=row[1])
        nvd_details = nvdxml.get_details(cve.id)

        if nvd_details:
            cve.cvss = Cvss()

            cve.cvss.access_complexity = nvd_details['access-complexity']
            cve.cvss.access_vector = nvd_details['access-vector']
            cve.cvss.authentication = nvd_details['authentication']
            cve.cvss.availability_impact = nvd_details['availability-impact']
            cve.cvss.confidentiality_impact = nvd_details[
                    'confidentiality-impact'
                ]
            cve.cvss.integrity_impact = nvd_details['integrity-impact']
            cve.cvss.score = nvd_details['score']
            cve.cvss.exploitability_subscore = nvd_details[
                    'exploitability-subscore'
                ]
            cve.cvss.impact_subscore = nvd_details[
                    'impact-subscore'
                ]

            cve.bounty = Bounty()

            cve.bounty.amount = float(row[2].replace('$', '').replace(',', ''))

            session.add(cve)
            try:
                session.commit()
            except sqlalchemy.exc.IntegrityError as e:
                error('{} is a duplicate.'.format(cve.id))
                session.rollback()
        else:
            warning('{} was not found in NVD.'.format(cve.id))
def load(file_):
    nvdxml = utilities.NvdXml()
    session = Session()

    reader = csv.reader(file_)
    next(reader, None)  # Ignoring the header
    for row in reader:
        debug(row)
        cve = Cve(id=row[0], year=utilities.get_year(row[0]), product=row[1])
        nvd_details = nvdxml.get_details(cve.id)

        if nvd_details:
            cve.cvss = Cvss()

            cve.cvss.access_complexity = nvd_details['access-complexity']
            cve.cvss.access_vector = nvd_details['access-vector']
            cve.cvss.authentication = nvd_details['authentication']
            cve.cvss.availability_impact = nvd_details['availability-impact']
            cve.cvss.confidentiality_impact = nvd_details[
                'confidentiality-impact']
            cve.cvss.integrity_impact = nvd_details['integrity-impact']
            cve.cvss.score = nvd_details['score']
            cve.cvss.exploitability_subscore = nvd_details[
                'exploitability-subscore']
            cve.cvss.impact_subscore = nvd_details['impact-subscore']

            cve.bounty = Bounty()

            cve.bounty.amount = float(row[2].replace('$', '').replace(',', ''))

            session.add(cve)
            try:
                session.commit()
            except sqlalchemy.exc.IntegrityError as e:
                error('{} is a duplicate.'.format(cve.id))
                session.rollback()
        else:
            warning('{} was not found in NVD.'.format(cve.id))