# Pleroma: A lightweight social networking server # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.NoEmptyPolicyTest do use Pleroma.DataCase alias Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy setup_all do: clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy]) test "Notes with content are exempt" do message = %{ "actor" => "http://localhost:4001/users/testuser", "cc" => ["http://localhost:4001/users/testuser/followers"], "object" => %{ "actor" => "http://localhost:4001/users/testuser", "attachment" => [], "cc" => ["http://localhost:4001/users/testuser/followers"], "source" => %{ "content" => "this is a test post" }, "to" => ["https://www.w3.org/ns/activitystreams#Public"], "type" => "Note" }, "to" => ["https://www.w3.org/ns/activitystreams#Public"], "type" => "Create" } assert NoEmptyPolicy.filter(message) == {:ok, message} end test "Polls are exempt" do message = %{ "actor" => "http://localhost:4001/users/testuser", "cc" => ["http://localhost:4001/users/testuser/followers"], "object" => %{ "actor" => "http://localhost:4001/users/testuser", "attachment" => [], "cc" => ["http://localhost:4001/users/testuser/followers"], "oneOf" => [ %{ "name" => "chocolate", "replies" => %{"totalItems" => 0, "type" => "Collection"}, "type" => "Note" }, %{ "name" => "vanilla", "replies" => %{"totalItems" => 0, "type" => "Collection"}, "type" => "Note" } ], "source" => "@user2", "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Question" }, "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Create" } assert NoEmptyPolicy.filter(message) == {:ok, message} end test "Notes with attachments are exempt" do message = %{ "actor" => "http://localhost:4001/users/testuser", "cc" => ["http://localhost:4001/users/testuser/followers"], "object" => %{ "actor" => "http://localhost:4001/users/testuser", "attachment" => [ %{ "actor" => "http://localhost:4001/users/testuser", "mediaType" => "image/png", "name" => "", "type" => "Document", "url" => [ %{ "href" => "http://localhost:4001/media/68ba231cf12e1382ce458f1979969f8ed5cc07ba198a02e653464abaf39bdb90.png", "mediaType" => "image/png", "type" => "Link" } ] } ], "cc" => ["http://localhost:4001/users/testuser/followers"], "source" => "@user2", "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Note" }, "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Create" } assert NoEmptyPolicy.filter(message) == {:ok, message} end test "Notes with only mentions are denied" do message = %{ "actor" => "http://localhost:4001/users/testuser", "cc" => ["http://localhost:4001/users/testuser/followers"], "object" => %{ "actor" => "http://localhost:4001/users/testuser", "attachment" => [], "cc" => ["http://localhost:4001/users/testuser/followers"], "source" => "@user2", "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Note" }, "to" => [ "https://www.w3.org/ns/activitystreams#Public", "http://localhost:4001/users/user2" ], "type" => "Create" } assert NoEmptyPolicy.filter(message) == {:reject, "[NoEmptyPolicy]"} end test "Notes with no content are denied" do message = %{ "actor" => "http://localhost:4001/users/testuser", "cc" => ["http://localhost:4001/users/testuser/followers"], "object" => %{ "actor" => "http://localhost:4001/users/testuser", "attachment" => [], "cc" => ["http://localhost:4001/users/testuser/followers"], "source" => "", "to" => [ "https://www.w3.org/ns/activitystreams#Public" ], "type" => "Note" }, "to" => [ "https://www.w3.org/ns/activitystreams#Public" ], "type" => "Create" } assert NoEmptyPolicy.filter(message) == {:reject, "[NoEmptyPolicy]"} end end