use the parent author as salmon sender, if the parent author is local

This commit is contained in:
Benjamin Neff 2016-06-26 10:19:56 +02:00
parent 84ec00fa4d
commit 7241b1c054
3 changed files with 27 additions and 0 deletions

View file

@ -10,6 +10,7 @@ module Diaspora
end end
def self.build(sender, object, opts={}) def self.build(sender, object, opts={})
sender = object.try(:sender_for_dispatch) || sender
if object.try(:public?) if object.try(:public?)
Public.new(sender, object, opts) Public.new(sender, object, opts)
else else

View file

@ -40,6 +40,11 @@ module Diaspora
end end
end end
# @deprecated This is only needed for pre 0.6 pods
def sender_for_dispatch
parent.author.owner if parent.author.local?
end
# @abstract # @abstract
def parent def parent
raise NotImplementedError.new('you must override parent in order to enable relayable on this model') raise NotImplementedError.new('you must override parent in order to enable relayable on this model')

View file

@ -32,6 +32,27 @@ describe Diaspora::Federation::Dispatcher do
expect(dispatcher).to be_instance_of(Diaspora::Federation::Dispatcher::Private) expect(dispatcher).to be_instance_of(Diaspora::Federation::Dispatcher::Private)
end end
it "uses the parent author as sender for a comment if the parent is local" do
comment = FactoryGirl.create(:comment, author: bob.person, post: post)
expect(Diaspora::Federation::Dispatcher::Public).to receive(:new).with(alice, comment, {}).and_call_original
dispatcher = described_class.build(bob, comment)
expect(dispatcher).to be_instance_of(Diaspora::Federation::Dispatcher::Public)
end
it "uses the original sender for a comment if the parent is not local" do
remote_post = FactoryGirl.create(:status_message, author: remote_raphael, text: "hello", public: true)
comment = FactoryGirl.create(:comment, author: bob.person, post: remote_post)
expect(Diaspora::Federation::Dispatcher::Public).to receive(:new).with(bob, comment, {}).and_call_original
dispatcher = described_class.build(bob, comment)
expect(dispatcher).to be_instance_of(Diaspora::Federation::Dispatcher::Public)
end
end end
describe ".defer_dispatch" do describe ".defer_dispatch" do