diff options
author | lain <lain@soykaf.club> | 2019-06-13 10:47:35 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-06-13 10:47:35 +0000 |
commit | a2318e9dd6c8daf5554b17e9312f1fb6e14326de (patch) | |
tree | cc67dffe19b4f02ac6a6e5ca04a9b785685decee | |
parent | 822a9f28d08af9da69a8e0f72cc6511252f25ddd (diff) | |
parent | 30e54fd7e2f967364f2c1c17d739b629d2900167 (diff) | |
download | pleroma-a2318e9dd6c8daf5554b17e9312f1fb6e14326de.tar.gz pleroma-a2318e9dd6c8daf5554b17e9312f1fb6e14326de.zip |
Merge branch 'improve-410-handling' into 'develop'
Handle HTTP 404 and 410 response
Closes #977
See merge request pleroma/pleroma!1278
-rw-r--r-- | lib/pleroma/object/fetcher.ex | 3 | ||||
-rw-r--r-- | test/object/fetcher_test.exs | 34 |
2 files changed, 32 insertions, 5 deletions
diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index ca980c629..c422490ac 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: code}} when code in [404, 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..26dc9496d 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -7,7 +7,17 @@ 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} + + %{method: :get, url: "https://mastodon.example.org/users/userisgone404"} -> + %Tesla.Env{status: 404} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + :ok end @@ -81,10 +91,24 @@ 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 + + test "handle HTTP 404 response" do + assert {:error, "Object has been deleted"} == + Fetcher.fetch_and_contain_remote_object_from_id( + "https://mastodon.example.org/users/userisgone404" + ) end end |