mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Post#each_upload_url
yields incorrect path to block when CDN is enabled.
This commit is contained in:
parent
43365a2bf1
commit
8a6ee09008
@ -905,7 +905,7 @@ class Post < ActiveRecord::Base
|
|||||||
next unless Discourse.store.has_been_uploaded?(src) || (include_local_upload && src =~ /\A\/[^\/]/i)
|
next unless Discourse.store.has_been_uploaded?(src) || (include_local_upload && src =~ /\A\/[^\/]/i)
|
||||||
|
|
||||||
path = begin
|
path = begin
|
||||||
URI(URI.unescape(src))&.path
|
URI(URI.unescape(GlobalSetting.cdn_url ? src.sub(GlobalSetting.cdn_url, "") : src))&.path
|
||||||
rescue URI::Error
|
rescue URI::Error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1361,15 +1361,42 @@ describe Post do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe '#each_upload_url' do
|
describe '#each_upload_url' do
|
||||||
let(:upload) { Fabricate(:upload_s3) }
|
|
||||||
|
|
||||||
it "correctly identifies all upload urls" do
|
it "correctly identifies all upload urls" do
|
||||||
urls = []
|
|
||||||
upload1 = Fabricate(:upload)
|
upload1 = Fabricate(:upload)
|
||||||
upload2 = Fabricate(:upload)
|
upload2 = Fabricate(:upload)
|
||||||
post = Fabricate(:post, raw: "A post with image and link upload.\n\n\n\n<a href='#{upload2.url}'>Link to upload</a>\n")
|
|
||||||
post.each_upload_url { |src, _, _| urls << src }
|
set_cdn_url "https://awesome.com/somepath"
|
||||||
expect(urls).to eq([upload1.url, upload2.url])
|
|
||||||
|
post = Fabricate(:post, raw: <<~RAW)
|
||||||
|
A post with image and link upload.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
"#{GlobalSetting.cdn_url}#{upload1.url}"
|
||||||
|
|
||||||
|
<a href='#{Discourse.base_url}#{upload2.url}'>Link to upload</a>
|
||||||
|

|
||||||
|
RAW
|
||||||
|
|
||||||
|
urls = []
|
||||||
|
paths = []
|
||||||
|
|
||||||
|
post.each_upload_url do |src, path, _|
|
||||||
|
urls << src
|
||||||
|
paths << path
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(urls).to contain_exactly(
|
||||||
|
upload1.url,
|
||||||
|
"#{GlobalSetting.cdn_url}#{upload1.url}",
|
||||||
|
"#{Discourse.base_url}#{upload2.url}"
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(paths).to contain_exactly(
|
||||||
|
upload1.url,
|
||||||
|
upload1.url,
|
||||||
|
upload2.url
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should skip external urls with upload url in query string" do
|
it "should skip external urls with upload url in query string" do
|
||||||
|
Loading…
Reference in New Issue
Block a user