mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	- 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.
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2019 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package validation
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.forgejo.org/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)
 | |
| 		})
 | |
| 	}
 | |
| }
 |