diff options
Diffstat (limited to 'test/object')
| -rw-r--r-- | test/object/containment_test.exs | 30 | ||||
| -rw-r--r-- | test/object/fetcher_test.exs | 22 | 
2 files changed, 49 insertions, 3 deletions
diff --git a/test/object/containment_test.exs b/test/object/containment_test.exs index 1beed6236..61cd1b412 100644 --- a/test/object/containment_test.exs +++ b/test/object/containment_test.exs @@ -68,4 +68,34 @@ defmodule Pleroma.Object.ContainmentTest do                 "[error] Could not decode user at fetch https://n1u.moe/users/rye, {:error, :error}"      end    end + +  describe "containment of children" do +    test "contain_child() catches spoofing attempts" do +      data = %{ +        "id" => "http://example.com/whatever", +        "type" => "Create", +        "object" => %{ +          "id" => "http://example.net/~alyssa/activities/1234", +          "attributedTo" => "http://example.org/~alyssa" +        }, +        "actor" => "http://example.com/~bob" +      } + +      :error = Containment.contain_child(data) +    end + +    test "contain_child() allows correct origins" do +      data = %{ +        "id" => "http://example.org/~alyssa/activities/5678", +        "type" => "Create", +        "object" => %{ +          "id" => "http://example.org/~alyssa/activities/1234", +          "attributedTo" => "http://example.org/~alyssa" +        }, +        "actor" => "http://example.org/~alyssa" +      } + +      :ok = Containment.contain_child(data) +    end +  end  end diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index 3b666e0d1..56a9d775f 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Object.FetcherTest do    alias Pleroma.Object    alias Pleroma.Object.Fetcher    import Tesla.Mock +  import Mock    setup do      mock(fn @@ -26,16 +27,31 @@ defmodule Pleroma.Object.FetcherTest do    end    describe "actor origin containment" do -    test "it rejects objects with a bogus origin" do +    test_with_mock "it rejects objects with a bogus origin", +                   Pleroma.Web.OStatus, +                   [:passthrough], +                   [] do        {:error, _} = Fetcher.fetch_object_from_id("https://info.pleroma.site/activity.json") + +      refute called(Pleroma.Web.OStatus.fetch_activity_from_url(:_))      end -    test "it rejects objects when attributedTo is wrong (variant 1)" do +    test_with_mock "it rejects objects when attributedTo is wrong (variant 1)", +                   Pleroma.Web.OStatus, +                   [:passthrough], +                   [] do        {:error, _} = Fetcher.fetch_object_from_id("https://info.pleroma.site/activity2.json") + +      refute called(Pleroma.Web.OStatus.fetch_activity_from_url(:_))      end -    test "it rejects objects when attributedTo is wrong (variant 2)" do +    test_with_mock "it rejects objects when attributedTo is wrong (variant 2)", +                   Pleroma.Web.OStatus, +                   [:passthrough], +                   [] do        {:error, _} = Fetcher.fetch_object_from_id("https://info.pleroma.site/activity3.json") + +      refute called(Pleroma.Web.OStatus.fetch_activity_from_url(:_))      end    end  | 
