funkwhale/api/tests/moderation/test_mrf.py

68 wiersze
2.1 KiB
Python

from funkwhale_api.moderation import mrf
def test_mrf_inbox_registry_apply_empty(mrf_inbox_registry, mocker):
payload = {"hello": "world"}
new_payload, updated = mrf_inbox_registry.apply(payload)
assert new_payload == payload
assert updated is False
def test_mrf_inbox_registry_apply_simple(mrf_inbox_registry, mocker):
rule = mocker.Mock(return_value="test")
payload = {"hello": "world"}
mrf_inbox_registry.register(rule, name="rule")
new_payload, updated = mrf_inbox_registry.apply(payload)
assert new_payload == "test"
assert updated is True
def test_mrf_inbox_registry_apply_skipped(mrf_inbox_registry, mocker):
rule = mocker.Mock(side_effect=mrf.Skip())
payload = {"hello": "world"}
mrf_inbox_registry.register(rule, name="rule")
new_payload, updated = mrf_inbox_registry.apply(payload)
assert new_payload == payload
assert updated is False
def test_mrf_inbox_registry_apply_discard(mrf_inbox_registry, mocker):
rule1 = mocker.Mock(return_value=None)
rule2 = mocker.Mock(side_effect=mrf.Discard())
mrf_inbox_registry.register(rule1, name="rule1")
mrf_inbox_registry.register(rule2, name="rule2")
payload = {"hello": "world"}
assert mrf_inbox_registry.apply(payload, arg1="value1") == (None, False)
rule1.assert_called_once_with(payload, arg1="value1")
rule2.assert_called_once_with(payload, arg1="value1")
def test_mrf_inbox_registry_use_returned_payload(mrf_inbox_registry, mocker):
rule1 = mocker.Mock(return_value="payload1")
rule2 = mocker.Mock(return_value="payload2")
mrf_inbox_registry.register(rule1, name="rule1")
mrf_inbox_registry.register(rule2, name="rule2")
payload = {"hello": "world"}
assert mrf_inbox_registry.apply(payload) == ("payload2", True)
rule1.assert_called_once_with(payload)
rule2.assert_called_once_with("payload1")
def test_mrf_inbox_registry_skip_errors(mrf_inbox_registry, mocker):
rule1 = mocker.Mock(side_effect=Exception())
mrf_inbox_registry.register(rule1, name="rule1")
assert mrf_inbox_registry.apply("payload") == ("payload", False)