User post now requires a :to field

This commit is contained in:
Raphael 2010-08-24 15:42:24 -07:00
parent 143db96d7e
commit 72c41a5ff8
10 changed files with 32 additions and 41 deletions

View file

@ -44,8 +44,12 @@ class User
def post(class_name, options = {})
options[:person] = self.person
group_ids = options[:group_ids]
options.delete(:group_ids)
group_ids = options[:to]
group_ids = [group_ids] unless group_ids.is_a? Array
return nil if group_ids.nil? || group_ids.empty?
group_ids.map!{|gid| ensure_bson gid }
options.delete(:to)
model_class = class_name.to_s.camelize.constantize
@ -54,7 +58,7 @@ class User
post.save
groups = self.groups.find_all_by_id(group_ids)
groups = self.groups.find_all_by_id( group_ids )
target_people = []
groups.each{ |group|
@ -63,7 +67,7 @@ class User
target_people = target_people | group.people
}
post.socket_to_uid(id, :group_ids => groups.map{|g| g.id}) if post.respond_to?(:socket_to_uid)
post.socket_to_uid(id, :group_ids => group_ids) if post.respond_to?(:socket_to_uid)
post.push_to( target_people )
self.raw_visible_posts << post

View file

@ -32,7 +32,6 @@ module Diaspora
module Socketable
def socket_to_uid(id, opts={})
puts "#{id}, #{self}, #{opts}"
SocketsController.new.outgoing(id, self, opts)
end

View file

@ -18,7 +18,7 @@ describe 'SocketsController' do
describe 'actionhash' do
before do
@message = @user.post :status_message, :message => "post through user for victory"
@message = @user.post :status_message, :message => "post through user for victory", :to => @user.group(:name => "losers").id
end
it 'should actionhash posts' do

View file

@ -11,7 +11,7 @@ include Salmon
describe Salmon do
it 'should verify the signature on a roundtrip' do
@user = Factory.create :user
@post = @user.post :status_message, :message => "hi"
@post = @user.post :status_message, :message => "hi", :to => @user.group(:name => "sdg").id
x = Salmon::SalmonSlap.create(@user, @post.to_diaspora_xml)
z = Salmon::SalmonSlap.parse x.to_xml
@ -29,7 +29,7 @@ describe Salmon do
it 'should return the data so it can be "received"' do
@user = Factory.create :user
@post = @user.post :status_message, :message => "hi"
@post = @user.post :status_message, :message => "hi", :to => @user.group(:name => "sdg").id
x = Salmon::SalmonSlap.create(@user, @post.to_diaspora_xml)
z = Salmon::SalmonSlap.parse x.to_xml

View file

@ -6,9 +6,8 @@ describe Diaspora do
describe Webhooks do
before do
@user = Factory.create(:user, :email => "bob@aol.com")
@user.person.save
@person = Factory.create(:person)
@user = Factory.create(:user, :email => "bob@aol.com")
@group = @user.group(:name => "losers")
end
describe "body" do
@ -22,7 +21,7 @@ describe Diaspora do
it "should send an owners post to their people" do
message_queue.should_receive :process
@user.post :status_message, :message => "hi"
@user.post :status_message, :message => "hi", :to => @group.id
end
it "should check that it does not send a person's post to an owners people" do
@ -30,16 +29,6 @@ describe Diaspora do
Factory.create(:status_message, :person => Factory.create(:person))
end
it "should ensure one url is created for every person" do
5.times {@user.friends << Factory.create(:person)}
@user.save
@post.person.owner.reload
@post.people_with_permissions.size.should == 5
end
end
end
end

View file

@ -70,7 +70,7 @@ describe Group do
it 'should add post to group via post method' do
group = @user.group(:name => 'losers', :people => [@friend])
status_message = @user.post( :status_message, :message => "hey", :group_ids => [group.id] )
status_message = @user.post( :status_message, :message => "hey", :to => group.id )
group.reload
group.posts.include?(status_message).should be true

View file

@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
describe Retraction do
before do
@user = Factory.create(:user)
@post = @user.post(:status_message, :message => "Destroy!")
@post = @user.post :status_message, :message => "Destroy!", :to => @user.group(:name => "losers").id
@person = Factory.create(:person)
@user.friends << @person
@user.save

View file

