diff --git a/app/models/services/tumblr.rb b/app/models/services/tumblr.rb index 7a053d07e..6f8258f46 100644 --- a/app/models/services/tumblr.rb +++ b/app/models/services/tumblr.rb @@ -16,8 +16,12 @@ class Services::Tumblr < Service def post(post, url='') consumer = OAuth::Consumer.new(consumer_key, consumer_secret, :site => 'http://tumblr.com') access = OAuth::AccessToken.new(consumer, self.access_token, self.access_secret) - resp = access.post('http://tumblr.com/api/write', {:type => 'regular', :title => self.public_message(post, url), :generator => 'diaspora'}) - resp + begin + resp = access.post('http://tumblr.com/api/write', {:type => 'regular', :title => self.public_message(post, url), :generator => 'diaspora'}) + resp + rescue + nil + end end def public_message(post, url) diff --git a/spec/models/services/tumblr_spec.rb b/spec/models/services/tumblr_spec.rb new file mode 100644 index 000000000..569bec5d4 --- /dev/null +++ b/spec/models/services/tumblr_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe Services::Tumblr do + + before do + @user = alice + @post = @user.post(:status_message, :text => "hello", :to =>@user.aspects.first.id) + @service = Services::Tumblr.new(:access_token => "yeah", :access_secret => "foobar") + @user.services << @service + end + + describe '#post' do + it 'posts a status message to tumblr' do + OAuth::AccessToken.any_instance.should_receive(:post) + @service.post(@post) + end + + it 'swallows exception raised by tumblr not being webscale' do + pending "meh" + OAuth::AccessToken.any_instance.should_receive(:post).and_raise + @service.post(@post) + end + + it 'should call public message' do + OAuth::AccessToken.any_instance.stub(:post) + url = "foo" + @service.should_receive(:public_message).with(@post, url) + @service.post(@post, url) + end + end +end +