diff --git a/app/controllers/messages/by_bots_controller.rb b/app/controllers/messages/by_bots_controller.rb index e7762e8..ec5d2b8 100644 --- a/app/controllers/messages/by_bots_controller.rb +++ b/app/controllers/messages/by_bots_controller.rb @@ -10,8 +10,13 @@ class Messages::ByBotsController < MessagesController end def create - super + set_room + @message = @room.messages.create_with_attachment!(message_params) + @message.broadcast_create + deliver_webhooks_to_bots head :created, location: message_url(@message) + rescue ActiveRecord::RecordNotFound + head :not_found end private diff --git a/test/controllers/messages/by_bots_controller_test.rb b/test/controllers/messages/by_bots_controller_test.rb index 3ef0b08..5a56b1d 100644 --- a/test/controllers/messages/by_bots_controller_test.rb +++ b/test/controllers/messages/by_bots_controller_test.rb @@ -93,7 +93,7 @@ class Messages::ByBotsControlleTest < ActionDispatch::IntegrationTest assert_response :redirect # Redirects to login end - test "index returns 404 for room bot is not a member of" do + test "index returns not_found for room bot is not a member of" do # bender bot is NOT a member of the designers room room_without_bot = rooms(:designers) get room_bot_messages_index_url(room_without_bot, users(:bender).bot_key) @@ -107,6 +107,15 @@ class Messages::ByBotsControlleTest < ActionDispatch::IntegrationTest assert_response :success end + test "create returns not_found for room bot is not a member of" do + # bender bot is NOT a member of the designers room - verify create matches index behavior + room_without_bot = rooms(:designers) + assert_no_difference -> { Message.count } do + post room_bot_messages_url(room_without_bot, users(:bender).bot_key), params: +"Hello!" + end + assert_response :not_found + end + test "regular messages index still denied for bots" do # The standard messages endpoint (not the bot-specific one) should still be forbidden get room_messages_url(@room, bot_key: users(:bender).bot_key)