Fix URI generation for reblogs by accounts with numerical AP ids (#37415)

This commit is contained in:
David Roetzel 2026-01-07 16:39:22 +01:00 committed by Claire
parent adea0b7b31
commit deeaf50472
2 changed files with 23 additions and 1 deletions

View file

@ -50,7 +50,7 @@ class ActivityPub::TagManager
context_url(target) unless target.parent_account_id.nil? || target.parent_status_id.nil? context_url(target) unless target.parent_account_id.nil? || target.parent_status_id.nil?
when :note, :comment, :activity when :note, :comment, :activity
if target.account.numeric_ap_id? if target.account.numeric_ap_id?
return activity_ap_account_status_url(target.account, target) if target.reblog? return activity_ap_account_status_url(target.account.id, target) if target.reblog?
ap_account_status_url(target.account.id, target) ap_account_status_url(target.account.id, target)
else else

View file

@ -128,6 +128,28 @@ RSpec.describe ActivityPub::TagManager do
.to eq("#{host_prefix}/ap/users/#{status.account.id}/statuses/#{status.id}") .to eq("#{host_prefix}/ap/users/#{status.account.id}/statuses/#{status.id}")
end end
end end
context 'with a reblog' do
let(:status) { Fabricate(:status, account:, reblog: Fabricate(:status)) }
context 'when using a numeric ID based scheme' do
let(:account) { Fabricate(:account, id_scheme: :numeric_ap_id) }
it 'returns a string starting with web domain and with the expected path' do
expect(subject.uri_for(status))
.to eq("#{host_prefix}/ap/users/#{status.account.id}/statuses/#{status.id}/activity")
end
end
context 'when using the legacy username based scheme' do
let(:account) { Fabricate(:account, id_scheme: :username_ap_id) }
it 'returns a string starting with web domain and with the expected path' do
expect(subject.uri_for(status))
.to eq("#{host_prefix}/users/#{status.account.username}/statuses/#{status.id}/activity")
end
end
end
end end
context 'with a remote status' do context 'with a remote status' do