Пример #1
0
def test_create_scan_report():
    response = create_scan_report(scan_id=1000005,
                                  report_type='PDF',
                                  results_per_vulnerability_maximum=500,
                                  display_categories_all=False,
                                  display_categories_ids=list(range(30, 62)))
    assert response["IsSuccesfull"] is True
    assert response["ID"] > 0
Пример #2
0
def generate_report(project_name, scan_id, result_state_list, report_type,
                    reports_folder):
    """

    Args:
        project_name (str):
        scan_id (int):
        result_state_list (list of str):   ["To Verify", "Not Exploitable", "Confirmed", "Urgent",
                                            "Proposed Not Exploitable"]
        report_type (str): ('XML', 'PDF')
        reports_folder (str):

    Returns:

    """
    scan_api = ScansAPI()

    if not exists(normpath(reports_folder)):
        print("The folder to store the Checkmarx scan reports does not exist")
        return

    if not scan_id:
        print(
            "No scan found for this project, team full name: {}, project name: {}"
            .format(team, project))
        return

    # register scan report
    report = create_scan_report(
        scan_id=scan_id,
        report_type=report_type,
        results_per_vulnerability_maximum=500,
        results_state_all=False,
        results_state_ids=get_result_state_id_list(result_state_list))
    report_id = report["ID"]

    # get report status by id
    while not scan_api.is_report_generation_finished(report_id):
        time.sleep(10)

    # get report by id
    report_content = scan_api.get_report_by_id(report_id)

    # write report content into a file
    time_stamp = datetime.now().strftime('_%Y_%m_%d_%H_%M_%S')
    name = project_name + time_stamp + "." + report_type
    file_name = normpath(join(reports_folder, name))

    with open(str(file_name), "wb") as f_out:
        f_out.write(report_content)