From c84384e6608368a13a774d6d33a8cc32da7cf209 Mon Sep 17 00:00:00 2001
From: tobi <31960611+tsmethurst@users.noreply.github.com>
Date: Tue, 19 Jul 2022 15:21:17 +0200
Subject: [bugfix] html escape special characters in text instead of totally
 removing them (#719)
* remove minify dependency
* tidy up some tests
* remove pre + postformat funcs
* rework sanitization + formatting
* update tests
* add some more markdown tests
---
 internal/processing/account/update_test.go |  13 ++--
 internal/processing/status/util_test.go    | 120 +++++++++++++----------------
 2 files changed, 58 insertions(+), 75 deletions(-)
(limited to 'internal/processing')
diff --git a/internal/processing/account/update_test.go b/internal/processing/account/update_test.go
index 582dc82e9..7e4ca818e 100644
--- a/internal/processing/account/update_test.go
+++ b/internal/processing/account/update_test.go
@@ -73,13 +73,12 @@ func (suite *AccountUpdateTestSuite) TestAccountUpdateSimple() {
 func (suite *AccountUpdateTestSuite) TestAccountUpdateWithMention() {
 	testAccount := suite.testAccounts["local_account_1"]
 
-	locked := true
-	displayName := "new display name"
-	note := `#hello here i am!
-
-go check out @1happyturtle, they have a cool account!
-`
-	noteExpected := `
#hello here i am!
go check out @1happyturtle, they have a cool account!
`
+	var (
+		locked       = true
+		displayName  = "new display name"
+		note         = "#hello here i am!\n\ngo check out @1happyturtle, they have a cool account!\n"
+		noteExpected = "#hello here i am!
go check out @1happyturtle, they have a cool account!
"
+	)
 
 	form := &apimodel.UpdateCredentialsRequest{
 		DisplayName: &displayName,
diff --git a/internal/processing/status/util_test.go b/internal/processing/status/util_test.go
index f1b826bd0..6f551d63d 100644
--- a/internal/processing/status/util_test.go
+++ b/internal/processing/status/util_test.go
@@ -23,31 +23,20 @@ import (
 	"fmt"
 	"testing"
 
-	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
 	"github.com/superseriousbusiness/gotosocial/internal/api/model"
 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
 )
 
-const statusText1 = `Another test @foss_satan@fossbros-anonymous.io
-
-#Hashtag
-
-Text`
-
 const (
-	statusText1ExpectedFull    = "Another test @foss_satan
#Hashtag
Text
"
-	statusText1ExpectedPartial = "Another test @foss_satan
#Hashtag
Text
"
+	statusText1                = "Another test @foss_satan@fossbros-anonymous.io\n\n#Hashtag\n\nText"
+	statusText1ExpectedFull    = "Another test @foss_satan
#Hashtag
Text
"
+	statusText1ExpectedPartial = "Another test @foss_satan
#Hashtag
Text
"
+	statusText2                = "Another test @foss_satan@fossbros-anonymous.io\n\n#Hashtag\n\n#hashTAG"
+	status2TextExpectedFull    = "Another test @foss_satan
#Hashtag
#hashTAG
"
+	status2TextExpectedPartial = "Another test @foss_satan
#Hashtag
#hashTAG
"
 )
 
-const statusText2 = `Another test @foss_satan@fossbros-anonymous.io
-
-#Hashtag
-
-#hashTAG`
-
-const status2TextExpectedFull = "Another test @foss_satan
#Hashtag
#hashTAG
"
-
 type UtilTestSuite struct {
 	StatusStandardTestSuite
 }
@@ -82,21 +71,21 @@ func (suite *UtilTestSuite) TestProcessMentions1() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
+	suite.NoError(err)
 
-	assert.Len(suite.T(), status.Mentions, 1)
+	suite.Len(status.Mentions, 1)
 	newMention := status.Mentions[0]
-	assert.Equal(suite.T(), mentionedAccount.ID, newMention.TargetAccountID)
-	assert.Equal(suite.T(), creatingAccount.ID, newMention.OriginAccountID)
-	assert.Equal(suite.T(), creatingAccount.URI, newMention.OriginAccountURI)
-	assert.Equal(suite.T(), status.ID, newMention.StatusID)
-	assert.Equal(suite.T(), fmt.Sprintf("@%s@%s", mentionedAccount.Username, mentionedAccount.Domain), newMention.NameString)
-	assert.Equal(suite.T(), mentionedAccount.URI, newMention.TargetAccountURI)
-	assert.Equal(suite.T(), mentionedAccount.URL, newMention.TargetAccountURL)
-	assert.NotNil(suite.T(), newMention.OriginAccount)
-
-	assert.Len(suite.T(), status.MentionIDs, 1)
-	assert.Equal(suite.T(), newMention.ID, status.MentionIDs[0])
+	suite.Equal(mentionedAccount.ID, newMention.TargetAccountID)
+	suite.Equal(creatingAccount.ID, newMention.OriginAccountID)
+	suite.Equal(creatingAccount.URI, newMention.OriginAccountURI)
+	suite.Equal(status.ID, newMention.StatusID)
+	suite.Equal(fmt.Sprintf("@%s@%s", mentionedAccount.Username, mentionedAccount.Domain), newMention.NameString)
+	suite.Equal(mentionedAccount.URI, newMention.TargetAccountURI)
+	suite.Equal(mentionedAccount.URL, newMention.TargetAccountURL)
+	suite.NotNil(newMention.OriginAccount)
+
+	suite.Len(status.MentionIDs, 1)
+	suite.Equal(newMention.ID, status.MentionIDs[0])
 }
 
 func (suite *UtilTestSuite) TestProcessContentFull1() {
@@ -131,20 +120,20 @@ func (suite *UtilTestSuite) TestProcessContentFull1() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
+	suite.NoError(err)
+	suite.Empty(status.Content) // shouldn't be set yet
 
 	err = suite.status.ProcessTags(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
+	suite.NoError(err)
+	suite.Empty(status.Content) // shouldn't be set yet
 
 	/*
 		ACTUAL TEST
 	*/
 
 	err = suite.status.ProcessContent(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Equal(suite.T(), statusText1ExpectedFull, status.Content)
+	suite.NoError(err)
+	suite.Equal(statusText1ExpectedFull, status.Content)
 }
 
 func (suite *UtilTestSuite) TestProcessContentPartial1() {
@@ -179,16 +168,16 @@ func (suite *UtilTestSuite) TestProcessContentPartial1() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
+	suite.NoError(err)
+	suite.Empty(status.Content) // shouldn't be set yet
 
 	/*
 		ACTUAL TEST
 	*/
 
 	err = suite.status.ProcessContent(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Equal(suite.T(), statusText1ExpectedPartial, status.Content)
+	suite.NoError(err)
+	suite.Equal(statusText1ExpectedPartial, status.Content)
 }
 
 func (suite *UtilTestSuite) TestProcessMentions2() {
@@ -221,21 +210,21 @@ func (suite *UtilTestSuite) TestProcessMentions2() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
+	suite.NoError(err)
 
-	assert.Len(suite.T(), status.Mentions, 1)
+	suite.Len(status.Mentions, 1)
 	newMention := status.Mentions[0]
-	assert.Equal(suite.T(), mentionedAccount.ID, newMention.TargetAccountID)
-	assert.Equal(suite.T(), creatingAccount.ID, newMention.OriginAccountID)
-	assert.Equal(suite.T(), creatingAccount.URI, newMention.OriginAccountURI)
-	assert.Equal(suite.T(), status.ID, newMention.StatusID)
-	assert.Equal(suite.T(), fmt.Sprintf("@%s@%s", mentionedAccount.Username, mentionedAccount.Domain), newMention.NameString)
-	assert.Equal(suite.T(), mentionedAccount.URI, newMention.TargetAccountURI)
-	assert.Equal(suite.T(), mentionedAccount.URL, newMention.TargetAccountURL)
-	assert.NotNil(suite.T(), newMention.OriginAccount)
-
-	assert.Len(suite.T(), status.MentionIDs, 1)
-	assert.Equal(suite.T(), newMention.ID, status.MentionIDs[0])
+	suite.Equal(mentionedAccount.ID, newMention.TargetAccountID)
+	suite.Equal(creatingAccount.ID, newMention.OriginAccountID)
+	suite.Equal(creatingAccount.URI, newMention.OriginAccountURI)
+	suite.Equal(status.ID, newMention.StatusID)
+	suite.Equal(fmt.Sprintf("@%s@%s", mentionedAccount.Username, mentionedAccount.Domain), newMention.NameString)
+	suite.Equal(mentionedAccount.URI, newMention.TargetAccountURI)
+	suite.Equal(mentionedAccount.URL, newMention.TargetAccountURL)
+	suite.NotNil(newMention.OriginAccount)
+
+	suite.Len(status.MentionIDs, 1)
+	suite.Equal(newMention.ID, status.MentionIDs[0])
 }
 
 func (suite *UtilTestSuite) TestProcessContentFull2() {
@@ -270,21 +259,21 @@ func (suite *UtilTestSuite) TestProcessContentFull2() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
+	suite.NoError(err)
+	suite.Empty(status.Content) // shouldn't be set yet
 
 	err = suite.status.ProcessTags(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
+	suite.NoError(err)
+	suite.Empty(status.Content) // shouldn't be set yet
 
 	/*
 		ACTUAL TEST
 	*/
 
 	err = suite.status.ProcessContent(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
+	suite.NoError(err)
 
-	assert.Equal(suite.T(), status2TextExpectedFull, status.Content)
+	suite.Equal(status2TextExpectedFull, status.Content)
 }
 
 func (suite *UtilTestSuite) TestProcessContentPartial2() {
@@ -319,18 +308,13 @@ func (suite *UtilTestSuite) TestProcessContentPartial2() {
 	}
 
 	err := suite.status.ProcessMentions(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
-	assert.Empty(suite.T(), status.Content) // shouldn't be set yet
-
-	/*
-		ACTUAL TEST
-	*/
+	suite.NoError(err)
+	suite.Empty(status.Content)
 
 	err = suite.status.ProcessContent(context.Background(), form, creatingAccount.ID, status)
-	assert.NoError(suite.T(), err)
+	suite.NoError(err)
 
-	fmt.Println(status.Content)
-	// assert.Equal(suite.T(), statusText2ExpectedPartial, status.Content)
+	suite.Equal(status2TextExpectedPartial, status.Content)
 }
 
 func TestUtilTestSuite(t *testing.T) {
-- 
cgit v1.2.3