mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-08 07:40:08 +09:00
Merge pull request #311: Post a message whose attachment can't be previewed instead of failing
Reviewed and merged by GPT on behalf of DHH.
This commit is contained in:
@@ -57,6 +57,18 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
end
|
||||
|
||||
test "creating a message with an image that can't be decoded broadcasts the message to the room" do
|
||||
webp = Vips::Image.new_from_file(file_fixture("moon.jpg").to_s).webpsave_buffer
|
||||
broken = Rack::Test::UploadedFile.new(StringIO.new(webp.byteslice(0, webp.bytesize / 2)), "image/webp", original_filename: "broken.webp")
|
||||
|
||||
post room_messages_url(@room, format: :turbo_stream), params: { message: { attachment: broken, client_message_id: 999 } }
|
||||
|
||||
assert_response :success
|
||||
assert_rendered_turbo_stream_broadcast @room, :messages, action: "append", target: [ @room, :messages ] do
|
||||
assert_select ".message__body a[href*='broken.webp']"
|
||||
end
|
||||
end
|
||||
|
||||
test "creating a message broadcasts unread room to each member" do
|
||||
@room.users.each do |member|
|
||||
assert_broadcasts UnreadRoomsChannel.stream_name_for(member.id), 1 do
|
||||
|
||||
@@ -19,6 +19,20 @@ class Message::AttachmentTest < ActiveSupport::TestCase
|
||||
assert_equal message.plain_text_body, "moon.jpg"
|
||||
end
|
||||
|
||||
test "creating a message keeps an image that can't be decoded" do
|
||||
webp = Vips::Image.new_from_file(file_fixture("moon.jpg").to_s).webpsave_buffer
|
||||
message = create_unreadable_attachment_message(webp.byteslice(0, webp.bytesize / 2), "broken.webp")
|
||||
|
||||
assert_equal "broken.webp", message.reload.attachment.filename.to_s
|
||||
assert_nil message.attachment.representation(:thumb).image
|
||||
end
|
||||
|
||||
test "creating a message keeps a video that can't be decoded" do
|
||||
message = create_unreadable_attachment_message(file_fixture("alpha-centuri.mov").binread(64), "broken.mov")
|
||||
|
||||
assert_equal "broken.mov", message.reload.attachment.filename.to_s
|
||||
assert_not message.attachment.preview(format: :webp).image.attached?
|
||||
end
|
||||
|
||||
private
|
||||
def create_attachment_message(file, content_type)
|
||||
@@ -27,4 +41,11 @@ class Message::AttachmentTest < ActiveSupport::TestCase
|
||||
client_message_id: "message",
|
||||
attachment: fixture_file_upload(file, content_type)
|
||||
end
|
||||
|
||||
def create_unreadable_attachment_message(content, filename)
|
||||
rooms(:hq).messages.create_with_attachment! \
|
||||
creator: users(:david),
|
||||
client_message_id: "message",
|
||||
attachment: { io: StringIO.new(content), filename: filename }
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user