@ -8,12 +8,11 @@ describe User do
@user2 = Factory.create(:user)
@group2 = @user2.group(:name => 'losers')
#Factory.create :friend, @user
friend_users(@user, @group, @user2, @group2)
end
it 'should be able to parse and store a status message from xml' do
status_message = @user2.post :status_message, :message => 'store this!'
status_message = @user2.post :status_message, :message => 'store this!', :to => @group2.id
person = @user2.person
xml = status_message.to_diaspora_xml
@ -30,7 +29,7 @@ describe User do
num_groups = @user.groups.size
(0..5).each{ |n|
status_message = @user2.post :status_message, :message => "store this #{n}!"
status_message = @user2.post :status_message, :message => "store this #{n}!", :to => @group2.id
xml = status_message.to_diaspora_xml
@user.receive( xml )
}
@ -45,13 +44,13 @@ describe User do
end
it "should add the post to that user's posts when a user posts it" do
status_message = @user.post :status_message, :message => "hi"
status_message = @user.post :status_message, :message => "hi", :to => @group.id
@user.reload
@user.raw_visible_posts.include?(status_message).should be true
end
it 'should be removed on unfriending' do
status_message = @user2.post :status_message, :message => "hi"
status_message = @user2.post :status_message, :message => "hi", :to => @group2.id
@user.receive status_message.to_diaspora_xml
@user.reload
@ -66,7 +65,7 @@ describe User do
end
it 'should be remove a post if the noone links to it' do
status_message = @user2.post :status_message, :message => "hi"
status_message = @user2.post :status_message, :message => "hi", :to => @group2.id
@user.receive status_message.to_diaspora_xml
@user.reload
@ -83,7 +82,7 @@ describe User do
end
it 'should keep track of user references for one person ' do
status_message = @user2.post :status_message, :message => "hi"
status_message = @user2.post :status_message, :message => "hi", :to => @group2.id
@user.receive status_message.to_diaspora_xml
@user.reload
@ -107,7 +106,7 @@ describe User do
it 'should not override userrefs on receive by another person' do
@user3.activate_friend(@user2.person, @group3)
status_message = @user2.post :status_message, :message => "hi"
status_message = @user2.post :status_message, :message => "hi", :to => @group2.id
@user.receive status_message.to_diaspora_xml
@user3.receive status_message.to_diaspora_xml

View file

@ -21,9 +21,9 @@ describe User do
end
it 'should generate a valid stream for a group of people' do
status_message1 = @user2.post :status_message, :message => "hi"
status_message2 = @user3.post :status_message, :message => "heyyyy"
status_message3 = @user4.post :status_message, :message => "yooo"
status_message1 = @user2.post :status_message, :message => "hi", :to => @user2_group.id
status_message2 = @user3.post :status_message, :message => "heyyyy", :to => @user3_group.id
status_message3 = @user4.post :status_message, :message => "yooo", :to => @user4_group.id
@user.receive status_message1.to_diaspora_xml
@user.receive status_message2.to_diaspora_xml

View file

@ -62,14 +62,14 @@ describe 'user encryption' do
describe 'signing and verifying' do
it 'should sign a message on create' do
message = @user.post :status_message, :message => "hi"
message = @user.post :status_message, :message => "hi", :to => @group.id
message.signature_valid?.should be true
end
it 'should sign a retraction on create' do
unstub_mocha_stubs
message = @user.post :status_message, :message => "hi"
message = @user.post :status_message, :message => "hi", :to => @group.id
retraction = @user.retract(message)
@ -110,7 +110,7 @@ describe 'user encryption' do
describe 'sending and recieving signatures' do
it 'should contain the signature in the xml' do
message = @user.post :status_message, :message => "hi"
message = @user.post :status_message, :message => "hi", :to => @group.id
xml = message.to_xml.to_s
xml.include?(message.creator_signature).should be true
end
@ -118,7 +118,7 @@ describe 'user encryption' do
it 'A message with an invalid signature should be rejected' do
@user2 = Factory.create :user
message = @user2.post :status_message, :message => "hey"
message = @user2.post :status_message, :message => "hey", :to => @user2.group(:name => "bruisers").id
message.creator_signature = "totally valid"
message.save(:validate => false)
@ -135,7 +135,7 @@ describe 'user encryption' do
@remote_message = Factory.build(:status_message, :person => @person)
@remote_message.creator_signature = @remote_message.send(:sign_with_key,@person.encryption_key)
@remote_message.save
@message = @user.post :status_message, :message => "hi"
@message = @user.post :status_message, :message => "hi", :to => @group.id
end
it 'should attach the creator signature if the user is commenting' do
@user.comment "Yeah, it was great", :on => @remote_message
@ -143,7 +143,7 @@ describe 'user encryption' do
end
it 'should sign the comment if the user is the post creator' do
message = @user.post :status_message, :message => "hi"
message = @user.post :status_message, :message => "hi", :to => @group.id
@user.comment "Yeah, it was great", :on => message
message.comments.first.signature_valid?.should be true
message.comments.first.verify_post_creator_signature.should be true