2019-07-17 13:55:47 +00:00
|
|
|
# Pleroma: A lightweight social networking server
|
2021-01-13 06:49:20 +00:00
|
|
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
2019-07-17 13:55:47 +00:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
defmodule Pleroma.Web.ActivityPub.MRF.MentionPolicyTest do
|
|
|
|
use Pleroma.DataCase
|
|
|
|
|
|
|
|
alias Pleroma.Web.ActivityPub.MRF.MentionPolicy
|
|
|
|
|
2020-03-20 15:33:00 +00:00
|
|
|
setup do: clear_config(:mrf_mention)
|
2020-02-13 18:55:47 +00:00
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
test "pass filter if allow list is empty" do
|
|
|
|
Pleroma.Config.delete([:mrf_mention])
|
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
assert MentionPolicy.filter(message) == {:ok, message}
|
2022-12-08 22:12:27 +00:00
|
|
|
assert MentionPolicy.filter(update_message) == {:ok, update_message}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
describe "allow" do
|
|
|
|
test "empty" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create"
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update"
|
|
|
|
}
|
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
assert MentionPolicy.filter(message) == {:ok, message}
|
2022-12-08 22:12:27 +00:00
|
|
|
assert MentionPolicy.filter(update_message) == {:ok, update_message}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "to" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"to" => ["https://example.com/ok"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"to" => ["https://example.com/ok"]
|
|
|
|
}
|
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
assert MentionPolicy.filter(message) == {:ok, message}
|
2022-12-08 22:12:27 +00:00
|
|
|
assert MentionPolicy.filter(update_message) == {:ok, update_message}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "cc" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"cc" => ["https://example.com/ok"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"cc" => ["https://example.com/ok"]
|
|
|
|
}
|
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
assert MentionPolicy.filter(message) == {:ok, message}
|
2022-12-08 22:12:27 +00:00
|
|
|
assert MentionPolicy.filter(update_message) == {:ok, update_message}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "both" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/ok2"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/ok2"]
|
|
|
|
}
|
|
|
|
|
2019-07-17 13:55:47 +00:00
|
|
|
assert MentionPolicy.filter(message) == {:ok, message}
|
2022-12-08 22:12:27 +00:00
|
|
|
assert MentionPolicy.filter(update_message) == {:ok, update_message}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "deny" do
|
|
|
|
test "to" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"to" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"to" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2020-07-13 13:47:13 +00:00
|
|
|
assert MentionPolicy.filter(message) ==
|
|
|
|
{:reject, "[MentionPolicy] Rejected for mention of https://example.com/blocked"}
|
2022-12-08 22:12:27 +00:00
|
|
|
|
|
|
|
assert MentionPolicy.filter(update_message) ==
|
|
|
|
{:reject, "[MentionPolicy] Rejected for mention of https://example.com/blocked"}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "cc" do
|
2021-01-26 17:58:43 +00:00
|
|
|
clear_config([:mrf_mention], %{actors: ["https://example.com/blocked"]})
|
2019-07-17 13:55:47 +00:00
|
|
|
|
|
|
|
message = %{
|
|
|
|
"type" => "Create",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2022-12-08 22:12:27 +00:00
|
|
|
update_message = %{
|
|
|
|
"type" => "Update",
|
|
|
|
"to" => ["https://example.com/ok"],
|
|
|
|
"cc" => ["https://example.com/blocked"]
|
|
|
|
}
|
|
|
|
|
2020-07-13 13:47:13 +00:00
|
|
|
assert MentionPolicy.filter(message) ==
|
|
|
|
{:reject, "[MentionPolicy] Rejected for mention of https://example.com/blocked"}
|
2022-12-08 22:12:27 +00:00
|
|
|
|
|
|
|
assert MentionPolicy.filter(update_message) ==
|
|
|
|
{:reject, "[MentionPolicy] Rejected for mention of https://example.com/blocked"}
|
2019-07-17 13:55:47 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|