From 70230c632cdb74ede2fa141d7bf8323be8d387cd Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 16 Mar 2026 10:40:51 -0400 Subject: [PATCH] Use `to_json` call for AP::Follow reject path (#38227) --- app/lib/activitypub/activity/follow.rb | 2 +- spec/lib/activitypub/activity/follow_spec.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb index 97e41ab789..083b03cb7b 100644 --- a/app/lib/activitypub/activity/follow.rb +++ b/app/lib/activitypub/activity/follow.rb @@ -39,7 +39,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity end def reject_follow_request!(target_account) - json = Oj.dump(serialize_payload(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), ActivityPub::RejectFollowSerializer)) + json = serialize_payload(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), ActivityPub::RejectFollowSerializer).to_json ActivityPub::DeliveryWorker.perform_async(json, target_account.id, @account.inbox_url) end end diff --git a/spec/lib/activitypub/activity/follow_spec.rb b/spec/lib/activitypub/activity/follow_spec.rb index c1829cb8d7..3660a3914a 100644 --- a/spec/lib/activitypub/activity/follow_spec.rb +++ b/spec/lib/activitypub/activity/follow_spec.rb @@ -84,6 +84,23 @@ RSpec.describe ActivityPub::Activity::Follow do end end + context 'when recipient blocks sender' do + before { Fabricate :block, account: recipient, target_account: sender } + + it 'sends a reject and does not follow' do + subject.perform + + expect(sender.requested?(recipient)) + .to be false + expect(ActivityPub::DeliveryWorker) + .to have_enqueued_sidekiq_job( + match_json_values(type: 'Reject', object: include(type: 'Follow')), + recipient.id, + anything + ) + end + end + context 'when a follow relationship already exists' do before do sender.active_relationships.create!(target_account: recipient, uri: 'bar')