mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-29 18:24:02 +01:00
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.
110 lines
2.1 KiB
Go
110 lines
2.1 KiB
Go
// Copyright 2017 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package validation
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"code.forgejo.org/go-chi/binding"
|
|
)
|
|
|
|
var urlValidationTestCases = []validationTestCase{
|
|
{
|
|
description: "Empty URL",
|
|
data: TestForm{
|
|
URL: "",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "URL without port",
|
|
data: TestForm{
|
|
URL: "http://test.lan/",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "URL with port",
|
|
data: TestForm{
|
|
URL: "http://test.lan:3000/",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "URL with IPv6 address without port",
|
|
data: TestForm{
|
|
URL: "http://[::1]/",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "URL with IPv6 address with port",
|
|
data: TestForm{
|
|
URL: "http://[::1]:3000/",
|
|
},
|
|
expectedErrors: binding.Errors{},
|
|
},
|
|
{
|
|
description: "Invalid URL",
|
|
data: TestForm{
|
|
URL: "http//test.lan/",
|
|
},
|
|
expectedErrors: binding.Errors{
|
|
binding.Error{
|
|
FieldNames: []string{"URL"},
|
|
Classification: binding.ERR_URL,
|
|
Message: "Url",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
description: "Invalid schema",
|
|
data: TestForm{
|
|
URL: "ftp://test.lan/",
|
|
},
|
|
expectedErrors: binding.Errors{
|
|
binding.Error{
|
|
FieldNames: []string{"URL"},
|
|
Classification: binding.ERR_URL,
|
|
Message: "Url",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
description: "Invalid port",
|
|
data: TestForm{
|
|
URL: "http://test.lan:3x4/",
|
|
},
|
|
expectedErrors: binding.Errors{
|
|
binding.Error{
|
|
FieldNames: []string{"URL"},
|
|
Classification: binding.ERR_URL,
|
|
Message: "Url",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
description: "Invalid port with IPv6 address",
|
|
data: TestForm{
|
|
URL: "http://[::1]:3x4/",
|
|
},
|
|
expectedErrors: binding.Errors{
|
|
binding.Error{
|
|
FieldNames: []string{"URL"},
|
|
Classification: binding.ERR_URL,
|
|
Message: "Url",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
func Test_ValidURLValidation(t *testing.T) {
|
|
AddBindingRules()
|
|
|
|
for _, testCase := range urlValidationTestCases {
|
|
t.Run(testCase.description, func(t *testing.T) {
|
|
performValidationTest(t, testCase)
|
|
})
|
|
}
|
|
}
|