Stop oban from retrying if validating errors occur when processing incoming data
This commit is contained in:
parent
8a0162cd96
commit
1babd0798f
@ -13,6 +13,9 @@ defmodule Pleroma.Workers.ReceiverWorker do
|
||||
{:ok, res}
|
||||
else
|
||||
{:error, :origin_containment_failed} -> {:cancel, :origin_containment_failed}
|
||||
{:error, :already_present} -> {:cancel, :already_present}
|
||||
{:error, {:validate_object, reason}} -> {:cancel, reason}
|
||||
{:error, {:error, {:validate, reason}}} -> {:cancel, reason}
|
||||
{:error, {:reject, reason}} -> {:cancel, reason}
|
||||
e -> e
|
||||
end
|
||||
|
@ -22,4 +22,31 @@ defmodule Pleroma.Workers.ReceiverWorkerTest do
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
test "it ignores ObjectValidator reject" do
|
||||
params =
|
||||
insert(:note_activity).data
|
||||
|> Map.put("id", Pleroma.Web.ActivityPub.Utils.generate_activity_id())
|
||||
|> Map.put("object", %{
|
||||
"type" => "Note",
|
||||
"id" => Pleroma.Web.ActivityPub.Utils.generate_object_id()
|
||||
})
|
||||
|
||||
with_mock Pleroma.Web.ActivityPub.ObjectValidator, [:passthrough],
|
||||
validate: fn _, _ -> {:error, %Ecto.Changeset{}} end do
|
||||
assert {:cancel, {:error, %Ecto.Changeset{}}} =
|
||||
ReceiverWorker.perform(%Oban.Job{
|
||||
args: %{"op" => "incoming_ap_doc", "params" => params}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
test "it ignores duplicates" do
|
||||
params = insert(:note_activity).data
|
||||
|
||||
assert {:cancel, :already_present} =
|
||||
ReceiverWorker.perform(%Oban.Job{
|
||||
args: %{"op" => "incoming_ap_doc", "params" => params}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user