123456789101112131415161718192021222324252627282930313233343536373839 |
- require 'spec_helper'
- describe Agents::WebhookAgent do
- let(:agent) do
- _agent = Agents::WebhookAgent.new(:name => 'webhook',
- :options => { 'secret' => 'foobar', 'payload_path' => 'payload' })
- _agent.user = users(:bob)
- _agent.save!
- _agent
- end
- let(:payload) { {'some' => 'info'} }
- describe 'receive_web_request' do
- it 'should create event if secret matches' do
- out = nil
- expect {
- out = agent.receive_web_request({ 'secret' => 'foobar', 'payload' => payload }, "post", "text/html")
- }.to change { Event.count }.by(1)
- expect(out).to eq(['Event Created', 201])
- expect(Event.last.payload).to eq(payload)
- end
- it 'should not create event if secrets dont match' do
- out = nil
- expect {
- out = agent.receive_web_request({ 'secret' => 'bazbat', 'payload' => payload }, "post", "text/html")
- }.to change { Event.count }.by(0)
- expect(out).to eq(['Not Authorized', 401])
- end
- it "should only accept POSTs" do
- out = nil
- expect {
- out = agent.receive_web_request({ 'secret' => 'foobar', 'payload' => payload }, "get", "text/html")
- }.to change { Event.count }.by(0)
- expect(out).to eq(['Please use POST requests only', 401])
- end
- end
- end
|