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