From 87666eeb35337b9e925b7b45e5716f6dc4b0b431 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 27 Apr 2016 23:19:22 +0200 Subject: [PATCH] handle receive contact --- config/initializers/diaspora_federation.rb | 3 ++- lib/diaspora/federation/receive.rb | 12 +++++++++++ .../receive_federation_messages_spec.rb | 21 +++++++++---------- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/config/initializers/diaspora_federation.rb b/config/initializers/diaspora_federation.rb index 204d2983c..979f3250c 100644 --- a/config/initializers/diaspora_federation.rb +++ b/config/initializers/diaspora_federation.rb @@ -97,7 +97,8 @@ DiasporaFederation.configure do |config| when DiasporaFederation::Entities::Comment Diaspora::Federation::Receive.comment(entity) when DiasporaFederation::Entities::Contact - # TODO + Diaspora::Federation::Receive.contact(entity) + # TODO: post receive actions (auto-follow-back and fetch posts) when DiasporaFederation::Entities::Conversation Diaspora::Federation::Receive.conversation(entity) when DiasporaFederation::Entities::Like diff --git a/lib/diaspora/federation/receive.rb b/lib/diaspora/federation/receive.rb index e72c80a21..99f650e5f 100644 --- a/lib/diaspora/federation/receive.rb +++ b/lib/diaspora/federation/receive.rb @@ -21,6 +21,18 @@ module Diaspora end end + def self.contact(entity) + recipient = Person.find_by(diaspora_handle: entity.recipient).owner + contact = recipient.contacts.find_or_initialize_by(person_id: author_of(entity).id) + + return if contact.sharing + + contact.tap do |contact| + contact.sharing = true + contact.save! + end + end + def self.conversation(entity) Conversation.new( author: author_of(entity), diff --git a/spec/integration/federation/receive_federation_messages_spec.rb b/spec/integration/federation/receive_federation_messages_spec.rb index 8f0d92b6c..24fb115d6 100644 --- a/spec/integration/federation/receive_federation_messages_spec.rb +++ b/spec/integration/federation/receive_federation_messages_spec.rb @@ -81,11 +81,9 @@ describe "Receive federation messages feature" do let(:recipient) { alice } it "treats sharing request recive correctly" do - skip("TODO: handle contacts") # TODO + entity = FactoryGirl.build(:request_entity, author: sender_id, recipient: alice.diaspora_handle) - entity = FactoryGirl.build(:request_entity, recipient: alice.diaspora_handle) - - expect(Diaspora::Fetcher::Public).to receive(:queue_for).exactly(1).times + # TODO: expect(Diaspora::Fetcher::Public).to receive(:queue_for).exactly(1).times post_message(generate_xml(entity, sender, alice), alice) @@ -94,13 +92,14 @@ describe "Receive federation messages feature" do expect(new_contact).not_to be_nil expect(new_contact.sharing).to eq(true) - expect( - Notifications::StartedSharing.exists?( - recipient_id: alice.id, - target_type: "Person", - target_id: sender.person.id - ) - ).to be_truthy + # TODO: handle notifications + # expect( + # Notifications::StartedSharing.exists?( + # recipient_id: alice.id, + # target_type: "Person", + # target_id: sender.person.id + # ) + # ).to be_truthy end context "with sharing" do