funkwhale/api/tests/moderation/test_mrf_policies.py

64 wiersze
2.0 KiB
Python

import pytest
from funkwhale_api.moderation import mrf
from funkwhale_api.moderation import mrf_policies
@pytest.mark.parametrize(
"enabled, payload, kwargs, allowed_domains, expected",
[
# allow listing enabled, domain on allowed list -> nothing happens
(
True,
{"id": "http://allowed.example"},
{"sender_id": "http://allowed.example/actor"},
["allowed.example"],
None,
),
# allow listing enabled, domain NOT on allowed list -> message discarded
(
True,
{"id": "http://notallowed.example"},
{"sender_id": "http://notallowed.example/actor"},
["allowed.example"],
mrf.Discard,
),
# allow listing disabled -> policy skipped
(
False,
{"id": "http://allowed.example"},
{"sender_id": "http://allowed.example/actor"},
[],
mrf.Skip,
),
# multiple domains to check, one is not allowed -> message discarded
(
True,
{"id": "http://allowed.example"},
{"sender_id": "http://notallowed.example/actor"},
["allowed.example"],
mrf.Discard,
),
# multiple domains to check, all allowed -> nothing happens
(
True,
{"id": "http://allowed.example"},
{"sender_id": "http://anotherallowed.example/actor"},
["allowed.example", "anotherallowed.example"],
None,
),
],
)
def test_allow_list_policy(
enabled, payload, kwargs, expected, allowed_domains, preferences, factories
):
preferences["moderation__allow_list_enabled"] = enabled
for d in allowed_domains:
factories["federation.Domain"](name=d, allowed=True)
if expected:
with pytest.raises(expected):
mrf_policies.check_allow_list(payload, **kwargs)
else:
assert mrf_policies.check_allow_list(payload, **kwargs) == expected