webhook_agent_spec.rb 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. require 'spec_helper'
  2. describe Agents::WebhookAgent do
  3. let(:agent) do
  4. _agent = Agents::WebhookAgent.new(:name => 'webhook',
  5. :options => { 'secret' => 'foobar', 'payload_path' => 'payload' })
  6. _agent.user = users(:bob)
  7. _agent.save!
  8. _agent
  9. end
  10. let(:payload) { {'some' => 'info'} }
  11. describe 'receive_web_request' do
  12. it 'should create event if secret matches' do
  13. out = nil
  14. lambda {
  15. out = agent.receive_web_request({ 'secret' => 'foobar', 'payload' => payload }, "post", "text/html")
  16. }.should change { Event.count }.by(1)
  17. out.should eq(['Event Created', 201])
  18. Event.last.payload.should eq(payload)
  19. end
  20. it 'should not create event if secrets dont match' do
  21. out = nil
  22. lambda {
  23. out = agent.receive_web_request({ 'secret' => 'bazbat', 'payload' => payload }, "post", "text/html")
  24. }.should change { Event.count }.by(0)
  25. out.should eq(['Not Authorized', 401])
  26. end
  27. it "should only accept POSTs" do
  28. out = nil
  29. lambda {
  30. out = agent.receive_web_request({ 'secret' => 'foobar', 'payload' => payload }, "get", "text/html")
  31. }.should change { Event.count }.by(0)
  32. out.should eq(['Please use POST requests only', 401])
  33. end
  34. end
  35. end