From 161c72d66d25bb8f5ff492e36a8521c701ab8afc Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Thu, 4 Jan 2018 02:08:57 +0900 Subject: Allow to dereference Follow object for ActivityPub (#5772) * Allow to dereference Follow object for ActivityPub * Accept IRI as object representation for Accept activity --- spec/lib/activitypub/activity/accept_spec.rb | 53 +++++++++++++++++----------- 1 file changed, 33 insertions(+), 20 deletions(-) (limited to 'spec/lib/activitypub/activity') 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 -- cgit