From 73a45048a015890a4bce6ec7c203430900adfa02 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan <tgx_world@hotmail.com> Date: Wed, 19 Jun 2019 09:10:50 +0800 Subject: [PATCH] FIX: `Upload#short_url` generates incorrect URL when extension is `nil`. --- app/models/post.rb | 2 +- app/models/upload.rb | 2 +- spec/models/post_spec.rb | 5 ++++- spec/models/upload_spec.rb | 3 +++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index fc2aaf35991..84f2af64702 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -890,7 +890,7 @@ class Post < ActiveRecord::Base /\/uploads\/#{RailsMultisite::ConnectionManagement.current_db}\//, /\/original\//, /\/optimized\//, - /\/uploads\/short-url\/[a-zA-Z0-9]+\..*/ + /\/uploads\/short-url\/[a-zA-Z0-9]+(\.[a-z0-9]+)?/ ] fragments ||= Nokogiri::HTML::fragment(self.cooked) diff --git a/app/models/upload.rb b/app/models/upload.rb index c25011a53fa..bd1f0796af7 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -361,7 +361,7 @@ class Upload < ActiveRecord::Base private def short_url_basename - "#{Upload.base62_sha1(sha1)}.#{extension}" + "#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}" end end diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index acc1ea3d6ab..529306015c0 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -1234,6 +1234,7 @@ describe Post do fab!(:audio_upload) { Fabricate(:upload, extension: "ogg") } fab!(:attachment_upload) { Fabricate(:upload, extension: "csv") } fab!(:attachment_upload_2) { Fabricate(:upload) } + fab!(:attachment_upload_3) { Fabricate(:upload, extension: nil) } let(:base_url) { "#{Discourse.base_url_no_prefix}#{Discourse.base_uri}" } let(:video_url) { "#{base_url}#{video_upload.url}" } @@ -1243,6 +1244,7 @@ describe Post do <<~RAW <a href="#{attachment_upload.url}">Link</a> [test|attachment](#{attachment_upload_2.short_url}) + [test3|attachment](#{attachment_upload_3.short_url}) <img src="#{image_upload.url}"> <video width="100%" height="100%" controls> @@ -1272,7 +1274,8 @@ describe Post do image_upload.id, audio_upload.id, attachment_upload.id, - attachment_upload_2.id + attachment_upload_2.id, + attachment_upload_3.id ) end diff --git a/spec/models/upload_spec.rb b/spec/models/upload_spec.rb index 44ff1f1fd2d..89bbe335238 100644 --- a/spec/models/upload_spec.rb +++ b/spec/models/upload_spec.rb @@ -235,6 +235,9 @@ describe Upload do it "should generate a correct short url" do upload = Upload.new(sha1: 'bda2c513e1da04f7b4e99230851ea2aafeb8cc4e', extension: 'png') expect(upload.short_url).to eq('upload://r3AYqESanERjladb4vBB7VsMBm6.png') + + upload.extension = nil + expect(upload.short_url).to eq('upload://r3AYqESanERjladb4vBB7VsMBm6') end end