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 @@ def fetch_and_contain_remote_object_from_id(id) 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 @@ test "it can fetch peertube videos" 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