X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=test%2Fpleroma%2Fobject%2Ffetcher_test.exs;h=e26443a81bdb41f67c6460e10748046bc1fbe018;hb=df03d64dc529e73c0424625a2a75d350f1d29680;hp=22192d98f44124f09ea22a909f8b7198184a89fb;hpb=2144ce5188901c59cd72a0b5620862b23b47544e;p=akkoma diff --git a/test/pleroma/object/fetcher_test.exs b/test/pleroma/object/fetcher_test.exs index 22192d98f..e26443a81 100644 --- a/test/pleroma/object/fetcher_test.exs +++ b/test/pleroma/object/fetcher_test.exs @@ -161,6 +161,28 @@ defmodule Pleroma.Object.FetcherTest do ) end + test "does not fetch anything from a rejected instance" do + clear_config([:mrf_simple, :reject], [{"evil.example.org", "i said so"}]) + + assert {:reject, _} = + Fetcher.fetch_object_from_id("http://evil.example.org/@admin/99541947525187367") + end + + test "does not fetch anything if mrf_simple accept is on" do + clear_config([:mrf_simple, :accept], [{"mastodon.example.org", "i said so"}]) + clear_config([:mrf_simple, :reject], []) + + assert {:reject, _} = + Fetcher.fetch_object_from_id( + "http://notlisted.example.org/@admin/99541947525187367" + ) + + assert {:ok, _object} = + Fetcher.fetch_object_from_id( + "http://mastodon.example.org/@admin/99541947525187367" + ) + end + test "it resets instance reachability on successful fetch" do id = "http://mastodon.example.org/@admin/99541947525187367" Instances.set_consistently_unreachable(id) @@ -550,4 +572,75 @@ defmodule Pleroma.Object.FetcherTest do } = object.data end end + + describe "get_object/1" do + test "should return ok if the content type is application/activity+json" do + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://mastodon.social/2" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-type", "application/activity+json"}], + body: "{}" + } + end) + + assert {:ok, "{}"} = Fetcher.get_object("https://mastodon.social/2") + end + + test "should return ok if the content type is application/ld+json with a profile" do + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://mastodon.social/2" + } -> + %Tesla.Env{ + status: 200, + headers: [ + {"content-type", + "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""} + ], + body: "{}" + } + end) + + assert {:ok, "{}"} = Fetcher.get_object("https://mastodon.social/2") + + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://mastodon.social/2" + } -> + %Tesla.Env{ + status: 200, + headers: [ + {"content-type", + "application/ld+json; profile=\"http://www.w3.org/ns/activitystreams\""} + ], + body: "{}" + } + end) + + assert {:ok, "{}"} = Fetcher.get_object("https://mastodon.social/2") + end + + test "should not return ok with other content types" do + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://mastodon.social/2" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-type", "application/json"}], + body: "{}" + } + end) + + assert {:error, {:content_type, "application/json"}} = + Fetcher.get_object("https://mastodon.social/2") + end + end end