From 4350e1765674680f28ecd3799d99aac58e242a43 Mon Sep 17 00:00:00 2001 From: Raphael <raphael@joindiaspora.com> Date: Fri, 6 Aug 2010 16:01:39 -0700 Subject: [PATCH] RS, IZ; removed lots of putses, fixed up request, parser, retractions --- app/controllers/publics_controller.rb | 2 +- app/helpers/sockets_helper.rb | 5 ++-- app/models/comment.rb | 3 -- app/models/person.rb | 1 - app/models/request.rb | 9 ++++-- app/models/retraction.rb | 11 +++++-- app/models/user.rb | 21 +++++++------- lib/diaspora/parser.rb | 7 ++--- lib/message_handler.rb | 1 - spec/lib/diaspora_parser_spec.rb | 10 ++++--- spec/lib/message_handler_spec.rb | 1 - spec/models/comments_spec.rb | 1 - spec/models/photo_spec.rb | 1 - spec/models/user_spec.rb | 41 ++++++++++++++++++++++----- 14 files changed, 71 insertions(+), 43 deletions(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 128999d093..0582e45717 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -18,7 +18,7 @@ class PublicsController < ApplicationController end def receive - puts "SOMEONE JUST SENT ME: #{params[:xml]}" + Rails.logger.info "PublicsController has received: #{params[:xml]}" store_objects_from_xml params[:xml] render :nothing => true end diff --git a/app/helpers/sockets_helper.rb b/app/helpers/sockets_helper.rb index f135763064..cbb913b23d 100644 --- a/app/helpers/sockets_helper.rb +++ b/app/helpers/sockets_helper.rb @@ -13,9 +13,8 @@ module SocketsHelper begin v = render_to_string(:partial => type_partial(object), :locals => {:post => object}) unless object.is_a? Retraction rescue Exception => e - puts "web socket view rendering failed for some reason." + v.inspect - puts object.inspect - puts e.message + Rails.logger.error ("web socket view rendering failed for some reason." + v.inspect) + Rails.logger.error("Socketed object was #{object.inspect}") raise e end action_hash = {:class =>object.class.to_s.underscore.pluralize, :html => v, :post_id => obj_id(object)} diff --git a/app/models/comment.rb b/app/models/comment.rb index 40e31e2579..b48a1c228b 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -26,12 +26,10 @@ class Comment end def push_upstream - puts "Comment going upstream" push_to([post.person]) end def push_downstream - puts "Comment going downstream" push_to(post.people_with_permissions) end @@ -63,7 +61,6 @@ class Comment def verify_post_creator_signature unless person == User.owner - puts "verifying post creator sig from #{post.person.real_name}" verify_signature(post_creator_signature, post.person) else true diff --git a/app/models/person.rb b/app/models/person.rb index adc7addaa4..249552fd13 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -93,7 +93,6 @@ class Person ##profile def update_profile(params) if self.update_attributes(params) - puts self.profile.class self.profile.notify_people! true else diff --git a/app/models/request.rb b/app/models/request.rb index 2665a3693f..e8b073aa62 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -32,17 +32,20 @@ class Request person = options[:from] self.new(:destination_url => options[:to], :callback_url => person.url, :person => person, :exported_key => person.export_key) end + + def activate_friend from_user = Person.first(:url => self.callback_url).owner - puts from_user.inspect - from_user.friends << from_user.pending_friends.delete(person) + from_user.pending_friends.delete(person) + + from_user.friends << person + from_user.save end def set_pending_friend p = Person.first(:id => self.person.id) - puts p.inspect self.person.save #save pending friend end diff --git a/app/models/retraction.rb b/app/models/retraction.rb index fcd4610598..6ade21ec74 100644 --- a/app/models/retraction.rb +++ b/app/models/retraction.rb @@ -5,11 +5,15 @@ class Retraction def self.for(object) retraction = self.new - retraction.post_id= object.id + if object.is_a? User + retraction.post_id = object.person.id + retraction.type = object.person.class.to_s + else + retraction.post_id= object.id + retraction.type = object.class.to_s + end retraction.person_id = person_id_from(object) - retraction.type = object.class.to_s retraction - end xml_accessor :post_id @@ -23,6 +27,7 @@ class Retraction def perform begin return unless signature_valid? + Rails.logger.info("Retracting #{self.type} id: #{self.post_id}") self.type.constantize.destroy(self.post_id) rescue NameError Rails.logger.info("Retraction for unknown type recieved.") diff --git a/app/models/user.rb b/app/models/user.rb index 017d31a059..0a2912d464 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,7 +8,9 @@ class User key :pending_friend_ids, Array one :person, :class_name => 'Person', :foreign_key => :owner_id + many :friends, :in => :friend_ids, :class_name => 'Person' + many :pending_friends, :in => :pending_friend_ids, :class_name => 'Person' before_validation_on_create :assign_key before_validation :do_bad_things @@ -20,10 +22,6 @@ class User self.person.send(method, *args) end - def pending_friends - Person.all(:id => self.pending_friend_ids) - end - def real_name "#{person.profile.first_name.to_s} #{person.profile.last_name.to_s}" @@ -38,13 +36,15 @@ class User if p.save p.push_to_url friend_url end - p + p end end def accept_friend_request(friend_request_id) request = Request.where(:id => friend_request_id).first - request.activate_friend + pending_friends.delete(request.person) + friends << request.person + request.person = self request.exported_key = self.export_key request.destination_url = request.callback_url @@ -55,7 +55,8 @@ class User def ignore_friend_request(friend_request_id) request = Request.first(:id => friend_request_id) person = request.person - person.destroy unless self.friends.include? person + pending_friends.delete(request.person) + person.destroy unless person.user_refs > 0 request.destroy end @@ -65,12 +66,12 @@ class User friend_request.person.serialized_key = friend_request.exported_key if Request.where(:callback_url => friend_request.callback_url).first friend_request.activate_friend + Rails.logger.info("#{self.real_name}'s friend request has been accepted") friend_request.destroy else friend_request.person.save - - friend_request.create_pending_friend - + pending_friends << friend_request.person + Rails.logger.info("#{self.real_name} has received a friend request") friend_request.save end end diff --git a/lib/diaspora/parser.rb b/lib/diaspora/parser.rb index b404fe3fcf..265e44912d 100644 --- a/lib/diaspora/parser.rb +++ b/lib/diaspora/parser.rb @@ -23,13 +23,12 @@ module Diaspora begin object = post.name.camelize.constantize.from_xml post.to_s if object.is_a? Retraction - elsif object.respond_to? :person - object.person = parse_owner_from_xml post.to_s elsif object.is_a? Profile - puts "got into parse objects from xml PROFILE" person = parse_owner_id_from_xml post person.profile = object person.save + elsif object.respond_to? :person + object.person = parse_owner_from_xml post.to_s end objects << object rescue NameError => e @@ -48,7 +47,7 @@ module Diaspora objects.each do |p| Rails.logger.info("Receiving object:\n#{p.inspect}") if p.is_a? Retraction - puts "Got a retraction for #{p.post_id}" + Rails.logger.info "Got a retraction for #{p.post_id}" p.perform elsif p.is_a? Request User.owner.receive_friend_request(p) diff --git a/lib/message_handler.rb b/lib/message_handler.rb index 17f11368cc..4bc54b4c90 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -13,7 +13,6 @@ class MessageHandler end def add_post_request(destinations, body) - puts "sending to: #{destinations.inspect}" b = CGI::escape( body ) [*destinations].each{|dest| @queue.push(Message.new(:post, dest, :body => b))} end diff --git a/spec/lib/diaspora_parser_spec.rb b/spec/lib/diaspora_parser_spec.rb index 6b1578e688..91fdd5d999 100644 --- a/spec/lib/diaspora_parser_spec.rb +++ b/spec/lib/diaspora_parser_spec.rb @@ -105,7 +105,6 @@ describe Diaspora::Parser do message = Factory.create(:status_message, :person => person) retraction = Retraction.for(message) request = Post.build_xml_for( [retraction] ) - puts request StatusMessage.count.should == 1 store_objects_from_xml( request ) @@ -141,11 +140,14 @@ describe Diaspora::Parser do @person.destroy request_remote.destroy store_objects_from_xml(xml) - Person.first(:url => @person.url).active.should be true + new_person = Person.first(:url => @person.url) + new_person.nil?.should be false + @user.reload + @user.friends.include?(new_person).should be true end - it 'should marshal a retraction for a person' do + it 'should process retraction for a person' do retraction = Retraction.for(@user) request = Retraction.build_xml_for( [retraction] ) @@ -169,7 +171,7 @@ describe Diaspora::Parser do xml = Post.build_xml_for(person.profile) reloaded_person = Person.first(:id => id) reloaded_person.profile = nil - reloaded_person.profile.save + reloaded_person.save(:validate => false) #Make sure profile is cleared Person.first(:id => id).profile.should be nil diff --git a/spec/lib/message_handler_spec.rb b/spec/lib/message_handler_spec.rb index 553135b967..ba13f8fef0 100644 --- a/spec/lib/message_handler_spec.rb +++ b/spec/lib/message_handler_spec.rb @@ -138,7 +138,6 @@ class FakeHttpRequest @callback = callback_wanted end def response - "NOTE YOU ARE IN FAKE HTTP" end def post; end diff --git a/spec/models/comments_spec.rb b/spec/models/comments_spec.rb index 5dc7ca2c23..7418cd4bb4 100644 --- a/spec/models/comments_spec.rb +++ b/spec/models/comments_spec.rb @@ -46,7 +46,6 @@ describe Comment do it 'should send a user comment on his own post to lots of people' do allowed_urls = @user_status.people_with_permissions.map!{|x| x = x.url + "receive/"} - puts allowed_urls message_queue.should_receive(:add_post_request).with(allowed_urls, anything) @user.comment "yo", :on => @user_status end diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb index 6b57913d48..740d6fe6f4 100644 --- a/spec/models/photo_spec.rb +++ b/spec/models/photo_spec.rb @@ -59,7 +59,6 @@ describe Photo do it 'should not use the imported filename as the url' do @photo.image.store! File.open(@fixture_name) - puts @photo.image.url(:thumb_medium) @photo.image.url.include?(@fixture_filename).should be false @photo.image.url(:thumb_medium).include?("/" + @fixture_filename).should be false end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ea24f1bd70..c7435cf039 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,19 +1,18 @@ require File.dirname(__FILE__) + '/../spec_helper' describe User do + before do + @user = Factory.create(:user) + end it "should be a person" do n = Person.count Factory.create(:user) Person.count.should == n+1 end - + describe 'friend requesting' do - before do - @user = Factory.create(:user) - end - - it "should be able to accept a pending friend request" do + it "should be able to accept a pending friend request" do friend = Factory.create(:person) r = Request.instantiate(:to => @user.url, :from => friend) r.save @@ -50,6 +49,35 @@ describe User do @user.terse_url.should == 'example.com' end + it 'should get the pending friends' do + person_one = Factory.create :person + person_two = Factory.create :person + @user.pending_friends.empty?.should be true + @user.friends.empty?.should be true + + request = Request.instantiate(:to => @user.url, :from => person_one) + person_one.destroy + @user.receive_friend_request request + @user.pending_friends.size.should be 1 + @user.friends.size.should be 0 + + request_two = Request.instantiate(:to => @user.url, :from => person_two) + person_two.destroy + @user.receive_friend_request request_two + @user.pending_friends.size.should be 2 + @user.friends.size.should be 0 + + @user.accept_friend_request request.id + @user.pending_friends.size.should be 1 + @user.friends.size.should be 1 + + @user.ignore_friend_request request_two.id + @user.pending_friends.size.should be 0 + @user.friends.size.should be 1 + end + end + + describe 'profiles' do it 'should be able to update their profile and send it to their friends' do Factory.create(:person) @@ -61,5 +89,4 @@ describe User do @user.profile.image_url.should == "http://clown.com" end end - end -- GitLab