68 lines
2.1 KiB
Python
68 lines
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)
|