This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var agentRouteParamPattern = regexp.MustCompile(`\{[^}]+\}`)
|
||||
|
||||
// TestAgentRoutesRequireToken 遍历全部 Agent API:匿名请求必须 401,防止新增路由漏挂 auth。
|
||||
func TestAgentRoutesRequireToken(t *testing.T) {
|
||||
server := &Server{cfg: Config{Token: "secret-token"}}
|
||||
routes := agentRoutes(server)
|
||||
if len(routes) < 20 {
|
||||
t.Fatalf("Agent 路由覆盖不足:%d 条", len(routes))
|
||||
}
|
||||
handler := server.Handler()
|
||||
for _, route := range routes {
|
||||
path := agentRouteParamPattern.ReplaceAllString(route.Pattern, "1")
|
||||
req := httptest.NewRequest(route.Method, path, nil)
|
||||
rec := httptest.NewRecorder()
|
||||
handler.ServeHTTP(rec, req)
|
||||
if rec.Code != http.StatusUnauthorized {
|
||||
t.Fatalf("路由 %s %s 匿名请求应返回 401,实际 %d", route.Method, route.Pattern, rec.Code)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user