Add JSON API for webhook deliveries (#2785)

* Add JSON API for webhook deliveries

* Extract sanitized_request method on Webhook::Delivery

* Extract response_summary method on Webhook::Delivery
This commit is contained in:
Rob Zolkos
2026-04-07 15:08:27 -04:00
committed by GitHub
parent f3bacffe2b
commit 21981898d2
9 changed files with 231 additions and 0 deletions
+39
View File
@@ -45,6 +45,45 @@ class Webhook::DeliveryTest < ActiveSupport::TestCase
assert_not delivery.succeeded?, "the response can't have an error"
end
test "sanitized_request strips signature header" do
delivery = webhook_deliveries(:successfully_completed)
delivery.update!(request: {
headers: {
"User-Agent" => "fizzy/1.0.0 Webhook",
"Content-Type" => "application/json",
"X-Webhook-Signature" => "super-secret-signature",
"X-Webhook-Timestamp" => "2025-12-05T19:36:35.401Z"
}
})
result = delivery.sanitized_request
assert_equal %w[ User-Agent Content-Type X-Webhook-Timestamp ], result[:headers].keys
assert_not result[:headers].key?("X-Webhook-Signature")
end
test "sanitized_request returns nil when request is blank" do
delivery = webhook_deliveries(:pending)
delivery.update_columns(request: nil)
assert_nil delivery.sanitized_request
end
test "response_summary returns code and error" do
delivery = webhook_deliveries(:successfully_completed)
delivery.update!(response: { code: 200, error: nil })
result = delivery.response_summary
assert_equal 200, result[:code]
assert_nil result[:error]
end
test "response_summary returns nil when response is blank" do
delivery = webhook_deliveries(:pending)
delivery.update_columns(response: nil)
assert_nil delivery.response_summary
end
test "deliver_later" do
delivery = webhook_deliveries(:pending)