parent
							
								
									25f6f41052
								
							
						
					
					
						commit
						6226aa83d7
					
				@ -23,9 +23,7 @@ class SuspendAccountService < BaseService
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def purge_content!
 | 
					  def purge_content!
 | 
				
			||||||
    if @account.local?
 | 
					    if @account.local?
 | 
				
			||||||
      ActivityPub::RawDistributionWorker.perform_async(delete_actor_json, @account.id)
 | 
					      ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
 | 
				
			||||||
 | 
					 | 
				
			||||||
      ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
 | 
					 | 
				
			||||||
        [delete_actor_json, @account.id, inbox_url]
 | 
					        [delete_actor_json, @account.id, inbox_url]
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
@ -75,4 +73,8 @@ class SuspendAccountService < BaseService
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
 | 
					    @delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def delivery_inboxes
 | 
				
			||||||
 | 
					    Account.inboxes + Relay.enabled.pluck(:inbox_url)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,11 @@ require 'rails_helper'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
RSpec.describe SuspendAccountService, type: :service do
 | 
					RSpec.describe SuspendAccountService, type: :service do
 | 
				
			||||||
  describe '#call' 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
 | 
					    subject do
 | 
				
			||||||
      -> { described_class.new.call(account) }
 | 
					      -> { described_class.new.call(account) }
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
@ -14,6 +19,8 @@ RSpec.describe SuspendAccountService, type: :service do
 | 
				
			|||||||
    let!(:active_relationship) { Fabricate(:follow, account: account) }
 | 
					    let!(:active_relationship) { Fabricate(:follow, account: account) }
 | 
				
			||||||
    let!(:passive_relationship) { Fabricate(:follow, target_account: account) }
 | 
					    let!(:passive_relationship) { Fabricate(:follow, target_account: account) }
 | 
				
			||||||
    let!(:subscription) { Fabricate(:subscription, 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
 | 
					    it 'deletes associated records' do
 | 
				
			||||||
      is_expected.to change {
 | 
					      is_expected.to change {
 | 
				
			||||||
@ -29,5 +36,11 @@ RSpec.describe SuspendAccountService, type: :service do
 | 
				
			|||||||
        ].map(&:count)
 | 
					        ].map(&:count)
 | 
				
			||||||
      }.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0])
 | 
					      }.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0])
 | 
				
			||||||
    end
 | 
					    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
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user