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) } }) } }