kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
64 wiersze
2.0 KiB
Python
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
|