forked from mirrors/catstodon
Fix crash when processing Flag activity with no status (#26189)
This commit is contained in:
parent
b4e739ff0f
commit
6c3c5bbbc3
2 changed files with 30 additions and 1 deletions
|
@ -9,7 +9,7 @@ class ActivityPub::Activity::Flag < ActivityPub::Activity
|
|||
|
||||
target_accounts.each do |target_account|
|
||||
target_statuses = target_statuses_by_account[target_account.id]
|
||||
replied_to_accounts = Account.local.where(id: target_statuses.filter_map(&:in_reply_to_account_id))
|
||||
replied_to_accounts = target_statuses.nil? ? [] : Account.local.where(id: target_statuses.filter_map(&:in_reply_to_account_id))
|
||||
|
||||
next if target_account.suspended? || (!target_account.local? && replied_to_accounts.none?)
|
||||
|
||||
|
|
|
@ -139,6 +139,35 @@ RSpec.describe ActivityPub::Activity::Flag do
|
|||
expect(report.status_ids).to eq []
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an account is passed but no status' do
|
||||
let(:mentioned) { Fabricate(:account) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: flag_id,
|
||||
type: 'Flag',
|
||||
content: 'Boo!!',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: [
|
||||
ActivityPub::TagManager.instance.uri_for(flagged),
|
||||
],
|
||||
}.with_indifferent_access
|
||||
end
|
||||
|
||||
before do
|
||||
subject.perform
|
||||
end
|
||||
|
||||
it 'creates a report with no attached status' do
|
||||
report = Report.find_by(account: sender, target_account: flagged)
|
||||
|
||||
expect(report).to_not be_nil
|
||||
expect(report.comment).to eq 'Boo!!'
|
||||
expect(report.status_ids).to eq []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#perform with a defined uri' do
|
||||
|
|
Loading…
Reference in a new issue