Fix post deletion not being deferred when those are part of an account warning (#30163)

main-rebase-security-fix
Claire 2024-05-06 11:52:34 +02:00 committed by GitHub
parent 4f0d18168c
commit e5062b7135
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 1 deletions

View File

@ -266,7 +266,7 @@ class Status < ApplicationRecord
end
def reported?
@reported ||= Report.where(target_account: account).unresolved.exists?(['? = ANY(status_ids)', id])
@reported ||= account.targeted_reports.unresolved.exists?(['? = ANY(status_ids)', id]) || account.strikes.exists?(['? = ANY(status_ids)', id.to_s])
end
def emojis

View File

@ -205,6 +205,48 @@ RSpec.describe Status do
end
end
describe '#reported?' do
context 'when the status is not reported' do
it 'returns false' do
expect(subject.reported?).to be false
end
end
context 'when the status is part of an open report' do
before do
Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
end
it 'returns true' do
expect(subject.reported?).to be true
end
end
context 'when the status is part of a closed report with an account warning mentioning the account' do
before do
report = Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
report.resolve!(Fabricate(:account))
Fabricate(:account_warning, target_account: subject.account, status_ids: [subject.id], report: report)
end
it 'returns true' do
expect(subject.reported?).to be true
end
end
context 'when the status is part of a closed report with an account warning not mentioning the account' do
before do
report = Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
report.resolve!(Fabricate(:account))
Fabricate(:account_warning, target_account: subject.account, report: report)
end
it 'returns false' do
expect(subject.reported?).to be false
end
end
end
describe '.mutes_map' do
subject { described_class.mutes_map([status.conversation.id], account) }