[bugfix] use start + end line in regex when validating emoji via API (#2671)

This commit is contained in:
tobi 2024-02-20 11:46:04 +01:00 committed by GitHub
commit 65a273bc39
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 61 additions and 3 deletions

View file

@ -191,7 +191,7 @@ func CustomCSS(customCSS string) error {
// for emoji shortcodes, to figure out whether it's a valid shortcode, ie., 2-30 characters,
// a-zA-Z, numbers, and underscores.
func EmojiShortcode(shortcode string) error {
if !regexes.EmojiShortcode.MatchString(shortcode) {
if !regexes.EmojiValidator.MatchString(shortcode) {
return fmt.Errorf("shortcode %s did not pass validation, must be between 2 and 30 characters, letters, numbers, and underscores only", shortcode)
}
return nil

View file

@ -321,6 +321,63 @@ func (suite *ValidationTestSuite) TestValidateCustomCSSTooLongUnicode() {
suite.EqualError(err, "custom_css must be less than 5 characters, but submitted custom_css was 10 characters")
}
func (suite *ValidationTestSuite) TestValidateEmojiShortcode() {
type testStruct struct {
shortcode string
ok bool
}
for _, test := range []testStruct{
{
shortcode: "peepee",
ok: true,
},
{
shortcode: "poo-poo",
ok: false,
},
{
shortcode: "-peepee",
ok: false,
},
{
shortcode: "p",
ok: false,
},
{
shortcode: "pp",
ok: true,
},
{
shortcode: "6969",
ok: true,
},
{
shortcode: "__peepee",
ok: true,
},
{
shortcode: "_",
ok: false,
},
{
// Too long.
shortcode: "_XxX_Ultimate_Gamer_dude_6969_420_",
ok: false,
},
{
shortcode: "_XxX_Ultimate_Gamer_dude_6969_",
ok: true,
},
} {
err := validate.EmojiShortcode(test.shortcode)
ok := err == nil
if !suite.Equal(test.ok, ok) {
suite.T().Logf("fail on %s", test.shortcode)
}
}
}
func TestValidationTestSuite(t *testing.T) {
suite.Run(t, new(ValidationTestSuite))
}