109 lines
2.2 KiB
Go
109 lines
2.2 KiB
Go
package validator
|
||
|
||
import (
|
||
"testing"
|
||
|
||
"github.com/go-playground/validator/v10"
|
||
)
|
||
|
||
func TestValidateAuthorizationURL(t *testing.T) {
|
||
validate := validator.New()
|
||
RegisterCustomValidators(validate)
|
||
|
||
tests := []struct {
|
||
name string
|
||
url string
|
||
wantErr bool
|
||
}{
|
||
{
|
||
name: "有效的PDF URL",
|
||
url: "https://example.com/document.pdf",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "有效的JPG URL",
|
||
url: "https://example.com/image.jpg",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "有效的JPEG URL",
|
||
url: "https://example.com/image.jpeg",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "有效的PNG URL",
|
||
url: "https://example.com/image.png",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "有效的BMP URL",
|
||
url: "https://example.com/image.bmp",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "HTTP协议的PDF URL",
|
||
url: "http://example.com/document.pdf",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "带查询参数的PDF URL",
|
||
url: "https://example.com/document.pdf?version=1.0",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "带路径的PDF URL",
|
||
url: "https://example.com/files/documents/contract.pdf",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "无效的URL格式",
|
||
url: "not-a-url",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "不支持的文件类型",
|
||
url: "https://example.com/document.doc",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "不支持的文件类型2",
|
||
url: "https://example.com/document.txt",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "没有文件扩展名",
|
||
url: "https://example.com/document",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "FTP协议(不支持)",
|
||
url: "ftp://example.com/document.pdf",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "空字符串",
|
||
url: "",
|
||
wantErr: true,
|
||
},
|
||
{
|
||
name: "大写扩展名",
|
||
url: "https://example.com/document.PDF",
|
||
wantErr: false,
|
||
},
|
||
{
|
||
name: "混合大小写扩展名",
|
||
url: "https://example.com/document.JpG",
|
||
wantErr: false,
|
||
},
|
||
}
|
||
|
||
for _, tt := range tests {
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
err := validate.Var(tt.url, "authorization_url")
|
||
if (err != nil) != tt.wantErr {
|
||
t.Errorf("validateAuthorizationURL() error = %v, wantErr %v", err, tt.wantErr)
|
||
}
|
||
})
|
||
}
|
||
}
|