1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
8 alias Pleroma.Web.ActivityPub.MRF.VocabularyPolicy
11 test "it accepts based on parent activity type" do
12 config = Pleroma.Config.get([:mrf_vocabulary, :accept])
13 Pleroma.Config.put([:mrf_vocabulary, :accept], ["Like"])
17 "object" => "whatever"
20 {:ok, ^message} = VocabularyPolicy.filter(message)
22 Pleroma.Config.put([:mrf_vocabulary, :accept], config)
25 test "it accepts based on child object type" do
26 config = Pleroma.Config.get([:mrf_vocabulary, :accept])
27 Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])
33 "content" => "whatever"
37 {:ok, ^message} = VocabularyPolicy.filter(message)
39 Pleroma.Config.put([:mrf_vocabulary, :accept], config)
42 test "it does not accept disallowed child objects" do
43 config = Pleroma.Config.get([:mrf_vocabulary, :accept])
44 Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])
50 "content" => "whatever"
54 {:reject, nil} = VocabularyPolicy.filter(message)
56 Pleroma.Config.put([:mrf_vocabulary, :accept], config)
59 test "it does not accept disallowed parent types" do
60 config = Pleroma.Config.get([:mrf_vocabulary, :accept])
61 Pleroma.Config.put([:mrf_vocabulary, :accept], ["Announce", "Note"])
67 "content" => "whatever"
71 {:reject, nil} = VocabularyPolicy.filter(message)
73 Pleroma.Config.put([:mrf_vocabulary, :accept], config)
78 test "it rejects based on parent activity type" do
79 config = Pleroma.Config.get([:mrf_vocabulary, :reject])
80 Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])
84 "object" => "whatever"
87 {:reject, nil} = VocabularyPolicy.filter(message)
89 Pleroma.Config.put([:mrf_vocabulary, :reject], config)
92 test "it rejects based on child object type" do
93 config = Pleroma.Config.get([:mrf_vocabulary, :reject])
94 Pleroma.Config.put([:mrf_vocabulary, :reject], ["Note"])
100 "content" => "whatever"
104 {:reject, nil} = VocabularyPolicy.filter(message)
106 Pleroma.Config.put([:mrf_vocabulary, :reject], config)
109 test "it passes through objects that aren't disallowed" do
110 config = Pleroma.Config.get([:mrf_vocabulary, :reject])
111 Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])
114 "type" => "Announce",
115 "object" => "whatever"
118 {:ok, ^message} = VocabularyPolicy.filter(message)
120 Pleroma.Config.put([:mrf_vocabulary, :reject], config)