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, data}
else
{:ok, %{status: 410}} ->
{:error, "Object has been deleted"}
e ->
{:error, e}
end

View File

@ -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