Live: pipeline rule crud (file-based, still for MVP) (#39238)

This commit is contained in:
Alexander Emelin
2021-09-30 19:29:32 +03:00
committed by GitHub
parent 3ad5ee87a3
commit a696fc8b2b
9 changed files with 424 additions and 95 deletions
@@ -0,0 +1,25 @@
package pattern
import (
"fmt"
"regexp"
"strings"
)
var patternReString = `^[A-z0-9_\-/=.:*]*$`
var patternRe = regexp.MustCompile(patternReString)
var maxPatternLength = 160
func Valid(pattern string) (bool, string) {
if strings.HasPrefix(pattern, "/") {
return false, "pattern can't start with /"
}
if !patternRe.MatchString(pattern) {
return false, fmt.Sprintf("pattern format error, must match %s", patternReString)
}
if len(pattern) > maxPatternLength {
return false, fmt.Sprintf("pattern max length exceeded (%d)", maxPatternLength)
}
return true, ""
}
@@ -0,0 +1,37 @@
package pattern
import "testing"
func TestValid(t *testing.T) {
type args struct {
pattern string
}
tests := []struct {
name string
args args
want bool
}{
{
name: "valid",
args: args{
pattern: "xxx",
},
want: true,
},
{
name: "invalid",
args: args{
pattern: "/xxx",
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, _ := Valid(tt.args.pattern)
if got != tt.want {
t.Errorf("Valid() got = %v, want %v", got, tt.want)
}
})
}
}