28 lines
1.0 KiB
Go
28 lines
1.0 KiB
Go
package controller
|
|
|
|
import "testing"
|
|
|
|
// TestServerOrderClause 验证服务器排序字段仅使用后端白名单表达式。 // Logan.Li
|
|
func TestServerOrderClause(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
sortField string
|
|
order string
|
|
want string
|
|
}{
|
|
{name: "默认排序", want: "created_at DESC"},
|
|
{name: "主机名升序", sortField: "hostname", order: "asc", want: "LOWER(hostname) ASC, id ASC"},
|
|
{name: "主机名降序", sortField: "hostname", order: "desc", want: "LOWER(hostname) DESC, id DESC"},
|
|
{name: "非法方向回退升序", sortField: "hostname", order: "invalid", want: "LOWER(hostname) ASC, id ASC"},
|
|
{name: "非法字段回退默认", sortField: "hostname; DROP TABLE sys_servers", order: "asc", want: "created_at DESC"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := serverOrderClause(tt.sortField, tt.order); got != tt.want {
|
|
t.Fatalf("serverOrderClause(%q, %q) = %q, want %q", tt.sortField, tt.order, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|