Add JSON response format to webhooks (#2671)
* Add JSON response format to webhooks Support JSON responses for all webhook endpoints: index, show, create, update, destroy, and activation. Adds jbuilder views, updates controllers to use respond_to, and documents the API in docs/API.md. * Address PR review feedback - Use distinct board ID in API docs webhook example - Use render "webhooks/show" in activations controller for consistency * Address PR review feedback from flavorjones - Include webhook.board in cache key to avoid stale board data - Use _url instead of _path for location header consistency * Fix webhook create test to match Location header format Use board_webhook_url instead of board_webhook_path since the controller returns a full URL in the Location header. * Fix board ID in Location header example in API docs Use distinct board ID in the Location URL to match the JSON body example.
This commit is contained in:
@@ -32,4 +32,36 @@ class Webhooks::ActivationsControllerTest < ActionDispatch::IntegrationTest
|
||||
post board_webhook_activation_path(webhook.board, webhook)
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
test "create as JSON" do
|
||||
webhook = webhooks(:inactive)
|
||||
|
||||
assert_not webhook.active?
|
||||
|
||||
assert_changes -> { webhook.reload.active? }, from: false, to: true do
|
||||
post board_webhook_activation_path(webhook.board, webhook), as: :json
|
||||
end
|
||||
|
||||
assert_response :created
|
||||
assert_equal webhook.id, @response.parsed_body["id"]
|
||||
assert_equal true, @response.parsed_body["active"]
|
||||
end
|
||||
|
||||
test "cannot activate webhook on board without access as JSON" do
|
||||
logout_and_sign_in_as :jason
|
||||
webhook = webhooks(:inactive)
|
||||
|
||||
post board_webhook_activation_path(webhook.board, webhook), as: :json
|
||||
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
test "non-admin cannot activate webhook as JSON" do
|
||||
logout_and_sign_in_as :jz
|
||||
webhook = webhooks(:active)
|
||||
|
||||
post board_webhook_activation_path(webhook.board, webhook), as: :json
|
||||
|
||||
assert_response :forbidden
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user