|
|
|
@ -13,11 +13,9 @@ RSpec.describe ActivityPub::SynchronizeFollowersService do
|
|
|
|
|
let(:collection_uri) { 'http://example.com/partial-followers' }
|
|
|
|
|
|
|
|
|
|
let(:items) do
|
|
|
|
|
[
|
|
|
|
|
ActivityPub::TagManager.instance.uri_for(alice),
|
|
|
|
|
ActivityPub::TagManager.instance.uri_for(eve),
|
|
|
|
|
ActivityPub::TagManager.instance.uri_for(mallory),
|
|
|
|
|
]
|
|
|
|
|
[alice, eve, mallory].map do |account|
|
|
|
|
|
ActivityPub::TagManager.instance.uri_for(account)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
let(:payload) do
|
|
|
|
@ -40,20 +38,15 @@ RSpec.describe ActivityPub::SynchronizeFollowersService do
|
|
|
|
|
subject.call(actor, collection_uri)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'keeps expected followers' do
|
|
|
|
|
expect(alice.following?(actor)).to be true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'removes local followers not in the remote list' do
|
|
|
|
|
expect(bob.following?(actor)).to be false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'converts follow requests to follow relationships when they have been accepted' do
|
|
|
|
|
expect(mallory.following?(actor)).to be true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'sends an Undo Follow to the actor' do
|
|
|
|
|
expect(ActivityPub::DeliveryWorker).to have_received(:perform_async).with(anything, eve.id, actor.inbox_url)
|
|
|
|
|
it 'maintains following records and sends Undo Follow to actor' do
|
|
|
|
|
expect(alice)
|
|
|
|
|
.to be_following(actor) # Keep expected followers
|
|
|
|
|
expect(bob)
|
|
|
|
|
.to_not be_following(actor) # Remove local followers not in remote list
|
|
|
|
|
expect(mallory)
|
|
|
|
|
.to be_following(actor) # Convert follow request to follow when accepted
|
|
|
|
|
expect(ActivityPub::DeliveryWorker)
|
|
|
|
|
.to have_received(:perform_async).with(anything, eve.id, actor.inbox_url) # Send Undo Follow to actor
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|