diff --git a/app/models/comment.rb b/app/models/comment.rb index 0f3fec09a..21faf3994 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -75,13 +75,17 @@ class Comment < ActiveRecord::Base self.post = parent end + def text= text + self[:text] = text.to_s.strip #to_s if for nil, for whatever reason + end + class Generator < Federated::Generator def self.federated_class Comment end def initialize(person, target, text) - @text = text.strip # remove leading and trailing whitespace now, otherwise it can cause signature issues + @text = text super(person, target) end diff --git a/spec/integration/receiving_spec.rb b/spec/integration/receiving_spec.rb index 3a3ac786c..cd55695d0 100644 --- a/spec/integration/receiving_spec.rb +++ b/spec/integration/receiving_spec.rb @@ -183,12 +183,28 @@ describe 'a user receives a post' do receive_with_zord(eve, alice.person, xml) comment = eve.comment!(@post, 'tada') + # Note: eve.comment! has already initialized comment.parent_author_signature. Writing to it again + # here causes the test to be different than the way the system actually runs comment.parent_author_signature = comment.sign_with_key(alice.encryption_key) @xml = comment.to_diaspora_xml comment.delete + + comment_with_whitespace = alice.comment!(@post, ' I cannot lift my thumb from the spacebar ') + @xml_with_whitespace = comment_with_whitespace.to_diaspora_xml + @guid_with_whitespace = comment_with_whitespace.guid + comment_with_whitespace.delete end end + it 'should receive a relayed comment with leading whitespace' do + eve.reload.visible_shareables(Post).size.should == 1 + post_in_db = StatusMessage.find(@post.id) + post_in_db.comments.should == [] + receive_with_zord(eve, alice.person, @xml_with_whitespace) + + post_in_db.comments(true).first.guid.should == @guid_with_whitespace + end + it 'should correctly attach the user already on the pod' do bob.reload.visible_shareables(Post).size.should == 1 post_in_db = StatusMessage.find(@post.id)