Modify linkRegex to require http|https (#6171)
Modify the current linkRegex to require http|https which appears to be the intended behavior based on the comments. Right now, it also matches anything starting with www as well. Also add testing for linkRegexrelease/v1.15
parent
4b7237b63e
commit
4a2e92bcd1
|
@ -66,7 +66,7 @@ var (
|
||||||
|
|
||||||
// matches http/https links. used for autlinking those. partly modified from
|
// matches http/https links. used for autlinking those. partly modified from
|
||||||
// the original present in autolink.js
|
// the original present in autolink.js
|
||||||
linkRegex = regexp.MustCompile(`(?:(?:http|https):\/\/(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)(?:(?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+:=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?`)
|
linkRegex = regexp.MustCompile(`(?:(?:http|https):\/\/(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+(?:\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)(?:(?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+:=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// regexp for full links to issues/pulls
|
// regexp for full links to issues/pulls
|
||||||
|
|
|
@ -67,6 +67,68 @@ func TestMisc_IsSameDomain(t *testing.T) {
|
||||||
assert.False(t, IsSameDomain("favicon.ico"))
|
assert.False(t, IsSameDomain("favicon.ico"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRender_links(t *testing.T) {
|
||||||
|
setting.AppURL = AppURL
|
||||||
|
setting.AppSubURL = AppSubURL
|
||||||
|
|
||||||
|
test := func(input, expected string) {
|
||||||
|
buffer := RenderString("a.md", input, setting.AppSubURL, nil)
|
||||||
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer)))
|
||||||
|
}
|
||||||
|
// Text that should be turned into URL
|
||||||
|
|
||||||
|
test(
|
||||||
|
"https://www.example.com",
|
||||||
|
`<p><a href="https://www.example.com" rel="nofollow">https://www.example.com</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://www.example.com",
|
||||||
|
`<p><a href="http://www.example.com" rel="nofollow">http://www.example.com</a></p>`)
|
||||||
|
test(
|
||||||
|
"https://example.com",
|
||||||
|
`<p><a href="https://example.com" rel="nofollow">https://example.com</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://example.com",
|
||||||
|
`<p><a href="http://example.com" rel="nofollow">http://example.com</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://foo.com/blah_blah",
|
||||||
|
`<p><a href="http://foo.com/blah_blah" rel="nofollow">http://foo.com/blah_blah</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://foo.com/blah_blah/",
|
||||||
|
`<p><a href="http://foo.com/blah_blah/" rel="nofollow">http://foo.com/blah_blah/</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://www.example.com/wpstyle/?p=364",
|
||||||
|
`<p><a href="http://www.example.com/wpstyle/?p=364" rel="nofollow">http://www.example.com/wpstyle/?p=364</a></p>`)
|
||||||
|
test(
|
||||||
|
"https://www.example.com/foo/?bar=baz&inga=42&quux",
|
||||||
|
`<p><a href="https://www.example.com/foo/?bar=baz&inga=42&quux" rel="nofollow">https://www.example.com/foo/?bar=baz&inga=42&quux</a></p>`)
|
||||||
|
test(
|
||||||
|
"http://142.42.1.1/",
|
||||||
|
`<p><a href="http://142.42.1.1/" rel="nofollow">http://142.42.1.1/</a></p>`)
|
||||||
|
|
||||||
|
// Test that should *not* be turned into URL
|
||||||
|
test(
|
||||||
|
"www.example.com",
|
||||||
|
`<p>www.example.com</p>`)
|
||||||
|
test(
|
||||||
|
"example.com",
|
||||||
|
`<p>example.com</p>`)
|
||||||
|
test(
|
||||||
|
"test.example.com",
|
||||||
|
`<p>test.example.com</p>`)
|
||||||
|
test(
|
||||||
|
"http://",
|
||||||
|
`<p>http://</p>`)
|
||||||
|
test(
|
||||||
|
"https://",
|
||||||
|
`<p>https://</p>`)
|
||||||
|
test(
|
||||||
|
"://",
|
||||||
|
`<p>://</p>`)
|
||||||
|
test(
|
||||||
|
"www",
|
||||||
|
`<p>www</p>`)
|
||||||
|
}
|
||||||
|
|
||||||
func TestRender_ShortLinks(t *testing.T) {
|
func TestRender_ShortLinks(t *testing.T) {
|
||||||
setting.AppURL = AppURL
|
setting.AppURL = AppURL
|
||||||
setting.AppSubURL = AppSubURL
|
setting.AppSubURL = AppSubURL
|
||||||
|
|
Loading…
Reference in New Issue