about summary refs log tree commit diff
path: root/spec/lib/activitypub/activity/follow_spec.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-09-27 21:13:51 +0200
committerEugen Rochko <eugen@zeonfederated.com>2019-09-27 21:13:51 +0200
commit18b451c0e6cf6a927a22084f94b423982de0ee8b (patch)
tree9f2f657b793f499cece2a97dd902c285019dfb61 /spec/lib/activitypub/activity/follow_spec.rb
parent2f90a38f44c9c414a2020b2a0031835f3335fea0 (diff)
Change silences to always require approval on follow (#11975)
* Change silenced accounts to require approval on follow

* Also require approval for follows by people explicitly muted by target accounts

* Do not auto-accept silenced or muted accounts when switching from locked to unlocked

* Add `follow_requests_count` to verify_credentials

* Show “Follow requests” menu item if needed even if account is locked

* Add tests

* Correctly reflect that follow requests weren't auto-accepted when local account is silenced

* Accept follow requests from user-muted accounts to avoid leaking mutes
Diffstat (limited to 'spec/lib/activitypub/activity/follow_spec.rb')
-rw-r--r--spec/lib/activitypub/activity/follow_spec.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/lib/activitypub/activity/follow_spec.rb b/spec/lib/activitypub/activity/follow_spec.rb
index 6bbacdbe6..05112cc18 100644
--- a/spec/lib/activitypub/activity/follow_spec.rb
+++ b/spec/lib/activitypub/activity/follow_spec.rb
@@ -31,6 +31,36 @@ RSpec.describe ActivityPub::Activity::Follow do
       end
     end
 
+    context 'silenced account following an unlocked account' do
+      before do
+        sender.touch(:silenced_at)
+        subject.perform
+      end
+
+      it 'does not create a follow from sender to recipient' do
+        expect(sender.following?(recipient)).to be false
+      end
+
+      it 'creates a follow request' do
+        expect(sender.requested?(recipient)).to be true
+      end
+    end
+
+    context 'unlocked account muting the sender' do
+      before do
+        recipient.mute!(sender)
+        subject.perform
+      end
+
+      it 'creates a follow from sender to recipient' do
+        expect(sender.following?(recipient)).to be true
+      end
+
+      it 'does not create a follow request' do
+        expect(sender.requested?(recipient)).to be false
+      end
+    end
+
     context 'locked account' do
       before do
         recipient.update(locked: true)