Fix regression from #3490 - filter out hidden statuses from ancestors/descendants even if the viewer is anonymous (#3752)

This commit is contained in:
Eugen Rochko 2017-06-15 02:00:08 +02:00 committed by GitHub
parent bb911043de
commit 8518d005fd
2 changed files with 22 additions and 4 deletions

View file

@ -9,7 +9,7 @@ class StatusFilter
end end
def filtered? def filtered?
account_present? && filtered_status? blocked_by_policy? || (account_present? && filtered_status?) || silenced_account?
end end
private private
@ -19,7 +19,7 @@ class StatusFilter
end end
def filtered_status? def filtered_status?
blocking_account? || blocking_domain? || muting_account? || silenced_account? || blocked_by_policy? blocking_account? || blocking_domain? || muting_account?
end end
def blocking_account? def blocking_account?
@ -43,7 +43,7 @@ class StatusFilter
end end
def account_following_status_account? def account_following_status_account?
account.following? status.account_id account&.following? status.account_id
end end
def blocked_by_policy? def blocked_by_policy?

View file

@ -9,9 +9,27 @@ describe StatusFilter do
context 'without an account' do context 'without an account' do
subject { described_class.new(status, nil) } subject { described_class.new(status, nil) }
context 'when there are no connections' do
it { is_expected.not_to be_filtered } it { is_expected.not_to be_filtered }
end end
context 'when status account is silenced' do
before do
status.account.update(silenced: true)
end
it { is_expected.to be_filtered }
end
context 'when status policy does not allow show' do
before do
expect_any_instance_of(StatusPolicy).to receive(:show?).and_return(false)
end
it { is_expected.to be_filtered }
end
end
context 'with real account' do context 'with real account' do
let(:account) { Fabricate(:account) } let(:account) { Fabricate(:account) }
subject { described_class.new(status, account) } subject { described_class.new(status, account) }