Skip to content
Extraits de code Groupes Projets
Valider 938cd287 rédigé par unarist's avatar unarist Validation de Eugen Rochko
Parcourir les fichiers

Fix Delete activity handling when the status has been reblogged (#4729)

parent 7876aed1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -16,8 +16,8 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity ...@@ -16,8 +16,8 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
private private
def forward_for_reblogs(status) def forward_for_reblogs(status)
ActivityPub::RawDistributionWorker.push_bulk(status.reblogs.includes(:account).references(:account).merge(Account.local).pluck(:account_id)) do |account| ActivityPub::RawDistributionWorker.push_bulk(status.reblogs.includes(:account).references(:account).merge(Account.local).pluck(:account_id)) do |account_id|
[payload, account.id] [payload, account_id]
end end
end end
......
...@@ -25,4 +25,28 @@ RSpec.describe ActivityPub::Activity::Delete do ...@@ -25,4 +25,28 @@ RSpec.describe ActivityPub::Activity::Delete do
expect(Status.find_by(id: status.id)).to be_nil expect(Status.find_by(id: status.id)).to be_nil
end end
end end
context 'when the status has been reblogged' do
describe '#perform' do
subject { described_class.new(json, sender) }
let(:reblogger) { Fabricate(:account) }
let(:follower) { Fabricate(:account, username: 'follower', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
stub_request(:post, 'http://example.com/inbox').to_return(status: 200)
follower.follow!(reblogger)
Fabricate(:status, account: reblogger, reblog: status)
subject.perform
end
it 'deletes sender\'s status' do
expect(Status.find_by(id: status.id)).to be_nil
end
it 'sends delete activity to followers of rebloggers' do
# one for Delete original post, and one for Undo reblog (normal delivery)
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.twice
end
end
end
end end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter