delivery_worker_spec.rb 1.1 KB

1234567891011121314151617181920212223242526272829
  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. describe ActivityPub::DeliveryWorker do
  4. include RoutingHelper
  5. subject { described_class.new }
  6. let(:sender) { Fabricate(:account) }
  7. let(:payload) { 'test' }
  8. before do
  9. allow_any_instance_of(Account).to receive(:remote_followers_hash).with('https://example.com/api').and_return('somehash')
  10. end
  11. describe 'perform' do
  12. it 'performs a request' do
  13. stub_request(:post, 'https://example.com/api').to_return(status: 200)
  14. subject.perform(payload, sender.id, 'https://example.com/api', { synchronize_followers: true })
  15. expect(a_request(:post, 'https://example.com/api').with(headers: { 'Collection-Synchronization' => "collectionId=\"#{account_followers_url(sender)}\", digest=\"somehash\", url=\"#{account_followers_synchronization_url(sender)}\"" })).to have_been_made.once
  16. end
  17. it 'raises when request fails' do
  18. stub_request(:post, 'https://example.com/api').to_return(status: 500)
  19. expect { subject.perform(payload, sender.id, 'https://example.com/api') }.to raise_error Mastodon::UnexpectedResponseError
  20. end
  21. end
  22. end