// Copyright 2019 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package validation import ( "testing" "gitea.com/go-chi/binding" "github.com/gobwas/glob" ) func getGlobPatternErrorString(pattern string) string { // It would be unwise to rely on that glob // compilation errors don't ever change. if _, err := glob.Compile(pattern); err != nil { return err.Error() } return "" } var globValidationTestCases = []validationTestCase{ { description: "Empty glob pattern", data: TestForm{ GlobPattern: "", }, expectedErrors: binding.Errors{}, }, { description: "Valid glob", data: TestForm{ GlobPattern: "{master,release*}", }, expectedErrors: binding.Errors{}, }, { description: "Invalid glob", data: TestForm{ GlobPattern: "[a-", }, expectedErrors: binding.Errors{ binding.Error{ FieldNames: []string{"GlobPattern"}, Classification: ErrGlobPattern, Message: getGlobPatternErrorString("[a-"), }, }, }, } func Test_GlobPatternValidation(t *testing.T) { AddBindingRules() for _, testCase := range globValidationTestCases { t.Run(testCase.description, func(t *testing.T) { performValidationTest(t, testCase) }) } }