From 8518d005fdd989797a4f0e1161332bb7f908cfcb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 15 Jun 2017 02:00:08 +0200 Subject: [PATCH] Fix regression from #3490 - filter out hidden statuses from ancestors/descendants even if the viewer is anonymous (#3752) --- app/lib/status_filter.rb | 6 +++--- spec/lib/status_filter_spec.rb | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/lib/status_filter.rb b/app/lib/status_filter.rb index 89d45d442bb..27e1f9d30fc 100644 --- a/app/lib/status_filter.rb +++ b/app/lib/status_filter.rb @@ -9,7 +9,7 @@ class StatusFilter end def filtered? - account_present? && filtered_status? + blocked_by_policy? || (account_present? && filtered_status?) || silenced_account? end private @@ -19,7 +19,7 @@ class StatusFilter end def filtered_status? - blocking_account? || blocking_domain? || muting_account? || silenced_account? || blocked_by_policy? + blocking_account? || blocking_domain? || muting_account? end def blocking_account? @@ -43,7 +43,7 @@ class StatusFilter end def account_following_status_account? - account.following? status.account_id + account&.following? status.account_id end def blocked_by_policy? diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb index 07f217fc392..db2d87de204 100644 --- a/spec/lib/status_filter_spec.rb +++ b/spec/lib/status_filter_spec.rb @@ -9,7 +9,25 @@ describe StatusFilter do context 'without an account' do subject { described_class.new(status, nil) } - it { is_expected.not_to be_filtered } + context 'when there are no connections' do + it { is_expected.not_to be_filtered } + 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