Update with feedback

This commit is contained in:
Justin Hammond 2018-12-17 15:24:32 +08:00
parent 8370c87db1
commit 9ac1a8c558
2 changed files with 7 additions and 9 deletions

7
app/models/agents/webhook_agent.rb Normal file → Executable file
View file

@ -90,16 +90,15 @@ module Agents
JSON.parse(response.body)['success'] or
return ["Not Authorized", 401]
end
[payload_for(params)].flatten.each do |payload|
if interpolated['header_key'].presence
acceptedheaders = (interpolated['headers']).split(/,/).map { |x| x.strip }.select
if interpolated['header_key'].present?
acceptedheaders = interpolated['headers'].split(/,/).map { |x| x.strip }
payload[interpolated['header_key']] = headers.slice(*acceptedheaders)
end
create_event(payload: payload)
end
if interpolated['response_headers'].presence
[interpolated(params)['response'] || 'Event Created', code, "text/plain", interpolated['response_headers'].presence]
else

9
spec/models/agents/webhook_agent_spec.rb Normal file → Executable file
View file

@ -24,7 +24,7 @@ describe Agents::WebhookAgent do
out = agent.receive_web_request(webpayload)
}.to change { Event.count }.by(1)
expect(out).to eq(['Event Created', 201])
expect(Event.last.payload).to eq(payload)
expect(Event.last.payload).to eq( {"people"=>[{"name"=>"bob"}, {"name"=>"jon"}], "X-HTTP-HEADERS"=>{"HTTP_ACCEPT"=>"application/xml", "HTTP_X_HELLO_WORLD"=>"Hello Huginn"}})
end
it 'should be able to create multiple events when given an array' do
@ -40,7 +40,7 @@ describe Agents::WebhookAgent do
out = agent.receive_web_request(webpayload)
}.to change { Event.count }.by(2)
expect(out).to eq(['Event Created', 201])
expect(Event.last.payload).to eq({ 'name' => 'jon' })
expect(Event.last.payload).to eq({"name"=>"jon", "X-HTTP-HEADERS"=>{"HTTP_ACCEPT"=>"application/xml", "HTTP_X_HELLO_WORLD"=>"Hello Huginn"}})
end
it 'should not create event if secrets do not match' do
@ -490,9 +490,8 @@ describe Agents::WebhookAgent do
out = nil
stub_request(:any, /verify/).to_return { |request|
puts gotrequest
checked = true
{ status: 200, body: '{"success":false}' }
{ status: 200, body: '{"success":false}' }
}
expect {
out = agent.receive_web_request(webpayload)
@ -543,7 +542,7 @@ describe Agents::WebhookAgent do
out = nil
expect {
out= agent.receive_web_request(webpayload)
out = agent.receive_web_request(webpayload)
}.to change { Event.count }.by(1)
expect(out).to eq(['Event Created', 201])
expect(Event.last.payload).to eq(payload)