Merge pull request #4911 from JannikStreek/feature/4904-poll_fed_issue

Fix: federation issue with polls
This commit is contained in:
Jonne Haß 2014-04-06 22:25:26 +02:00
commit 89a01525a9
3 changed files with 27 additions and 2 deletions

View file

@ -10,7 +10,7 @@ class Poll < ActiveRecord::Base
xml_attr :poll_answers, :as => [PollAnswer] xml_attr :poll_answers, :as => [PollAnswer]
#forward some requests to status message, because a poll is just attached to a status message and is not sharable itself #forward some requests to status message, because a poll is just attached to a status message and is not sharable itself
delegate :author, :author_id, :public?, :subscribers, to: :status_message delegate :author, :author_id, :diaspora_handle, :public?, :subscribers, to: :status_message
validate :enough_poll_answers validate :enough_poll_answers

View file

@ -10,7 +10,7 @@ class Postzord::Receiver::Public < Postzord::Receiver
@salmon = Salmon::Slap.from_xml(xml) @salmon = Salmon::Slap.from_xml(xml)
@author = Webfinger.new(@salmon.author_id).fetch @author = Webfinger.new(@salmon.author_id).fetch
FEDERATION_LOGGER.info("Receving public post from person:#{@author.id}") FEDERATION_LOGGER.info("Receiving public object from person:#{@author.id}")
end end
# @return [Boolean] # @return [Boolean]

View file

@ -78,6 +78,31 @@ describe PollParticipation do
end end
end end
describe 'federation' do
before do
#Alice is on pod A and another person is on pod B. Alice posts a poll and participates in the poll.
@poll_participant = FactoryGirl.create(:user)
@poll_participant_aspect = @poll_participant.aspects.create(:name => "bruisers")
connect_users(alice, @alices_aspect, @poll_participant, @poll_participant_aspect)
@poll = Poll.new(:question => "hi")
@poll.poll_answers.build(:answer => "a")
@poll.poll_answers.build(:answer => "b")
@post = alice.post :status_message, :text => "hello", :to => @alices_aspect.id
@post.poll = @poll
@poll_participation_alice = alice.participate_in_poll!(@post, @poll.poll_answers.first)
end
it 'is saved without errors in a simulated A-B node environment' do
#stubs needed because the poll participation is already saved in the test db. This is just a simulated federation!
PollParticipation.any_instance.stub(:save!).and_return(true)
Person.any_instance.stub(:local?).and_return(false)
expect{
salmon = Salmon::Slap.create_by_user_and_activity(alice, @poll_participation_alice.to_diaspora_xml).xml_for(@poll_participant)
Postzord::Receiver::Public.new(salmon).save_object
}.to_not raise_error
end
end
describe 'it is relayable' do describe 'it is relayable' do
before do before do
@local_luke, @local_leia, @remote_raphael = set_up_friends @local_luke, @local_leia, @remote_raphael = set_up_friends