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 end
def reported? 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 end
def emojis def emojis

View File

@ -205,6 +205,48 @@ RSpec.describe Status do
end end
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 describe '.mutes_map' do
subject { described_class.mutes_map([status.conversation.id], account) } subject { described_class.mutes_map([status.conversation.id], account) }