コード例 #1
0
def test_update_cpe(monkeypatch):
    with monkeypatch.context() as monkey:
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_update.db')
        monkey.setattr(sr, 'glob', lambda *_, **__: [PATH_TO_TEST + UPDATE_CPE_XML])
        sr.update_cpe('')
        actual_cpe_update = sorted(sr.DATABASE.fetch_multiple(query=QUERIES['select_all'].format('cpe_table')))
        assert sorted(EXPECTED_UPDATED_CPE_TABLE) == actual_cpe_update
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_output.db')
        with pytest.raises(CveLookupException) as exception:
            sr.update_cpe('')
            assert 'CPE table does not exist' in exception.message
コード例 #2
0
def test_import_cpe(monkeypatch):
    with monkeypatch.context() as monkey:
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_import.db')
        monkey.setattr(sr, 'glob', lambda *_, **__: [PATH_TO_TEST + EXTRACT_CPE_XML])
        sr.import_cpe('')
        actual_cpe_output = sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('cpe_table'))
        assert sorted(CPE_TABLE) == sorted(actual_cpe_output)
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_output.db')
        sr.DATABASE.execute_query(QUERIES['create_cpe_table'].format('cpe_table'))
        with pytest.raises(CveLookupException) as exception:
            sr.import_cpe('')
            assert 'CPE table does already exist' in exception.message
コード例 #3
0
def test_update_cve_repository(monkeypatch):
    with monkeypatch.context() as monkey:
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_update.db')
        monkey.setattr(sr, 'glob', lambda *_, **__: [PATH_TO_TEST + UPDATE_CVE_JSON])
        sr.update_cve_repository(cve_extract_path='')
        actual_cve_update = list(sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('cve_table')))
        actual_summary_update = list(sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('summary_table')))
        assert sorted(actual_cve_update) == sorted(EXPECTED_UPDATED_CVE_TABLE)
        assert sorted(actual_summary_update) == sorted(EXPECTED_UPDATED_SUMMARY_TABLE)
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_output.db')

        with pytest.raises(CveLookupException) as exception:
            sr.update_cve_repository('.')
            assert 'CVE tables do not exist!' in exception.message
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_update.db')
コード例 #4
0
def test_init_cve_feeds_table():
    sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_import.db')
    expected = [
        ('CVE-2012-0001', 2012,
         'cpe:2.3:a:1000guess:1000_guess:-:*:*:*:*:*:*:*', 'N/A', 'N/A', 'a',
         '1000guess', '1000_guess', 'N/A', 'ANY', 'ANY', 'ANY', 'ANY', 'ANY',
         'ANY', 'ANY', '', '', '', ''),
        ('CVE-2012-0001', 2012, 'cpe:2.3:a:1024cms:1024_cms:0.7:*:*:*:*:*:*:*',
         'N/A', 'N/A', 'a', '1024cms', '1024_cms', '0\\.7', 'ANY', 'ANY',
         'ANY', 'ANY', 'ANY', 'ANY', 'ANY', '', '', '', ''),
        ('CVE-2012-0001', 2012,
         'cpe:2.3:a:1024cms:1024_cms:1.2.5:*:*:*:*:*:*:*', 'N/A', 'N/A', 'a',
         '1024cms', '1024_cms', '1\\.2\\.5', 'ANY', 'ANY', 'ANY', 'ANY', 'ANY',
         'ANY', 'ANY', '', '', '', ''),
        ('CVE-2012-0001', 2012,
         'cpe:2.3:a:\\$0.99_kindle_bo\\:oks_project:\\$0.99_kindle_books:6:*:*:*:*:android:*:*',
         'N/A', 'N/A', 'a', '\\$0\\.99_kindle_bo\\:oks_project',
         '\\$0\\.99_kindle_books', '6', 'ANY', 'ANY', 'ANY', 'ANY', 'android',
         'ANY', 'ANY', '', '', '', ''),
        ('CVE-2012-0002', 2012,
         'cpe:2.3:a:1024cms:1024_cms:1.3.1:*:*:*:*:*:*:*', '5.3', 'N/A', 'a',
         '1024cms', '1024_cms', '1\\.3\\.1', 'ANY', 'ANY', 'ANY', 'ANY', 'ANY',
         'ANY', 'ANY', '', '', '', '')
    ]
    sr.init_cve_feeds_table(CVE_LIST, 'test_cve')
    assert sr.DATABASE.fetch_one(
        QUERIES['exist'].format('test_cve'))[0] == 'test_cve'
    db_cve = sorted(
        sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('test_cve')))
    assert len(db_cve) == 5
    assert db_cve == expected
コード例 #5
0
def test_init_summaries_table():
    sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_import.db')
    sr.init_cve_summaries_table(EXPECTED_GET_CVE_SUMMARY_UPDATE_CONTENT, 'test_summary')
    assert sr.DATABASE.fetch_one(QUERIES['exist'].format('test_summary'))[0] == 'test_summary'
    db_summary = list(sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('test_summary')))
    db_summary.sort()
    EXPECTED_SUM_OUTPUT.sort()
    assert db_summary == EXPECTED_SUM_OUTPUT
コード例 #6
0
def test_import_cve(monkeypatch):
    with monkeypatch.context() as monkey:
        sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_import.db')
        monkey.setattr(sr, 'glob', lambda *_, **__: [PATH_TO_TEST + EXTRACT_CVE_JSON])
        sr.import_cve(cve_extract_path='', years=YEARS)
        actual_cve_output = list(sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('cve_table')))
        actual_summary_output = list(sr.DATABASE.fetch_multiple(QUERIES['select_all'].format('summary_table')))
        assert sorted(actual_cve_output) == sorted(EXPECTED_CVE_OUTPUT)
        assert sorted(actual_summary_output) == sorted(EXPECTED_SUM_OUTPUT)
コード例 #7
0
def test_get_years_from_database():
    sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_update.db')
    assert sr.get_years_from_database() == [2018]
コード例 #8
0
def test_create():
    sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_import.db')
    sr.create(query='test_create', table_name='test')
    assert sr.DATABASE.fetch_one(query=QUERIES['exist'].format('test'))[0] == 'test'
コード例 #9
0
def test_extract_relevant_feeds():
    sr.DATABASE = sr.DatabaseInterface(PATH_TO_TEST + 'test_update.db')
    assert [('CVE-2018-0002', 2018), ('CVE-2018-0003', 2018)] == sorted(sr.extract_relevant_feeds(from_table='new', where_table='outdated'))