310376525b
- Use the forked [binding](https://code.forgejo.org/go-chi/binding) library. This library has two benefits, it removes the usage of `github.com/goccy/go-json` (has no benefit as the minimo library is also using it). It adds the `TrimSpace` feature, which will during the binding part trim the spaces around the value it got from the form, this is done before validation.
60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package validation
|
|
|
|
import (
|
|
"regexp"
|
|
"testing"
|
|
|
|
"code.forgejo.org/go-chi/binding"
|
|
)
|
|
|
|
func getRegexPatternErrorString(pattern string) string {
|
|
if _, err := regexp.Compile(pattern); err != nil {
|
|
return err.Error()
|
|
}
|
|
return ""
|
|
}
|
|
|
|
var regexValidationTestCases = []validationTestCase{
|
|
{
|
|
description: "Empty regex pattern",
|
|
data: TestForm{
|
|
RegexPattern: "",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "Valid regex",
|
|
data: TestForm{
|
|
RegexPattern: `(\d{1,3})+`,
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
|
|
{
|
|
description: "Invalid regex",
|
|
data: TestForm{
|
|
RegexPattern: "[a-",
|
|
},
|
|
expectedErrors: binding.Errors{
|
|
binding.Error{
|
|
FieldNames: []string{"RegexPattern"},
|
|
Classification: ErrRegexPattern,
|
|
Message: getRegexPatternErrorString("[a-"),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
func Test_RegexPatternValidation(t *testing.T) {
|
|
AddBindingRules()
|
|
|
|
for _, testCase := range regexValidationTestCases {
|
|
t.Run(testCase.description, func(t *testing.T) {
|
|
performValidationTest(t, testCase)
|
|
})
|
|
}
|
|
}
|