Handle HTTP "410 Gone" response

This commit is contained in:
Egor Kislitsyn 2019-06-13 16:34:03 +07:00
parent 822a9f28d0
commit afae3ada22
2 changed files with 22 additions and 5 deletions

View file

@ -85,6 +85,9 @@ defmodule Pleroma.Object.Fetcher do
:ok <- Containment.contain_origin_from_id(id, data) do :ok <- Containment.contain_origin_from_id(id, data) do
{:ok, data} {:ok, data}
else else
{:ok, %{status: 410}} ->
{:error, "Object has been deleted"}
e -> e ->
{:error, e} {:error, e}
end end

View file

@ -7,7 +7,14 @@ defmodule Pleroma.Object.FetcherTest do
import Tesla.Mock import Tesla.Mock
setup do 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 :ok
end end
@ -81,10 +88,17 @@ defmodule Pleroma.Object.FetcherTest do
end end
test "all objects with fake directions are rejected by the object fetcher" do test "all objects with fake directions are rejected by the object fetcher" do
{:error, _} = assert {:error, _} =
Fetcher.fetch_and_contain_remote_object_from_id( Fetcher.fetch_and_contain_remote_object_from_id(
"https://info.pleroma.site/activity4.json" "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
end end