require 'spec_helper' require 'models/concerns/liquid_interpolatable' describe Agents::PushbulletAgent do it_behaves_like LiquidInterpolatable before(:each) do @valid_params = { 'api_key' => 'token', 'device_id' => '124', 'body' => '{{body}}', 'title' => 'hello from huginn' } @checker = Agents::PushbulletAgent.new(:name => "somename", :options => @valid_params) @checker.user = users(:jane) @checker.save! @event = Event.new @event.agent = agents(:bob_weather_agent) @event.payload = { :body => 'One two test' } @event.save! end describe "validating" do before do @checker.should be_valid end it "should require the api_key" do @checker.options['api_key'] = nil @checker.should_not be_valid end it "should require the device_id" do @checker.options['device_id'] = nil @checker.should_not be_valid end end describe "helpers" do it "should return the query_options" do @checker.send(:query_options, @event).should == { :body => {:title => 'hello from huginn', :body => 'One two test', :device_iden => @checker.options[:device_id], :type => 'note'}, :basic_auth => {:username =>@checker.options[:api_key], :password=>''} } end end describe "#receive" do it "send a message to the hipchat" do stub_request(:post, "https://token:@api.pushbullet.com/api/pushes"). with(:body => "device_iden=124&title=hello%20from%20huginn&body=One%20two%20test&type=note"). to_return(:status => 200, :body => "ok", :headers => {}) dont_allow(@checker).error @checker.receive([@event]) end it "should log resquests which return an error" do stub_request(:post, "https://token:@api.pushbullet.com/api/pushes"). with(:body => "device_iden=124&title=hello%20from%20huginn&body=One%20two%20test&type=note"). to_return(:status => 200, :body => "error", :headers => {}) mock(@checker).error("error") @checker.receive([@event]) end end describe "#working?" do it "should not be working until the first event was received" do @checker.should_not be_working @checker.last_receive_at = Time.now @checker.should be_working end end end