def test_charts_generation_on_zero_result_report(): report = gen_report( generate("host", 0), generate("oid", 0), name="http_accept_test", ) test_chart_keyword(report, 1)
def test_grouping_nvt_oid_per_type(): scan_results = gen_report(hosts, oids, with_optional=True) data = {"report": {"report": scan_results}} report = transform(data) results = report.results[0]["results"] # so far refs are hardcoded to ten assert len(results[0]["nvt_refs_ref"]["CVE"]) == 10
def test_charts_generation_on_zero_severity_report(): report = gen_report( generate("host", 10), generate("oid", 10, 0), name="http_accept_test", ) test_chart_keyword(report, 3)
def test_report_contains_equipment(): client = APIClient() url = reverse('transform') report = { 'report': { 'report': gen_report(generate('host', 10), generate('oid', 5)) } } response = client.post(url, data=report, format='xml') assert response.status_code == 200 result = cache.get(response.data) assert result['results'][0]['equipment']['os'] == "rusty rust rust" assert result['results'][0]['equipment']['ports'] is not None
def test_report_contains_equipment(): client = APIClient() url = reverse("transform") report = { "report": { "report": gen_report(generate("host", 10), generate("oid", 5)) } } response = client.post(url, data=report, format="xml") assert response.status_code == 200 result = cache.get(response.data) assert result["results"][0]["equipment"]["os"] == "rusty rust rust" assert result["results"][0]["equipment"]["ports"] is not None
def test_report_contains_charts(): client = APIClient() url = reverse('transform') report = { 'report': { 'report': gen_report(generate('host', 10), generate('oid', 5)) } } response = client.post(url, data=report, format='xml') assert response.status_code == 200 result = cache.get(response.data) assert result['overview'] is not None assert result['overview']['hosts'] is not None assert result['overview']['nvts'] is not None
def test_report_contains_charts(): client = APIClient() url = reverse("transform") report = { "report": { "report": gen_report(generate("host", 10), generate("oid", 5)) } } response = client.post(url, data=report, format="xml") assert response.status_code == 200 result = cache.get(response.data) assert result["overview"] is not None assert result["overview"]["hosts"] is not None assert result["overview"]["nvts"] is not None
def test_http_accept(http_accept): url = reverse('transform') report = { 'report': { 'report': gen_report( generate('host', 1), generate('oid', 1), name='http_accept_test', ) } } client = APIClient() response = client.post(url, data=report, format='xml') assert response.status_code == 200 key = response.data report_url = reverse('report', kwargs={'name': key}) html_report = client.get(report_url, HTTP_ACCEPT=http_accept) assert html_report.status_code == 200 return html_report
def test_http_accept( http_accept, report=None, ): if not report: report = gen_report( generate("host", 1), generate("oid", 1), name="http_accept_test", ) url = reverse("transform") report = {"report": {"report": report}} client = APIClient() response = client.post(url, data=report, format="xml") assert response.status_code == 200 key = response.data report_url = reverse("report", kwargs={"name": key}) html_report = client.get(report_url, HTTP_ACCEPT=http_accept) assert html_report.status_code == 200 return html_report
def test_remove_general_from_equipment_port_list(): scan_results = gen_report(hosts, oids, port="general/tcp") data = {"report": {"report": scan_results}} report = transform(data) assert report.results[0]["equipment"]["ports"] == []
def test_should_contain_non_general_ports(): scan_results = gen_report(hosts, oids, port="80/tcp") data = {"report": {"report": scan_results}} report = transform(data) assert report.results[0]["equipment"]["ports"] == {"80/tcp"}
def test_remove_general_from_equipment_port_list(): scan_results = gen_report(hosts, oids, port="general/tcp") data = {"report": {"report": scan_results}} report = transform(data) assert report.results[0]["equipment"]["ports"] == [] def test_grouping_nvt_oid_per_type(): scan_results = gen_report(hosts, oids, with_optional=True) data = {"report": {"report": scan_results}} report = transform(data) results = report.results[0]["results"] # so far refs are hardcoded to ten assert len(results[0]["nvt_refs_ref"]["CVE"]) == 10 @pytest.mark.parametrize( "expected", [ (2, gen_report(hosts, oids, with_optional=True)), (2, gen_report(hosts, oids, with_optional=False)), (0, gen_report([], [], with_optional=False)), (0, gen_report(None, [], with_optional=False)), ], ) def test_report_generation_per_host(expected): amount_scans, scan_results = expected data = {"report": {"report": scan_results}} report = transform(data) assert len(report.results or []) == amount_scans
def test_generate_format_editor_html_report(): def upload(key, data): cache_url = reverse('store_cache') to_send = {"key": key, "value": data} response = APIClient().post(cache_url, data=to_send, format='json') assert response.status_code == 200 def upload_image(key, name, content): cache_url = reverse('store_cache') to_send = { "key": key, "value": { "name": name, "content": content, }, "append": True, } response = APIClient().post(cache_url + '?append_image=true', data=to_send, format='json') assert response.status_code == 200 images = [ as_datalink("p1".encode(), "png"), as_datalink("p2".encode(), "jpg"), ] client = APIClient() url = reverse('transform') report = { 'report': { 'report': gen_report( generate('host', 10), generate('oid', 5), name='report_format_editor_test', ) } } response = client.post(url, data=report, format='xml') assert response.status_code == 200 key = response.data report_url = reverse('report', kwargs={'name': key}) html_template = """ <html> <head> <style>{{ css }}</style> </head> <body> <p>{{ name }}</p> <img src="{{ images.0 }}"/> <img src="{{ images.1 }}"/> </body> </html> """ html_css = "body { background-color: #000; }" for i, content in enumerate(images): upload_image("{}images".format(key), str(i), content) upload("{}html_template".format(key), html_template) upload("{}html_css".format(key), html_css) # upload(images) html_report = client.get(report_url, HTTP_ACCEPT='text/html+report_format_editor') assert html_report.status_code == 200 report = str(html_report.getvalue()) assert 'report_format_editor_test' in report assert 'background-color: #000' in report for content in images: assert "<img src=\"{}\"/>".format(content) in report
def test_generate_format_editor_html_report(): def upload(key, data): cache_url = reverse("store_cache") to_send = {"key": key, "value": data} response = APIClient().post(cache_url, data=to_send, format="json") assert response.status_code == 200 def upload_image(key, name, content): cache_url = reverse("store_cache") to_send = { "key": key, "value": { "name": name, "content": content, }, "append": True, } response = APIClient().post(cache_url + "?append_image=true", data=to_send, format="json") assert response.status_code == 200 images = [ as_datalink("p1".encode(), "png"), as_datalink("p2".encode(), "jpg"), ] client = APIClient() url = reverse("transform") report = { "report": { "report": gen_report( generate("host", 10), generate("oid", 5), name="report_format_editor_test", ) } } response = client.post(url, data=report, format="xml") assert response.status_code == 200 key = response.data report_url = reverse("report", kwargs={"name": key}) html_template = """ <html> <head> <style>{{ css }}</style> </head> <body> <p>{{ name }}</p> <img src="{{ images.0 }}"/> <img src="{{ images.1 }}"/> </body> </html> """ html_css = "body { background-color: #000; }" for i, content in enumerate(images): upload_image(f"{key}images", str(i), content) upload(f"{key}html_template", html_template) upload(f"{key}html_css", html_css) # upload(images) html_report = client.get(report_url, HTTP_ACCEPT="text/html+report_format_editor") assert html_report.status_code == 200 report = str(html_report.getvalue()) assert "report_format_editor_test" in report assert "background-color: #000" in report for content in images: assert f'<img src="{content}"/>' in report
import pytest from pheme.transformation.scanreport.gvmd import ( transform, group_by_nvt, group_by_host, ) from tests.generate_test_data import gen_report oids = [uuid.uuid1().hex for _ in range(5)] hosts = ['first', 'second'] @pytest.mark.parametrize( "scan_result", [gen_report(hosts, oids, with_optional=True)] ) def test_group_by_nvt(scan_result): data = {'report': scan_result} result = transform(data, group_by=group_by_nvt) assert len(result.results.scans) == len(oids) @pytest.mark.parametrize( "scan_result", [gen_report(hosts, oids, with_optional=False)] ) def test_group_by_host(scan_result): data = {'report': {'report': scan_result}} result = transform(data, group_by=group_by_host) assert len(result.results.scans) == 2