about summary refs log tree commit diff
path: root/spec/lib/activitypub/activity/accept_spec.rb
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>2018-01-04 02:08:57 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-01-03 18:08:57 +0100
commit161c72d66d25bb8f5ff492e36a8521c701ab8afc (patch)
treed57b674958a4353bba0cf91ba4197748a66fc2f5 /spec/lib/activitypub/activity/accept_spec.rb
parent53d99ebf4f54c25fa58709e9dc05730479ea7d02 (diff)
Allow to dereference Follow object for ActivityPub (#5772)
* Allow to dereference Follow object for ActivityPub

* Accept IRI as object representation for Accept activity
Diffstat (limited to 'spec/lib/activitypub/activity/accept_spec.rb')
-rw-r--r--spec/lib/activitypub/activity/accept_spec.rb53
1 files changed, 33 insertions, 20 deletions
diff --git a/spec/lib/activitypub/activity/accept_spec.rb b/spec/lib/activitypub/activity/accept_spec.rb
index 6503c83e3..9f43be35d 100644
--- a/spec/lib/activitypub/activity/accept_spec.rb
+++ b/spec/lib/activitypub/activity/accept_spec.rb
@@ -3,36 +3,49 @@ require 'rails_helper'
 RSpec.describe ActivityPub::Activity::Accept do
   let(:sender)    { Fabricate(:account) }
   let(:recipient) { Fabricate(:account) }
-
-  let(:json) do
-    {
-      '@context': 'https://www.w3.org/ns/activitystreams',
-      id: 'foo',
-      type: 'Accept',
-      actor: ActivityPub::TagManager.instance.uri_for(sender),
-      object: {
-        id: 'bar',
-        type: 'Follow',
-        actor: ActivityPub::TagManager.instance.uri_for(recipient),
-        object: ActivityPub::TagManager.instance.uri_for(sender),
-      },
-    }.with_indifferent_access
-  end
+  let!(:follow_request) { Fabricate(:follow_request, account: recipient, target_account: sender) }
 
   describe '#perform' do
     subject { described_class.new(json, sender) }
 
     before do
-      Fabricate(:follow_request, account: recipient, target_account: sender)
       subject.perform
     end
 
-    it 'creates a follow relationship' do
-      expect(recipient.following?(sender)).to be true
+    context 'with concerete object representation' do
+      let(:json) do
+        {
+          '@context': 'https://www.w3.org/ns/activitystreams',
+          id: 'foo',
+          type: 'Accept',
+          actor: ActivityPub::TagManager.instance.uri_for(sender),
+          object: {
+            type: 'Follow',
+            actor: ActivityPub::TagManager.instance.uri_for(recipient),
+            object: ActivityPub::TagManager.instance.uri_for(sender),
+          },
+        }.with_indifferent_access
+      end
+
+      it 'creates a follow relationship' do
+        expect(recipient.following?(sender)).to be true
+      end
     end
 
-    it 'removes the follow request' do
-      expect(recipient.requested?(sender)).to be false
+    context 'with object represented by id' do
+      let(:json) do
+        {
+          '@context': 'https://www.w3.org/ns/activitystreams',
+          id: 'foo',
+          type: 'Accept',
+          actor: ActivityPub::TagManager.instance.uri_for(sender),
+          object: ActivityPub::TagManager.instance.uri_for(follow_request),
+        }.with_indifferent_access
+      end
+
+      it 'creates a follow relationship' do
+        expect(recipient.following?(sender)).to be true
+      end
     end
   end
 end