From cdf721a273de89e3831c196bb0a1443531ca6a38 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 21 May 2026 17:46:10 +0200 Subject: [PATCH] Fix remote statuses with large media descriptions being rejected (#39135) --- app/models/media_attachment.rb | 2 +- spec/lib/activitypub/activity/create_spec.rb | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index ecfaca9de40..1a65a447529 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -205,7 +205,7 @@ class MediaAttachment < ApplicationRecord remotable_attachment :thumbnail, IMAGE_LIMIT, suppress_errors: true, download_on_assign: false validates :account, presence: true - validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH } + validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH }, if: :local? validates :file, presence: true, if: :local? validates :thumbnail, absence: true, if: -> { local? && !audio_or_video? } diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 8dc6d9d4254..c68e9bd64a7 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -608,19 +608,19 @@ RSpec.describe ActivityPub::Activity::Create do type: 'Document', mediaType: 'image/png', url: 'http://example.com/attachment.png', - name: '*' * MediaAttachment::MAX_DESCRIPTION_LENGTH, + name: '*' * (MediaAttachment::MAX_DESCRIPTION_HARD_LENGTH_LIMIT + 5), }, ] ) end - it 'creates status' do + it 'creates status with truncated description' do expect { subject.perform }.to change(sender.statuses, :count).by(1) status = sender.statuses.first expect(status).to_not be_nil - expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_LENGTH) + expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_HARD_LENGTH_LIMIT) end end @@ -632,19 +632,19 @@ RSpec.describe ActivityPub::Activity::Create do type: 'Document', mediaType: 'image/png', url: 'http://example.com/attachment.png', - summary: '*' * MediaAttachment::MAX_DESCRIPTION_LENGTH, + summary: '*' * (MediaAttachment::MAX_DESCRIPTION_HARD_LENGTH_LIMIT + 5), }, ] ) end - it 'creates status' do + it 'creates status with truncated description' do expect { subject.perform }.to change(sender.statuses, :count).by(1) status = sender.statuses.first expect(status).to_not be_nil - expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_LENGTH) + expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_HARD_LENGTH_LIMIT) end end