From 1b664cf20dbb696cf16a42efcf59ab186cb211eb Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 5 Sep 2025 08:56:15 -0400 Subject: [PATCH] Relay reset delivery tracker model spec and callback (#36027) --- app/models/relay.rb | 8 ++++++-- spec/models/relay_spec.rb | 13 +++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/models/relay.rb b/app/models/relay.rb index 813a861c682..8a9524e9b37 100644 --- a/app/models/relay.rb +++ b/app/models/relay.rb @@ -34,7 +34,7 @@ class Relay < ApplicationRecord payload = Oj.dump(follow_activity(activity_id)) update!(state: :pending, follow_activity_id: activity_id) - DeliveryFailureTracker.reset!(inbox_url) + reset_delivery_tracker ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url) end @@ -43,12 +43,16 @@ class Relay < ApplicationRecord payload = Oj.dump(unfollow_activity(activity_id)) update!(state: :idle, follow_activity_id: nil) - DeliveryFailureTracker.reset!(inbox_url) + reset_delivery_tracker ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url) end private + def reset_delivery_tracker + DeliveryFailureTracker.reset!(inbox_url) + end + def follow_activity(activity_id) { '@context': ActivityPub::TagManager::CONTEXT, diff --git a/spec/models/relay_spec.rb b/spec/models/relay_spec.rb index 9c917e2d2e0..03758ca6a8f 100644 --- a/spec/models/relay_spec.rb +++ b/spec/models/relay_spec.rb @@ -33,7 +33,7 @@ RSpec.describe Relay do describe 'Callbacks' do describe 'Ensure disabled on destroy' do - before { stub_delivery_worker } + before { stub_services } context 'when relay is enabled' do let(:relay) { Fabricate :relay, state: :accepted } @@ -71,7 +71,7 @@ RSpec.describe Relay do describe '#disable' do let(:relay) { Fabricate :relay, state: :accepted, follow_activity_id: 'https://host.example/123' } - before { stub_delivery_worker } + before { stub_services } it 'changes state to idle and removes the activity id' do expect { relay.disable! } @@ -79,13 +79,15 @@ RSpec.describe Relay do .and change { relay.reload.follow_activity_id }.to(be_nil) expect(ActivityPub::DeliveryWorker) .to have_received(:perform_async).with(match('Undo'), Account.representative.id, relay.inbox_url) + expect(DeliveryFailureTracker) + .to have_received(:reset!).with(relay.inbox_url) end end describe '#enable' do let(:relay) { Fabricate :relay, state: :idle, follow_activity_id: '' } - before { stub_delivery_worker } + before { stub_services } it 'changes state to pending and populates the activity id' do expect { relay.enable! } @@ -93,10 +95,13 @@ RSpec.describe Relay do .and change { relay.reload.follow_activity_id }.to(be_present) expect(ActivityPub::DeliveryWorker) .to have_received(:perform_async).with(match('Follow'), Account.representative.id, relay.inbox_url) + expect(DeliveryFailureTracker) + .to have_received(:reset!).with(relay.inbox_url) end end - def stub_delivery_worker + def stub_services allow(ActivityPub::DeliveryWorker).to receive(:perform_async) + allow(DeliveryFailureTracker).to receive(:reset!) end end