logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: df0880d8d12e557ca79161bc9a942bc8b3655d4e
parent f06f0bedd305706ba8dd7cc38d421e2831f43d0b
Author: Mark Felder <feld@feld.me>
Date:   Sat, 28 Jun 2025 13:23:37 -0700

Add Instances.delete_all_unreachable/0

Diffstat:

Mlib/pleroma/instances.ex8++++++++
Mtest/pleroma/instances_test.exs26++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex @@ -33,4 +33,12 @@ defmodule Pleroma.Instances do |> Oban.insert() end) end + + @doc "Deletes all users and activities for unreachable instances" + def delete_all_unreachable do + get_unreachable() + |> Enum.each(fn {domain, _} -> + Instance.delete_users_and_activities(domain) + end) + end end diff --git a/test/pleroma/instances_test.exs b/test/pleroma/instances_test.exs @@ -109,4 +109,30 @@ defmodule Pleroma.InstancesTest do assert job.args["domain"] == unreachable_domain end end + + test "delete_all_unreachable/0 schedules DeleteWorker jobs for all unreachable instances" do + domain1 = "unreachable1.example.com" + domain2 = "unreachable2.example.com" + domain3 = "unreachable3.example.com" + + Instances.set_unreachable(domain1) + Instances.set_unreachable(domain2) + Instances.set_unreachable(domain3) + + Instances.delete_all_unreachable() + + # Verify that DeleteWorker jobs were scheduled for all unreachable domains + jobs = all_enqueued(worker: Pleroma.Workers.DeleteWorker) + assert length(jobs) == 3 + + domains = Enum.map(jobs, & &1.args["host"]) + assert domain1 in domains + assert domain2 in domains + assert domain3 in domains + + # Verify all jobs are delete_instance operations + Enum.each(jobs, fn job -> + assert job.args["op"] == "delete_instance" + end) + end end