Link hashtag bug (#121)

* link + hashtag bug

* remove printlns

* tidy up some duplicated code
This commit is contained in:
Tobi Smethurst
2021-07-29 13:18:22 +02:00
committed by GitHub
parent ea8ad8b346
commit a940a520d3
15 changed files with 349 additions and 97 deletions

View File

@@ -24,6 +24,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/text"
"github.com/superseriousbusiness/gotosocial/testrig"
)
const text1 = `
@@ -64,11 +65,40 @@ what happens when we already have a link within an href?
<a href="https://example.org">https://example.org</a>
`
type TextTestSuite struct {
suite.Suite
type LinkTestSuite struct {
TextStandardTestSuite
}
func (suite *TextTestSuite) TestParseURLsFromText1() {
func (suite *LinkTestSuite) SetupSuite() {
suite.testTokens = testrig.NewTestTokens()
suite.testClients = testrig.NewTestClients()
suite.testApplications = testrig.NewTestApplications()
suite.testUsers = testrig.NewTestUsers()
suite.testAccounts = testrig.NewTestAccounts()
suite.testAttachments = testrig.NewTestAttachments()
suite.testStatuses = testrig.NewTestStatuses()
suite.testTags = testrig.NewTestTags()
}
func (suite *LinkTestSuite) SetupTest() {
suite.config = testrig.NewTestConfig()
suite.db = testrig.NewTestDB()
suite.log = testrig.NewTestLog()
suite.formatter = text.NewFormatter(suite.config, suite.db, suite.log)
testrig.StandardDBSetup(suite.db)
}
func (suite *LinkTestSuite) TearDownTest() {
testrig.StandardDBTeardown(suite.db)
}
func (suite *LinkTestSuite) TestParseSimple() {
f := suite.formatter.FromPlain(simple, nil, nil)
assert.Equal(suite.T(), simpleExpected, f)
}
func (suite *LinkTestSuite) TestParseURLsFromText1() {
urls, err := text.FindLinks(text1)
assert.NoError(suite.T(), err)
@@ -79,7 +109,7 @@ func (suite *TextTestSuite) TestParseURLsFromText1() {
assert.Equal(suite.T(), "https://example.orghttps://google.com", urls[3].String())
}
func (suite *TextTestSuite) TestParseURLsFromText2() {
func (suite *LinkTestSuite) TestParseURLsFromText2() {
urls, err := text.FindLinks(text2)
assert.NoError(suite.T(), err)
@@ -87,7 +117,7 @@ func (suite *TextTestSuite) TestParseURLsFromText2() {
assert.Len(suite.T(), urls, 1)
}
func (suite *TextTestSuite) TestParseURLsFromText3() {
func (suite *LinkTestSuite) TestParseURLsFromText3() {
urls, err := text.FindLinks(text3)
assert.NoError(suite.T(), err)
@@ -95,8 +125,8 @@ func (suite *TextTestSuite) TestParseURLsFromText3() {
assert.Len(suite.T(), urls, 0)
}
func (suite *TextTestSuite) TestReplaceLinksFromText1() {
replaced := text.ReplaceLinks(text1)
func (suite *LinkTestSuite) TestReplaceLinksFromText1() {
replaced := suite.formatter.ReplaceLinks(text1)
assert.Equal(suite.T(), `
This is a text with some links in it. Here's link number one: <a href="https://example.org/link/to/something#fragment" rel="noopener">example.org/link/to/something#fragment</a>
@@ -110,8 +140,8 @@ really.cool.website <-- this one shouldn't be parsed as a link because it doesn'
`, replaced)
}
func (suite *TextTestSuite) TestReplaceLinksFromText2() {
replaced := text.ReplaceLinks(text2)
func (suite *LinkTestSuite) TestReplaceLinksFromText2() {
replaced := suite.formatter.ReplaceLinks(text2)
assert.Equal(suite.T(), `
this is one link: <a href="https://example.org" rel="noopener">example.org</a>
@@ -121,16 +151,16 @@ these should be deduplicated
`, replaced)
}
func (suite *TextTestSuite) TestReplaceLinksFromText3() {
func (suite *LinkTestSuite) TestReplaceLinksFromText3() {
// we know mailto links won't be replaced with hrefs -- we only accept https and http
replaced := text.ReplaceLinks(text3)
replaced := suite.formatter.ReplaceLinks(text3)
assert.Equal(suite.T(), `
here's a mailto link: mailto:whatever@test.org
`, replaced)
}
func (suite *TextTestSuite) TestReplaceLinksFromText4() {
replaced := text.ReplaceLinks(text4)
func (suite *LinkTestSuite) TestReplaceLinksFromText4() {
replaced := suite.formatter.ReplaceLinks(text4)
assert.Equal(suite.T(), `
two similar links:
@@ -140,9 +170,9 @@ two similar links:
`, replaced)
}
func (suite *TextTestSuite) TestReplaceLinksFromText5() {
func (suite *LinkTestSuite) TestReplaceLinksFromText5() {
// we know this one doesn't work properly, which is why html should always be sanitized before being passed into the ReplaceLinks function
replaced := text.ReplaceLinks(text5)
replaced := suite.formatter.ReplaceLinks(text5)
assert.Equal(suite.T(), `
what happens when we already have a link within an href?
@@ -150,6 +180,6 @@ what happens when we already have a link within an href?
`, replaced)
}
func TestTextTestSuite(t *testing.T) {
suite.Run(t, new(TextTestSuite))
func TestLinkTestSuite(t *testing.T) {
suite.Run(t, new(LinkTestSuite))
}