aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-06-13 16:34:03 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-06-13 16:34:03 +0700
commitafae3ada22fb714735fd75448c574276353f2e1d (patch)
tree10daca5cf3bfbbed6c9cf2588a4bda18228b11a8
parent822a9f28d08af9da69a8e0f72cc6511252f25ddd (diff)
downloadpleroma-afae3ada22fb714735fd75448c574276353f2e1d.tar.gz
Handle HTTP "410 Gone" response
-rw-r--r--lib/pleroma/object/fetcher.ex3
-rw-r--r--test/object/fetcher_test.exs24
2 files changed, 22 insertions, 5 deletions
diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex
index ca980c629..f7d724668 100644
--- a/lib/pleroma/object/fetcher.ex
+++ b/lib/pleroma/object/fetcher.ex
@@ -85,6 +85,9 @@ defmodule Pleroma.Object.Fetcher do
:ok <- Containment.contain_origin_from_id(id, data) do
{:ok, data}
else
+ {:ok, %{status: 410}} ->
+ {:error, "Object has been deleted"}
+
e ->
{:error, e}
end
diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs
index d604fd5f5..58abcfe55 100644
--- a/test/object/fetcher_test.exs
+++ b/test/object/fetcher_test.exs
@@ -7,7 +7,14 @@ defmodule Pleroma.Object.FetcherTest do
import Tesla.Mock
setup do
- mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
+ mock(fn
+ %{method: :get, url: "https://mastodon.example.org/users/userisgone"} ->
+ %Tesla.Env{status: 410}
+
+ env ->
+ apply(HttpRequestMock, :request, [env])
+ end)
+
:ok
end
@@ -81,10 +88,17 @@ defmodule Pleroma.Object.FetcherTest do
end
test "all objects with fake directions are rejected by the object fetcher" do
- {:error, _} =
- Fetcher.fetch_and_contain_remote_object_from_id(
- "https://info.pleroma.site/activity4.json"
- )
+ assert {:error, _} =
+ Fetcher.fetch_and_contain_remote_object_from_id(
+ "https://info.pleroma.site/activity4.json"
+ )
+ end
+
+ test "handle HTTP 410 Gone response" do
+ assert {:error, "Object has been deleted"} ==
+ Fetcher.fetch_and_contain_remote_object_from_id(
+ "https://mastodon.example.org/users/userisgone"
+ )
end
end