mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Switch InlineUploads to a regexp based implementation.
This commit is contained in:
committed by
Guo Xiang Tan
parent
d93e5fb00d
commit
1991af2abb
@@ -54,6 +54,21 @@ RSpec.describe InlineUploads do
|
||||
expect(InlineUploads.process(md)).to eq(md)
|
||||
end
|
||||
|
||||
it "should not correct links in quotes" do
|
||||
post = Fabricate(:post)
|
||||
user = Fabricate(:user)
|
||||
|
||||
md = <<~MD
|
||||
[quote="#{user.username}, post:#{post.post_number}, topic:#{post.topic.id}"]
|
||||
some quote
|
||||
|
||||
#{Discourse.base_url}#{upload3.url}
|
||||
[/quote]
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(md)
|
||||
end
|
||||
|
||||
it "should correct bbcode img URLs to the short version" do
|
||||
md = <<~MD
|
||||
[img]#{upload.url}[/img]
|
||||
@@ -70,15 +85,29 @@ RSpec.describe InlineUploads do
|
||||
MD
|
||||
end
|
||||
|
||||
it "should correct raw image URLs to the short version" do
|
||||
md = <<~MD
|
||||
#{Discourse.base_url}#{upload3.url} #{Discourse.base_url}#{upload3.url}
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
 
|
||||
MD
|
||||
end
|
||||
|
||||
it "should correct image URLs to the short version" do
|
||||
md = <<~MD
|
||||

|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
<img src="#{Discourse.base_url}#{upload.url}" alt="some image">
|
||||
<img src="#{Discourse.base_url}#{upload.url}" alt="some image"><img src="#{Discourse.base_url}#{upload.url}" alt="some image">
|
||||

|
||||

|
||||
|
||||
<img src="#{Discourse.base_url}#{upload.url}" alt="some image" />
|
||||
<img src="#{Discourse.base_url}#{upload2.url}" alt="some image"><img src="#{Discourse.base_url}#{upload3.url}" alt="some image">
|
||||
|
||||
#{Discourse.base_url}#{upload3.url} #{Discourse.base_url}#{upload3.url}
|
||||
|
||||
<img src="#{upload.url}" width="5" height="4">
|
||||
MD
|
||||
@@ -86,25 +115,165 @@ RSpec.describe InlineUploads do
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||

|
||||
|
||||

|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
 
|
||||
|
||||

|
||||
MD
|
||||
end
|
||||
|
||||
it "should correct attachment URLS with an upload before" do
|
||||
it "should not be affected by an emoji" do
|
||||
CustomEmoji.create!(name: 'test', upload: upload3)
|
||||
Emoji.clear_cache
|
||||
|
||||
md = <<~MD
|
||||

|
||||
:test:
|
||||
|
||||

|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
:test:
|
||||
|
||||

|
||||
MD
|
||||
end
|
||||
|
||||
it "should correctly update image sources within anchor or paragraph tags" do
|
||||
md = <<~MD
|
||||
<a href="http://somelink.com">
|
||||
<img src="#{upload.url}" alt="test" width="500" height="500">
|
||||
</a>
|
||||
|
||||
<p>
|
||||
<img src="#{upload2.url}" alt="test">
|
||||
</p>
|
||||
|
||||
<a href="http://somelink.com"><img src="#{upload3.url}" alt="test" width="500" height="500"></a>
|
||||
|
||||
<a href="http://somelink.com"> <img src="#{upload.url}" alt="test" width="500" height="500"> </a>
|
||||
|
||||
<a href="http://somelink.com">
|
||||
|
||||
|
||||
<img src="#{upload.url}" alt="test" width="500" height="500">
|
||||
|
||||
</a>
|
||||
|
||||
<p>Test <img src="#{upload2.url}" alt="test" width="500" height="500"></p>
|
||||
|
||||
<hr/>
|
||||
<img src="#{upload2.url}" alt="test" width="500" height="500">
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
<a href="http://somelink.com">
|
||||
|
||||

|
||||
|
||||
</a>
|
||||
|
||||
<p>
|
||||
|
||||

|
||||
|
||||
</p>
|
||||
|
||||
<a href="http://somelink.com">
|
||||
|
||||

|
||||
|
||||
</a>
|
||||
|
||||
<a href="http://somelink.com">
|
||||
|
||||

|
||||
|
||||
</a>
|
||||
|
||||
<a href="http://somelink.com">
|
||||
|
||||
|
||||

|
||||
|
||||
</a>
|
||||
|
||||
<p>Test </p>
|
||||
|
||||
<hr/>
|
||||
|
||||

|
||||
MD
|
||||
end
|
||||
|
||||
it "should not be affected by fake HTML tags" do
|
||||
md = <<~MD
|
||||
```
|
||||
This is some <img src=" and <a href="
|
||||
```
|
||||
|
||||
<img src="#{upload.url}" alt="test">
|
||||
|
||||
> some quote
|
||||
|
||||
<a class="attachment" href="#{upload2.url}">test2</a>
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||

|
||||
```
|
||||
This is some <img src=" and <a href="
|
||||
```
|
||||
|
||||

