# frozen_string_literal: true require 'rails_helper' describe ActivityPub::DeliveryWorker do include RoutingHelper subject { described_class.new } let(:sender) { Fabricate(:account) } let(:payload) { 'test' } before do allow_any_instance_of(Account).to receive(:remote_followers_hash).with('https://example.com/').and_return('somehash') end describe 'perform' do it 'performs a request' do stub_request(:post, 'https://example.com/api').to_return(status: 200) subject.perform(payload, sender.id, 'https://example.com/api', { synchronize_followers: true }) 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 end it 'raises when request fails' do stub_request(:post, 'https://example.com/api').to_return(status: 500) expect { subject.perform(payload, sender.id, 'https://example.com/api') }.to raise_error Mastodon::UnexpectedResponseError end end end