From f1ab70649b00e717a00ac295d42ff99160aa713b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 19 May 2017 21:05:32 +0200 Subject: Add buttons to block and unblock domain (#3127) * Add buttons to block and unblock domain * Relationship API now returns "domain_blocking" status for accounts, rename "block entire domain" to "hide entire domain", fix unblocking domain, do not block notifications from domain-blocked-but-followed people, do not send Salmons to domain blocked users * Add test * Personal domain blocks shouldn't affect Salmon after all, since in this direction of communication the control is very thin when it comes to public stuff. Best stay consistent and not affect federation in this way * Ignore followers and follow request from domain blocked folks, ensure account domain blocks are not created for empty domain, and avoid duplicates in validation * Purge followers when blocking domain (without soft-blocks, since they are useless here) * Add tests, fix local timeline being empty when having any domain blocks --- .../block_domain_from_account_service_spec.rb | 19 +++++++++++++++++++ spec/services/notify_service_spec.rb | 6 ++++++ 2 files changed, 25 insertions(+) create mode 100644 spec/services/block_domain_from_account_service_spec.rb (limited to 'spec') diff --git a/spec/services/block_domain_from_account_service_spec.rb b/spec/services/block_domain_from_account_service_spec.rb new file mode 100644 index 000000000..e7ee34372 --- /dev/null +++ b/spec/services/block_domain_from_account_service_spec.rb @@ -0,0 +1,19 @@ +require 'rails_helper' + +RSpec.describe BlockDomainFromAccountService do + let!(:wolf) { Fabricate(:account, username: 'wolf', domain: 'evil.org') } + let!(:alice) { Fabricate(:account, username: 'alice') } + + subject { BlockDomainFromAccountService.new } + + it 'creates domain block' do + subject.call(alice, 'evil.org') + expect(alice.domain_blocking?('evil.org')).to be true + end + + it 'purge followers from blocked domain' do + wolf.follow!(alice) + subject.call(alice, 'evil.org') + expect(wolf.following?(alice)).to be false + end +end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index 29bd741aa..7a66bd0fe 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -22,6 +22,12 @@ RSpec.describe NotifyService do is_expected.to_not change(Notification, :count) end + it 'does still notify when sender\'s domain is blocked but sender is followed' do + recipient.block_domain!(sender.domain) + recipient.follow!(sender) + is_expected.to change(Notification, :count) + end + it 'does not notify when sender is silenced and not followed' do sender.update(silenced: true) is_expected.to_not change(Notification, :count) -- cgit