diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 397d48999..efb413b32 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -12,7 +12,7 @@ module ApplicationHelper
#i need to check some sort of metadata field
- doc.xpath("//post").each do |post| #this is the post wrapper
+ doc.xpath("/XML/posts/post").each do |post| #this is the post wrapper
post.children.each do|type| #now the text of post itself is the type
#type object to xml is the the thing we want to from_xml
check_and_save_post(type)
diff --git a/lib/common.rb b/lib/common.rb
index 14714245c..8e34b4591 100644
--- a/lib/common.rb
+++ b/lib/common.rb
@@ -19,14 +19,28 @@ module Diaspora
end
def friends_with_permissions
- Friend.only(:url).map{|x| x = x.url + "/receive/"}
+ Friend.only(:url).map{|x| x = x.url + "receive/"}
end
def self.build_xml_for(posts)
- xml = ""
+ xml = ""
+ xml += Post.generate_header
+ xml += ""
posts.each {|x| xml << x.prep_webhook}
- xml = xml + ""
+ xml += ""
+ xml += ""
end
+
+
+ def self.generate_header
+ "
+
+ #{User.first.email}
+ #{User.first.email}
+
+ "
+ end
+
end
end
end
diff --git a/spec/helpers/parser_spec.rb b/spec/helpers/parser_spec.rb
index 978a5c83e..542a1aa0a 100644
--- a/spec/helpers/parser_spec.rb
+++ b/spec/helpers/parser_spec.rb
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
include ApplicationHelper
-describe DashboardHelper do
+describe ApplicationHelper do
before do
Factory.create(:user)
end
@@ -18,23 +18,24 @@ describe DashboardHelper do
end
it 'should discard posts where it does not know the type' do
- xml = "
+ xml = "\n Here is another message\n a@a.com\n a@a.com\n a@a.com\n\n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
- "
+ "
store_posts_from_xml(xml)
Post.count.should == 2
end
it 'should discard types which are not of type post' do
- xml = "
+ xml = "\n Here is another message\n a@a.com\n a@a.com\n a@a.com\n\n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
- "
+ "
store_posts_from_xml(xml)
Post.count.should == 2
end
end
+
diff --git a/spec/lib/common_spec.rb b/spec/lib/common_spec.rb
index 369143186..ec9433119 100644
--- a/spec/lib/common_spec.rb
+++ b/spec/lib/common_spec.rb
@@ -7,56 +7,89 @@ describe Diaspora do
describe Webhooks do
before do
- @user = Factory.create(:user)
- @post = Factory.create(:post)
+ Factory.create(:user, :email => "bob@aol.com")
end
- it "should add the following methods to Post on inclusion" do
- @post.respond_to?(:notify_friends).should be true
- @post.respond_to?(:prep_webhook).should be true
- @post.respond_to?(:friends_with_permissions).should be true
+ describe "header" do
+ before do
+ Factory.create(:status_message)
+ Factory.create(:bookmark)
+ stream = Post.stream
+ @xml = Post.build_xml_for(stream)
+ end
+
+ it "should generate" do
+ @xml.should include ""
+ @xml.should include ""
+ end
+
+ it "should provide a sender" do
+ @xml.should include ""
+ @xml.should include ""
+ end
+
+ it "should provide the owner's email" do
+ @xml.should include "bob@aol.com"
+ end
+
+ it "should provide the owner's url" do
+ pending "user does not have url field"
+ end
end
- it "should convert an object to a proper webhook" do
- @post.prep_webhook.should == "#{@post.to_xml.to_s}"
+ describe "body" do
+ before do
+ @post = Factory.create(:post)
+ end
+
+ it "should add the following methods to Post on inclusion" do
+ @post.respond_to?(:notify_friends).should be true
+ @post.respond_to?(:prep_webhook).should be true
+ @post.respond_to?(:friends_with_permissions).should be true
+ end
+
+ it "should convert an object to a proper webhook" do
+ @post.prep_webhook.should == "#{@post.to_xml.to_s}"
+ end
+
+ it "should retrieve all valid friend endpoints" do
+ Factory.create(:friend, :url => "http://www.bob.com/")
+ Factory.create(:friend, :url => "http://www.alice.com/")
+ Factory.create(:friend, :url => "http://www.jane.com/")
+
+ @post.friends_with_permissions.should include("http://www.bob.com/receive/")
+ @post.friends_with_permissions.should include("http://www.alice.com/receive/")
+ @post.friends_with_permissions.should include("http://www.jane.com/receive/")
+ end
+
+ it "should send an owners post to their friends" do
+ Post.stub(:build_xml_for).and_return(true)
+ Post.should_receive(:build_xml_for).and_return true
+ @post.save
+ end
+
+ it "should check that it does not send a friends post to an owners friends" do
+ Post.stub(:build_xml_for).and_return(true)
+ Post.should_not_receive(:build_xml_for)
+ Factory.create(:post, :owner => "nottheowner@post.com")
+ end
+
+ it "should ensure one url is created for every friend" do
+ 5.times {Factory.create(:friend)}
+ @post.friends_with_permissions.size.should == 5
+ end
+
+ it "should build an xml object containing multiple Post types" do
+ Factory.create(:status_message)
+ Factory.create(:bookmark)
+
+ stream = Post.stream
+ xml = Post.build_xml_for(stream)
+ xml.should include ""
+ xml.should include ""
+ end
end
- it "should retrieve all valid friend endpoints" do
- Factory.create(:friend, :url => "http://www.bob.com")
- Factory.create(:friend, :url => "http://www.alice.com")
- Factory.create(:friend, :url => "http://www.jane.com")
-
- @post.friends_with_permissions.should include("http://www.bob.com/receive/")
- @post.friends_with_permissions.should include("http://www.alice.com/receive/")
- @post.friends_with_permissions.should include("http://www.jane.com/receive/")
- end
-
- it "should send an owners post to their friends" do
- Post.stub(:build_xml_for).and_return(true)
- Post.should_receive(:build_xml_for).and_return true
- @post.save
- end
-
- it "should check that it does not send a friends post to an owners friends" do
- Post.stub(:build_xml_for).and_return(true)
- Post.should_not_receive(:build_xml_for)
- Factory.create(:post, :owner => "nottheowner@post.com")
- end
-
- it "should ensure one url is created for every friend" do
- 5.times {Factory.create(:friend)}
- @post.friends_with_permissions.size.should == 5
- end
-
- it "should build an xml object containing multiple Post types" do
- Factory.create(:status_message)
- Factory.create(:bookmark)
-
- stream = Post.stream
- xml = Post.build_xml_for(stream)
- xml.should include ""
- xml.should include ""
- end
end
end