diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 128999d093c48b9e67f359df229f6e1e7fd00888..0582e457171edde1093345077081c6c5a3f794d1 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 f13576306475f4a346c07fc6fc9bc9cf60e59937..cbb913b23d4721c68f29c9f8526f240aca9a862c 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 40e31e257963f8783032a6ff3821941361f20601..b48a1c228b738166b403cf7cb7317c769088f3db 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 adc7addaa4f7a9a830856814a3e2f9e47f822f11..249552fd13d8c6f4dcaf6fd1d21cb883035fb660 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 2665a3693f3a532721f8773017448d02e639506f..e8b073aa622d60b5b5836e35b6088aea81401849 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 fcd46105986edbe00cfd3378578171c0bd34d255..6ade21ec74484602f8f5d5403908b065858747df 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 017d31a059904c083724dc3d0abeb4a8839a569b..0a2912d464a8ea03072692a56b9a20d1b11ff8b4 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 b404fe3fcf66a9e26d52d84cd6dec707fb393bff..265e44912d0d5fb020592f6efa9ad61b4e37b75c 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 17f11368cc1934d85d72610ef52698028ac40b9f..4bc54b4c9038b3bfa7beee6672ee5deb8fa3bc5c 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 6b1578e688b495ae92630cc17b1ac8d374023b16..91fdd5d9999d52939138a950b19b5ac423d2272a 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 553135b9672e972ceed22abebe9c2e809d498412..ba13f8fef0390d97db01e5806b7183098050117c 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 5dc7ca2c23ab6cecd7e36784667c72daf77bcfe8..7418cd4bb40e301ea6570e950d0968a1656ed919 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 6b57913d48278e2c13ca8b80ac9d086a3b18ade4..740d6fe6f4097841e47b77547b29c4772dbcd0e2 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 ea24f1bd7084478f214aec87ab8fbd2cc4a277a2..c7435cf03960610f0296aede1a710a2674a666f0 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