def purge_content!
if @account.local?
- ActivityPub::RawDistributionWorker.perform_async(delete_actor_json, @account.id)
-
- ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
[delete_actor_json, @account.id, inbox_url]
end
end
@delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
end
+
+ def delivery_inboxes
+ Account.inboxes + Relay.enabled.pluck(:inbox_url)
+ end
end
RSpec.describe SuspendAccountService, type: :service do
describe '#call' do
+ before do
+ stub_request(:post, "https://alice.com/inbox").to_return(status: 201)
+ stub_request(:post, "https://bob.com/inbox").to_return(status: 201)
+ end
+
subject do
-> { described_class.new.call(account) }
end
let!(:active_relationship) { Fabricate(:follow, account: account) }
let!(:passive_relationship) { Fabricate(:follow, target_account: account) }
let!(:subscription) { Fabricate(:subscription, account: account) }
+ let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) }
+ let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) }
it 'deletes associated records' do
is_expected.to change {
].map(&:count)
}.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0])
end
+
+ it 'sends a delete actor activity to all known inboxes' do
+ subject.call
+ expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once
+ expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once
+ end
end
end