2023-03-12 16:00:57 +01:00
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
2021-08-16 19:17:56 +02:00
package text_test
import (
"testing"
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/text"
)
const (
2022-05-26 11:37:13 +02:00
sanitizeHTML = ` here's some naughty html: <script>alert(ahhhh)</script> !!! `
sanitizedHTML = ` here's some naughty html: !!! `
2021-08-16 19:17:56 +02:00
sanitizeOutgoing = ` <p>gotta test some fucking ''''''''' marks</p> `
sanitizedOutgoing = ` <p>gotta test some fucking ''''''''' marks</p> `
)
type SanitizeTestSuite struct {
suite . Suite
}
func ( suite * SanitizeTestSuite ) TestSanitizeOutgoing ( ) {
2025-03-07 15:04:34 +01:00
s := text . SanitizeHTML ( sanitizeOutgoing )
2021-08-16 19:17:56 +02:00
suite . Equal ( sanitizedOutgoing , s )
}
func ( suite * SanitizeTestSuite ) TestSanitizeHTML ( ) {
2025-03-07 15:04:34 +01:00
s := text . SanitizeHTML ( sanitizeHTML )
2021-08-16 19:17:56 +02:00
suite . Equal ( sanitizedHTML , s )
}
2023-08-11 14:40:11 +02:00
func ( suite * SanitizeTestSuite ) TestSanitizeInlineImg ( ) {
withInlineImg := "<p>Here's an inline image: <img class=\"fixed-size-img svelte-uci8eb\" aria-hidden=\"false\" alt=\"A black-and-white photo of an Oblique Strategy card. The card reads: 'Define an area as 'safe' and use it as an anchor'.\" title=\"A black-and-white photo of an Oblique Strategy card. The card reads: 'Define an area as 'safe' and use it as an anchor'.\" width=\"0\" height=\"0\" src=\"https://example.org/fileserver/01H7J83147QMCE17C0RS9P10Y9/attachment/small/01H7J8365XXRTCP6CAMGEM49ZE.jpg\" style=\"object-position: 50% 50%;\"></p>"
2025-03-07 15:04:34 +01:00
sanitized := text . SanitizeHTML ( withInlineImg )
2023-08-11 14:40:11 +02:00
suite . Equal ( ` <p>Here's an inline image: </p> ` , sanitized )
}
2021-08-16 19:17:56 +02:00
func TestSanitizeTestSuite ( t * testing . T ) {
suite . Run ( t , new ( SanitizeTestSuite ) )
}