diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-08-13 22:51:15 +0000 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-08-13 22:51:15 +0000 | 
| commit | 9ef31767f23b908f276c6cbd44b0bd46373f91fe (patch) | |
| tree | 0f71f35b9417f6ec9391ea46d1c5c5e72e53ca6e /test | |
| parent | c3a54cc34daa971153508f269b3e701ca6eb08cd (diff) | |
| parent | 5983f98f2618d5e744337f1f79b78c3ad2774d9c (diff) | |
| download | pleroma-9ef31767f23b908f276c6cbd44b0bd46373f91fe.tar.gz pleroma-9ef31767f23b908f276c6cbd44b0bd46373f91fe.zip | |
Merge branch 'feature/mrf-vocabulary' into 'develop'
MRF Vocabulary
See merge request pleroma/pleroma!1559
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/activity_pub/mrf/vocabulary_policy_test.exs | 123 | 
1 files changed, 123 insertions, 0 deletions
| diff --git a/test/web/activity_pub/mrf/vocabulary_policy_test.exs b/test/web/activity_pub/mrf/vocabulary_policy_test.exs new file mode 100644 index 000000000..c3b11d7a1 --- /dev/null +++ b/test/web/activity_pub/mrf/vocabulary_policy_test.exs @@ -0,0 +1,123 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do +  use Pleroma.DataCase + +  alias Pleroma.Web.ActivityPub.MRF.VocabularyPolicy + +  describe "accept" do +    test "it accepts based on parent activity type" do +      config = Pleroma.Config.get([:mrf_vocabulary, :accept]) +      Pleroma.Config.put([:mrf_vocabulary, :accept], ["Like"]) + +      message = %{ +        "type" => "Like", +        "object" => "whatever" +      } + +      {:ok, ^message} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :accept], config) +    end + +    test "it accepts based on child object type" do +      config = Pleroma.Config.get([:mrf_vocabulary, :accept]) +      Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"]) + +      message = %{ +        "type" => "Create", +        "object" => %{ +          "type" => "Note", +          "content" => "whatever" +        } +      } + +      {:ok, ^message} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :accept], config) +    end + +    test "it does not accept disallowed child objects" do +      config = Pleroma.Config.get([:mrf_vocabulary, :accept]) +      Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"]) + +      message = %{ +        "type" => "Create", +        "object" => %{ +          "type" => "Article", +          "content" => "whatever" +        } +      } + +      {:reject, nil} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :accept], config) +    end + +    test "it does not accept disallowed parent types" do +      config = Pleroma.Config.get([:mrf_vocabulary, :accept]) +      Pleroma.Config.put([:mrf_vocabulary, :accept], ["Announce", "Note"]) + +      message = %{ +        "type" => "Create", +        "object" => %{ +          "type" => "Note", +          "content" => "whatever" +        } +      } + +      {:reject, nil} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :accept], config) +    end +  end + +  describe "reject" do +    test "it rejects based on parent activity type" do +      config = Pleroma.Config.get([:mrf_vocabulary, :reject]) +      Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"]) + +      message = %{ +        "type" => "Like", +        "object" => "whatever" +      } + +      {:reject, nil} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :reject], config) +    end + +    test "it rejects based on child object type" do +      config = Pleroma.Config.get([:mrf_vocabulary, :reject]) +      Pleroma.Config.put([:mrf_vocabulary, :reject], ["Note"]) + +      message = %{ +        "type" => "Create", +        "object" => %{ +          "type" => "Note", +          "content" => "whatever" +        } +      } + +      {:reject, nil} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :reject], config) +    end + +    test "it passes through objects that aren't disallowed" do +      config = Pleroma.Config.get([:mrf_vocabulary, :reject]) +      Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"]) + +      message = %{ +        "type" => "Announce", +        "object" => "whatever" +      } + +      {:ok, ^message} = VocabularyPolicy.filter(message) + +      Pleroma.Config.put([:mrf_vocabulary, :reject], config) +    end +  end +end | 
