коммит произвёл
GitHub
родитель
8ef7f78d8d
Коммит
532f2882d1
@@ -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")
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user