Add tests, change default config values, fix a bug
This commit is contained in:
parent
bef9b9cb66
commit
d943c90249
@ -228,8 +228,8 @@ config :pleroma, :mrf_rejectnonpublic,
|
|||||||
allow_direct: false
|
allow_direct: false
|
||||||
|
|
||||||
config :pleroma, :mrf_hellthread,
|
config :pleroma, :mrf_hellthread,
|
||||||
delist_threshold: 5,
|
delist_threshold: 10,
|
||||||
reject_threshold: 10
|
reject_threshold: 20
|
||||||
|
|
||||||
config :pleroma, :mrf_simple,
|
config :pleroma, :mrf_simple,
|
||||||
media_removal: [],
|
media_removal: [],
|
||||||
|
@ -47,14 +47,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
|
|||||||
follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
|
follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
|
||||||
|
|
||||||
if Enum.member?(recipients, "https://www.w3.org/ns/activitystreams#Public") do
|
if Enum.member?(recipients, "https://www.w3.org/ns/activitystreams#Public") do
|
||||||
recipients
|
recipients =
|
||||||
|> List.delete("https://www.w3.org/ns/activitystreams#Public")
|
recipients
|
||||||
|> List.delete(follower_collection)
|
|> List.delete("https://www.w3.org/ns/activitystreams#Public")
|
||||||
|
|> List.delete(follower_collection)
|
||||||
|
|
||||||
{:public, length(recipients)}
|
{:public, length(recipients)}
|
||||||
else
|
else
|
||||||
recipients
|
recipients =
|
||||||
|> List.delete(follower_collection)
|
recipients
|
||||||
|
|> List.delete(follower_collection)
|
||||||
|
|
||||||
{:not_public, length(recipients)}
|
{:not_public, length(recipients)}
|
||||||
end
|
end
|
||||||
|
50
test/web/activity_pub/mrf/hellthread_policy_test.exs
Normal file
50
test/web/activity_pub/mrf/hellthread_policy_test.exs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do
|
||||||
|
use Pleroma.DataCase
|
||||||
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
import Pleroma.Web.ActivityPub.MRF.HellthreadPolicy
|
||||||
|
|
||||||
|
describe "hellthread filter tests" do
|
||||||
|
setup do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
message = %{
|
||||||
|
"actor" => user.ap_id,
|
||||||
|
"cc" => [user.follower_address],
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => [
|
||||||
|
"https://www.w3.org/ns/activitystreams#Public",
|
||||||
|
"https://instace.tld/users/user1",
|
||||||
|
"https://instace.tld/users/user2",
|
||||||
|
"https://instace.tld/users/user3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
[user: user, message: message]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "reject test", %{message: message} do
|
||||||
|
Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 2})
|
||||||
|
|
||||||
|
{:reject, nil} = filter(message)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "delist test", %{user: user, message: message} do
|
||||||
|
Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 2, reject_threshold: 0})
|
||||||
|
|
||||||
|
{:ok, message} = filter(message)
|
||||||
|
assert user.follower_address in message["to"]
|
||||||
|
assert "https://www.w3.org/ns/activitystreams#Public" in message["cc"]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "threshold test", %{message: message} do
|
||||||
|
Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 3})
|
||||||
|
|
||||||
|
{:ok, _} = filter(message)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user