DG MS; added more specs for pubsub

This commit is contained in:
maxwell 2010-07-22 11:53:57 -07:00
parent 69477b17f5
commit a615853b07
2 changed files with 43 additions and 15 deletions

View file

@ -12,22 +12,22 @@ class MessageHandler
destinations.each{ |dest| @queue.push(Message.new(:get, dest))}
end
def add_subscription_request(feed_url)
@queue.push(Message.new(:ostatus_subscribe, feed_url))
end
def add_post_request(destinations, body)
b = CGI::escape( body )
destinations.each{|dest| @queue.push(Message.new(:post, dest, :body => b))}
end
def add_hub_notification(destination, feed_location)
@queue.push(Message.new(:hub_publish, destination, :body => feed_location))
# pubsubhubbub
def add_hub_notification(hub_url, feed_url)
@queue.push(Message.new(:hub_publish, hub_url, :body => feed_url))
end
def add_hub_subscription_request(hub, body)
@queue.push(Message.new(:hub_subscribe, hub, :body => body))
end
def add_subscription_request(feed)
@queue.push(Message.new(:ostatus_subscribe, feed))
def add_hub_subscription_request(hub_url, feed_url)
@queue.push(Message.new(:hub_subscribe, hub_url, :body => feed_url))
end
@ -42,7 +42,7 @@ class MessageHandler
case query.type
when :post
http = EventMachine::HttpRequest.new(query.destination).post :timeout => TIMEOUT, :body =>{:xml => query.body}
http.callback { puts query.destination; process; process}
http.callback { puts query.destination; process; process}
when :get
http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT
http.callback {send_to_seed(query, http.response); process}
@ -87,10 +87,7 @@ class MessageHandler
@type = type
@destination = dest
@body = opts[:body]
opts[:callback] ||= lambda{ process; process }
@callback = opts[:callback]
@callback = opts[:callback] ||= lambda{ process; process }
@try_count = 0
end
end

View file

@ -133,12 +133,25 @@ describe MessageHandler do
end
describe 'ostatus_subscribe' do
it 'should be able to add a GET query to the queue with required destinations' do
request = FakeHttpRequest.new(:success)
request.should_receive(:get).exactly(1).times.and_return(request)
request.stub!(:callback).and_return(true)
EventMachine::HttpRequest.stub!(:new).and_return(request)
EventMachine.run{
@handler.add_subscription_request("http://evan.status.net/")
@handler.size.should == 1
@handler.process
EventMachine.stop
}
end
end
describe 'hub_publish' do
it 'should correctly queue up a pubsubhub publish request' do
destination = "http://identi.ca/hub/"
feed_location = "http://google.com/"
@ -175,6 +188,24 @@ describe MessageHandler do
describe 'hub_subscribe' do
it 'should process an ostatus subscription' do
request = FakeHttpRequest.new(:success)
Diaspora::OStatusParser.stub!(:find_hub).and_return("http://hub.google.com")
MessageHandler.stub!(:add_hub_subscription_request).and_return(true)
Diaspora::OStatusParser.stub!(:parse_sender)
Diaspora::OStatusParser.should_receive(:find_hub)
@handler.should_receive(:add_hub_subscription_request)
Diaspora::OStatusParser.should_receive(:parse_sender)
g = mock("Message")
g.stub!(:destination).and_return("google")
@handler.process_ostatus_subscription(g, request)
end
end
end