Esempio n. 1
0
def test_report_add_meta():
    report = Report("127.0.0.1:8545")
    assert report.meta == {}

    report.add_meta("test-key", "test-value")
    assert report.meta["test-key"] == "test-value"
    assert report.to_dict()["meta"]["test-key"] == "test-value"
Esempio n. 2
0
def test_report_add_incomplete_issue():
    report = Report("127.0.0.1:8545")
    assert report.issues == []

    issue = Issue(title="test", description="test")  # missing severity!
    with pytest.raises(ValueError):
        report.add_issue(issue)
Esempio n. 3
0
def test_report_add_issue():
    report = Report("127.0.0.1:8545")
    assert report.issues == []

    issue = Issue(title="test", description="test", severity=Severity.NONE)
    report.add_issue(issue)
    assert report.issues == [issue]
    assert len(report.to_dict()["issues"])
Esempio n. 4
0
def test_valid_report():
    target = "127.0.0.1:8545"
    report = Report(target, issues=[])
    assert report.issues == []
    assert report.target == target
    assert isinstance(report.id, str)
    assert isinstance(report.timestamp, str)
    assert report.meta == {}
    assert sorted(report.to_dict().keys()) == [
        "id",
        "issues",
        "meta",
        "ok",
        "target",
        "timestamp",
    ]
Esempio n. 5
0
def assert_report(report: Report, target, meta):
    assert isinstance(report.timestamp, str)
    assert isinstance(report.id, str)
    report_dict = report.to_dict()
    assert report_dict.get("issues") == []
    assert report_dict.get("meta") == meta
    assert isinstance(report_dict.get("timestamp"), str)
    assert report_dict.get("target") == target
    assert report_dict.get("ok") is True
Esempio n. 6
0
def test_valid_context():
    target = "127.0.0.1:8545"
    node_type = NodeType.GETH
    context = Context(
        target=target,
        report=Report(target=target),
        node_type=node_type,
    )

    assert context.target == target
    assert context.node_type == node_type
    assert context.report.target == target
    assert context.report.issues == []
Esempio n. 7
0
def test_run_plugin_exception():
    plugin = SampleRPCPlugin()
    target = "127.0.0.1:8545"
    node_type = NodeType.GETH
    expected_meta = {"SampleRPCPlugin": True}
    context = Context(
        target=target,
        report=Report(target=target),
        node_type=node_type,
    )
    plugin._check = MagicMock(side_effect=PluginException)
    plugin.run(context=context)

    plugin._check.assert_called_once()
    assert plugin.INTRUSIVE is True
    assert_context(context=context,
                   target=target,
                   node_type=node_type,
                   meta=expected_meta)
    assert_report(report=context.report, target=target, meta=expected_meta)
Esempio n. 8
0
def test_issues(plugin, node_type, rpc_results, endpoint, issues):
    context = Context(
        target=TARGET,
        report=Report(uuid=TEST_UUID, target=TARGET, issues=[]),
        node_type=node_type,
    )
    with requests_mock.Mocker() as mock:
        mock.request(
            method=requests_mock.ANY,
            url=requests_mock.ANY,
            response_list=rpc_results,
        )
        plugin.run(context=context)

    assert mock.call_count == len(rpc_results)
    for i, response in enumerate(rpc_results):
        # TODO: allow for endpoint list if multiple are hit
        mock.request_history[i].url.endswith(endpoint)

    assert context.report.meta == {plugin.__class__.__name__: True}
    assert len(context.report.issues) == len(issues)
    for i1, i2 in zip(context.report.issues, issues):
        # compare dict representations here for more verbose failure diffs
        assert i1.to_dict() == i2.to_dict()
Esempio n. 9
0
def test_report_repr():
    report = Report(target="127.0.0.1:8545", issues=[None, None])
    assert report.target in str(report)
    assert str(len(report.issues)) in str(report)
Esempio n. 10
0
    assert report.meta["test-key"] == "test-value"
    assert report.to_dict()["meta"]["test-key"] == "test-value"


def test_report_repr():
    report = Report(target="127.0.0.1:8545", issues=[None, None])
    assert report.target in str(report)
    assert str(len(report.issues)) in str(report)


@pytest.mark.parametrize(
    "report_1,report_2,expected",
    (
        pytest.param(
            Report(uuid=TEST_UUID,
                   target="127.0.0.1:8545",
                   issues=[None],
                   timestamp="lol"),
            Report(uuid=TEST_UUID,
                   target="127.0.0.1:8545",
                   issues=[None],
                   timestamp="lol"),
            True,
            id="equals",
        ),
        pytest.param(
            Report(uuid=TEST_UUID, target="127.0.0.1:8545", issues=[None]),
            Report(uuid=str(uuid4()), target="127.0.0.1:8545", issues=[None]),
            False,
            id="uuid different",
        ),
        pytest.param(