Automatic Merge
Этот коммит содержится в:
Guillermo Vayá
2026-03-20 12:30:54 +01:00
коммит произвёл GitHub
родитель 8ef7f78d8d
Коммит 532f2882d1
10 изменённых файлов: 413 добавлений и 18 удалений

Просмотреть файл

@@ -5,6 +5,7 @@ package model
import (
"net/http"
"regexp"
"strings"
)
@@ -15,6 +16,8 @@ const (
MaxTriggerLength = 128
)
var validCommandTriggerChars = regexp.MustCompile(`^[A-Za-z0-9_./-]+$`)
type Command struct {
Id string `json:"id"`
Token string `json:"token"`
@@ -96,7 +99,7 @@ func (o *Command) IsValid() *AppError {
return NewAppError("Command.IsValid", "model.command.is_valid.team_id.app_error", nil, "", http.StatusBadRequest)
}
if len(o.Trigger) < MinTriggerLength || len(o.Trigger) > MaxTriggerLength || strings.Index(o.Trigger, "/") == 0 || strings.Contains(o.Trigger, " ") {
if len(o.Trigger) < MinTriggerLength || len(o.Trigger) > MaxTriggerLength || strings.Index(o.Trigger, "/") == 0 || !validCommandTriggerChars.MatchString(o.Trigger) {
return NewAppError("Command.IsValid", "model.command.is_valid.trigger.app_error", nil, "", http.StatusBadRequest)
}

Просмотреть файл

@@ -72,6 +72,31 @@ func TestCommandIsValid(t *testing.T) {
o.Trigger = strings.Repeat("1", 128)
require.Nil(t, o.IsValid())
validTriggers := []string{"abc", "ABC", "abc123", "a_b-c.d/e"}
for _, trigger := range validTriggers {
o.Trigger = trigger
require.Nil(t, o.IsValid(), "trigger should be valid: %q", trigger)
}
invalidTriggers := []string{
" trigger",
"tri gger",
"tri\tger",
"tri\nger",
"tri\rger",
"tri\x00ger",
"/trigger",
"tri?ger",
"tri*ger",
"trígger",
"trigger😀",
}
for _, trigger := range invalidTriggers {
o.Trigger = trigger
require.NotNil(t, o.IsValid(), "trigger should be invalid: %q", trigger)
}
o.Trigger = "trigger"
o.URL = ""
require.NotNil(t, o.IsValid(), "should be invalid")