Commit 776ae735 authored by Ondřej Borýsek's avatar Ondřej Borýsek
Browse files

Test report generation inside PwnDoc

parent 34286191
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -37,14 +37,18 @@ def skip_if_no_pwndoc():


class TestFindingParsing:
class TestFindingParsing:


    @test_steps('PwnDoc Templates, Scan2Report, JSON', 'Upload to PwnDoc Audit')
    @test_steps('PwnDoc Templates, Scan2Report, JSON', 'Upload to PwnDoc Audit', 'Download PwnDoc audit report')
    @pytest.mark.parametrize("filepath", find_all_test_files())
    @pytest.mark.parametrize("filepath", find_all_test_files())
    def test_full(self, client, filepath):
    def test_full(self, client, filepath):
        folder_name = self.to_json(client, filepath)
        folder_name = self.to_json(client, filepath)
        yield
        yield

        self.upload_to_pwndoc(folder_name)
        self.upload_to_pwndoc(folder_name)
        yield
        yield
        # todo: check audit is downloadable

        test_filename = os.path.basename(filepath)
        self.download_report(folder_name, test_filename)
        yield


    def to_json(self, client, filepath: str) -> str:
    def to_json(self, client, filepath: str) -> str:
        response = client.post(
        response = client.post(
@@ -80,7 +84,7 @@ class TestFindingParsing:


        return folder_name
        return folder_name


    def upload_to_pwndoc(self, folder_name):
    def upload_to_pwndoc(self, folder_name: str):
        audit_id = pwndoc_api.create_audit()
        audit_id = pwndoc_api.create_audit()
        ps = ProcessingSettings.load_from_folder_name(folder_name)
        ps = ProcessingSettings.load_from_folder_name(folder_name)
        assert ps is not None
        assert ps is not None
@@ -90,3 +94,9 @@ class TestFindingParsing:
        ps.save()
        ps.save()


        assert upload_scan_findings_to_pwndoc(folder_name)
        assert upload_scan_findings_to_pwndoc(folder_name)

    def download_report(self, folder_name: str, test_filename: str):
        ps = ProcessingSettings.load_from_folder_name(folder_name)
        report_filepath = os.path.abspath(os.path.join(TMP_PATH, f'{test_filename}.docx'))
        pwndoc_api.download_report(ps.audit_id, report_filepath)
        assert Path(report_filepath).is_file()