From 5e0b1dd28d144dd5e861399336031a88f8adff85 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 26 Jun 2016 10:43:27 +0200 Subject: [PATCH 1/2] use `match_array` for comment_service_spec --- spec/services/comment_service_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/services/comment_service_spec.rb b/spec/services/comment_service_spec.rb index d6b24cfb7..7717f4561 100644 --- a/spec/services/comment_service_spec.rb +++ b/spec/services/comment_service_spec.rb @@ -96,7 +96,7 @@ describe CommentService do post = alice.post(:status_message, text: "hello", public: true) comments = [alice, bob, eve].map {|user| CommentService.new(user).create(post.id, "hi") } - expect(CommentService.new.find_for_post(post.id)).to eq(comments) + expect(CommentService.new.find_for_post(post.id)).to match_array(comments) end end end From 9fda255addcebeffb38a007616fb70936848c461 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 26 Jun 2016 11:05:23 +0200 Subject: [PATCH 2/2] use the parent author of the target as sender for relayable retractions --- lib/diaspora/federated/retraction.rb | 8 +++++++- spec/lib/diaspora/federated/retraction_spec.rb | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/diaspora/federated/retraction.rb b/lib/diaspora/federated/retraction.rb index 7c71c8591..75dd1312f 100644 --- a/lib/diaspora/federated/retraction.rb +++ b/lib/diaspora/federated/retraction.rb @@ -29,7 +29,8 @@ class Retraction def defer_dispatch(user, include_target_author=true) subscribers = dispatch_subscribers(include_target_author) - Workers::DeferredRetraction.perform_async(user.id, data, subscribers.map(&:id), service_opts(user)) + sender = dispatch_sender(user) + Workers::DeferredRetraction.perform_async(sender.id, data, subscribers.map(&:id), service_opts(user)) end def perform @@ -52,6 +53,11 @@ class Retraction subscribers end + # @deprecated This is only needed for pre 0.6 pods + def dispatch_sender(user) + target.try(:sender_for_dispatch) || user + end + def service_opts(user) return {} unless target.is_a?(StatusMessage) diff --git a/spec/lib/diaspora/federated/retraction_spec.rb b/spec/lib/diaspora/federated/retraction_spec.rb index c7b6fb941..450ff20c9 100644 --- a/spec/lib/diaspora/federated/retraction_spec.rb +++ b/spec/lib/diaspora/federated/retraction_spec.rb @@ -99,6 +99,18 @@ describe Retraction do Retraction.for(comment, local_luke).defer_dispatch(local_luke) end + it "uses the author of the target parent as sender for a comment-retraction if the parent is local" do + post = local_luke.post(:status_message, text: "hello", public: true) + comment = local_leia.comment!(post, "destroy!") + federation_retraction = Diaspora::Federation::Entities.relayable_retraction(comment, local_leia) + + expect(Workers::DeferredRetraction).to receive(:perform_async).with( + local_luke.id, federation_retraction.to_h, [remote_raphael.id], {} + ) + + Retraction.for(comment, local_leia).defer_dispatch(local_leia) + end + context "relayable" do let(:post) { local_luke.post(:status_message, text: "hello", public: true) } let(:comment) { FactoryGirl.create(:comment, post: post, author: remote_raphael) }