|
||||
|
||||
> some quote
|
||||
|
||||
[test2|attachment](#{upload2.short_url})
|
||||
MD
|
||||
end
|
||||
|
||||
it "should not be affected by an external or invalid links" do
|
||||
md = <<~MD
|
||||
<a id="test">invalid</a>
|
||||
|
||||
[test]("https://this.is.some.external.link")
|
||||
|
||||
<a href="https://some.external.com/link">test</a>
|
||||
|
||||
<a class="attachment" href="#{upload2.url}">test2</a>
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
<a id="test">invalid</a>
|
||||
|
||||
[test]("https://this.is.some.external.link")
|
||||
|
||||
<a href="https://some.external.com/link">test</a>
|
||||
|
||||
[test2|attachment](#{upload2.short_url})
|
||||
MD
|
||||
end
|
||||
|
||||
it "should correct attachment URLS to the short version when raw contains inline image" do
|
||||
md = <<~MD
|
||||
 
|
||||
|
||||
[some complicated.doc %50](#{upload3.url})
|
||||
|
||||
<a class="attachment" href="#{upload2.url}">test2</a>
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
 
|
||||
|
||||
[some complicated.doc %50](#{upload3.short_url})
|
||||
|
||||
[test2|attachment](#{upload2.short_url})
|
||||
MD
|
||||
@@ -120,23 +289,23 @@ RSpec.describe InlineUploads do
|
||||
|
||||
</a>
|
||||
|
||||
- <a class="attachment" href="#{upload2.url}">test2</a>
|
||||
- <a class="attachment" href="#{upload.url}">test2</a>
|
||||
- <a class="attachment" href="#{upload2.url}">test2</a>
|
||||
- <a class="attachment" href="#{upload2.url}">test2</a>
|
||||
- <a class="attachment" href="#{upload3.url}">test2</a>
|
||||
|
||||
<a class="test attachment" href="#{upload3.url}">test3</a>
|
||||
<a class="test attachment" href="#{upload3.url}">test3</a><a class="test attachment" href="#{upload3.url}">test3</a>
|
||||
<a class="test attachment" href="#{upload.url}">test3</a>
|
||||
<a class="test attachment" href="#{upload2.url}">test3</a><a class="test attachment" href="#{upload3.url}">test3</a>
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
[this is some attachment|attachment](#{upload.short_url})
|
||||
|
||||
- [test2|attachment](#{upload2.short_url})
|
||||
- [test2|attachment](#{upload.short_url})
|
||||
- [test2|attachment](#{upload2.short_url})
|
||||
- [test2|attachment](#{upload2.short_url})
|
||||
- [test2|attachment](#{upload3.short_url})
|
||||
|
||||
[test3|attachment](#{upload3.short_url})
|
||||
[test3|attachment](#{upload3.short_url})[test3|attachment](#{upload3.short_url})
|
||||
[test3|attachment](#{upload.short_url})
|
||||
[test3|attachment](#{upload2.short_url})[test3|attachment](#{upload3.short_url})
|
||||
MD
|
||||
end
|
||||
|
||||
@@ -200,6 +369,7 @@ RSpec.describe InlineUploads do
|
||||
|
||||
describe "s3 uploads" do
|
||||
let(:upload) { Fabricate(:upload_s3) }
|
||||
let(:upload2) { Fabricate(:upload_s3) }
|
||||
|
||||
before do
|
||||
SiteSetting.enable_s3_uploads = true
|
||||
@@ -212,12 +382,12 @@ RSpec.describe InlineUploads do
|
||||
it "should correct image URLs to the short version" do
|
||||
md = <<~MD
|
||||
<img src="#{upload.url}" alt="some image">
|
||||
<img src="#{URI.join(SiteSetting.s3_cdn_url, URI.parse(upload.url).path).to_s}" alt="some image">
|
||||
<img src="#{URI.join(SiteSetting.s3_cdn_url, URI.parse(upload2.url).path).to_s}" alt="some image">
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||

|
||||

|
||||

|
||||
MD
|
||||
end
|
||||
|
||||
@@ -226,13 +396,19 @@ RSpec.describe InlineUploads do
|
||||
Rails.configuration.multisite = true
|
||||
|
||||
md = <<~MD
|
||||
https:#{upload2.url} https:#{upload2.url}
|
||||
#{URI.join(SiteSetting.s3_cdn_url, URI.parse(upload2.url).path).to_s}
|
||||
|
||||
<img src="#{upload.url}" alt="some image">
|
||||
<img src="#{URI.join(SiteSetting.s3_cdn_url, URI.parse(upload.url).path).to_s}" alt="some image">
|
||||
<img src="#{URI.join(SiteSetting.s3_cdn_url, URI.parse(upload2.url).path).to_s}" alt="some image">
|
||||
MD
|
||||
|
||||
expect(InlineUploads.process(md)).to eq(<<~MD)
|
||||
 
|
||||

|
||||
|
||||

|
||||

|
||||

|
||||
MD
|
||||
ensure
|
||||
Rails.configuration.multisite = false
|
||||
|
||||
Reference in New Issue
Block a user