From 417fed38413fe77ec2bd06f3cd1e336c2c72df15 Mon Sep 17 00:00:00 2001 From: danielvincent <danielgrippi@gmail.com> Date: Wed, 7 Jul 2010 17:47:09 -0700 Subject: [PATCH] DG IZ; fixed person requesting (friend requests). --- app/models/person_request.rb | 26 ++++++++++-------------- lib/common.rb | 16 ++------------- spec/lib/parser_spec.rb | 32 ++++++++++-------------------- spec/models/person_request_spec.rb | 14 ++++++------- 4 files changed, 30 insertions(+), 58 deletions(-) diff --git a/app/models/person_request.rb b/app/models/person_request.rb index d3c9562b97..e240216e14 100644 --- a/app/models/person_request.rb +++ b/app/models/person_request.rb @@ -1,30 +1,26 @@ class PersonRequest include MongoMapper::Document include Diaspora::Webhooks + include ROXML - key :url, String + xml_name :person_request + + xml_accessor :_id + xml_accessor :person, :as => Person - attr_accessor :sender + key :url, String + key :person, Person validates_presence_of :url before_save :check_for_person_requests - def to_person_xml - person = Person.new - person.email = sender.email - person.url = sender.url - person.profile = sender.profile.clone - - person.to_xml - end - def self.for(url) - person_request = PersonRequest.new(:url => url) - person_request.sender = User.first - person_request.save + request = PersonRequest.new(:url => url) + request.person = User.first + request.save - person_request.push_person_request_to_url(person_request.url) + request.push_to([request]) end def check_for_person_requests diff --git a/lib/common.rb b/lib/common.rb index 699f5f4437..537c50c0e6 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -33,11 +33,12 @@ module Diaspora objects.each do |p| if p.is_a? Retraction p.perform - elsif p.is_a? Person + elsif p.is_a? PersonRequest if PersonRequest.where(:url => p.url).first p.active = true end p.save + p.person.save #This line checks if the sender was in the database, among other things? elsif p.respond_to?(:person) && !(p.person.nil?) && !(p.person.is_a? User) #WTF p.save @@ -68,19 +69,6 @@ module Diaspora end end - def push_person_request_to_url(url) - if url - url = url + "receive/" - xml = "<XML> - <posts><post> - #{self.to_person_xml.to_s} - </post></posts> - </XML>" - @@queue.add_post_request( [url], xml ) - @@queue.process - end - end - def prep_webhook "<post>#{self.to_xml.to_s}</post>" end diff --git a/spec/lib/parser_spec.rb b/spec/lib/parser_spec.rb index 4bde168d2f..95ed70894e 100644 --- a/spec/lib/parser_spec.rb +++ b/spec/lib/parser_spec.rb @@ -111,13 +111,10 @@ describe "parser in application helper" do end it "should create a new person upon getting a person request" do - person_request = PersonRequest.new(:url => "http://www.googles.com/") - person_request.sender = @person - xml = "<XML> - <posts><post> - #{person_request.to_person_xml.to_s} - </post></posts> - </XML>" + request = PersonRequest.new(:url => "http://www.googles.com/") + request.person = @person + + xml = Post.build_xml_for [request] @person.destroy @user.destroy @@ -127,22 +124,13 @@ describe "parser in application helper" do end it "should activate the Person if I initiated a request to that url" do - person_request = PersonRequest.create(:url => @person.url, :sender => @user) - - person_request_remote = PersonRequest.new(:url => "http://www.yahoo.com/") - person_request_remote.sender = @person.clone - xml = "<XML> - <posts><post> - #{person_request_remote.to_person_xml.to_s} - </post></posts> - </XML>" + request = PersonRequest.create(:url => @person.url, :person => @user) + request_remote = PersonRequest.new(:url => "http://www.yahoo.com/") + request_remote.person = @person.clone - @person.destroy - @user.destroy - Person.count.should be 0 - store_objects_from_xml(xml) - Person.count.should be 1 - Person.first.active.should be true + xml = Post.build_xml_for [request_remote] + + Person.where(:url => @person.url).first.active.should be true end end diff --git a/spec/models/person_request_spec.rb b/spec/models/person_request_spec.rb index 78b45b5f32..e23b5de644 100644 --- a/spec/models/person_request_spec.rb +++ b/spec/models/person_request_spec.rb @@ -10,14 +10,14 @@ describe PersonRequest do end it 'should generate xml for the User as a Person' do - person_request = PersonRequest.new(:url => "http://www.google.com") user = Factory.create(:user) - person_request.sender = user - person_xml = person_request.to_person_xml.to_s - person_xml.include?(user.email).should be true - person_xml.include?(user.url).should be true - person_xml.include?(user.profile.first_name).should be true - person_xml.include?(user.profile.last_name).should be true + request = PersonRequest.new(:url => "http://www.google.com/", :person => user) + + xml = request.to_xml.to_s + xml.include?(user.email).should be true + xml.include?(user.url).should be true + xml.include?(user.profile.first_name).should be true + xml.include?(user.profile.last_name).should be true end it 'should be sent to the url upon for action' do -- GitLab