summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2023-12-27 16:06:10 -0500
committerMark Felder <feld@feld.me>2023-12-27 16:08:57 -0500
commitbe0cca9afd8edf1e550f71f17914607c995b64f8 (patch)
tree1e7438a2ba2f6ab139dfe5e59f87fa1fbf8ca0a9
parent53db65678d4efaeb185bd9544401ef967ed20c3b (diff)
downloadpleroma-be0cca9afd8edf1e550f71f17914607c995b64f8.tar.gz
pleroma-be0cca9afd8edf1e550f71f17914607c995b64f8.zip
RemoteFetcherWorker Oban job tests
-rw-r--r--test/pleroma/workers/remote_fetcher_worker_test.exs67
1 files changed, 67 insertions, 0 deletions
diff --git a/test/pleroma/workers/remote_fetcher_worker_test.exs b/test/pleroma/workers/remote_fetcher_worker_test.exs
new file mode 100644
index 000000000..d8cb52f52
--- /dev/null
+++ b/test/pleroma/workers/remote_fetcher_worker_test.exs
@@ -0,0 +1,67 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Workers.RemoteFetcherWorkerTest do
+ use Pleroma.DataCase
+ use Oban.Testing, repo: Pleroma.Repo
+
+ alias Pleroma.Instances
+ alias Pleroma.Workers.RemoteFetcherWorker
+
+ @deleted_object_one "https://deleted-404.example.com/"
+ @deleted_object_two "https://deleted-410.example.com/"
+ @unauthorized_object "https://unauthorized.example.com/"
+ @unreachable_object "https://unreachable.example.com/"
+
+ describe "it does not" do
+ setup do
+ Tesla.Mock.mock(fn
+ %{method: :get, url: @deleted_object_one} ->
+ %Tesla.Env{
+ status: 404
+ }
+
+ %{method: :get, url: @deleted_object_two} ->
+ %Tesla.Env{
+ status: 410
+ }
+
+ %{method: :get, url: @unauthorized_object} ->
+ %Tesla.Env{
+ status: 403
+ }
+ end)
+ end
+
+ test "requeue a deleted object" do
+ assert {:cancel, _} =
+ RemoteFetcherWorker.perform(%Oban.Job{
+ args: %{"op" => "fetch_remote", "id" => @deleted_object_one}
+ })
+
+ assert {:cancel, _} =
+ RemoteFetcherWorker.perform(%Oban.Job{
+ args: %{"op" => "fetch_remote", "id" => @deleted_object_two}
+ })
+ end
+
+ test "requeue an unauthorized object" do
+ assert {:cancel, _} =
+ RemoteFetcherWorker.perform(%Oban.Job{
+ args: %{"op" => "fetch_remote", "id" => @unauthorized_object}
+ })
+ end
+
+ test "fetch an unreachable instance" do
+ Instances.set_consistently_unreachable(@unreachable_object)
+
+ refute Instances.reachable?(@unreachable_object)
+
+ assert {:cancel, _} =
+ RemoteFetcherWorker.perform(%Oban.Job{
+ args: %{"op" => "fetch_remote", "id" => @unreachable_object}
+ })
+ end
+ end
+end