require "test_helper" class Webhooks::ActivationsControllerTest < ActionDispatch::IntegrationTest setup do sign_in_as :kevin end test "create" 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) end assert_redirected_to board_webhook_path(webhook.board, webhook) end test "cannot activate webhook on board without access" do logout_and_sign_in_as :jason webhook = webhooks(:inactive) # on private board, jason has no access post board_webhook_activation_path(webhook.board, webhook) assert_response :not_found end test "non-admin cannot activate webhook" do logout_and_sign_in_as :jz # member with writebook access, but not admin webhook = webhooks(:active) # on writebook board 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