diff --git a/internal/plugins/webui/handler_test.go b/internal/plugins/webui/handler_test.go index 9ff1a121..e5dc892d 100644 --- a/internal/plugins/webui/handler_test.go +++ b/internal/plugins/webui/handler_test.go @@ -1589,3 +1589,34 @@ func TestRuntimeEndpoint(t *testing.T) { t.Fatalf("无状态源应回 503,实际 %d", w2.Code) } } + +// testAuthAPIKey 是 seedWebUIConfig 写进配置的 api_key 值。 +// +// ★ 2026-11-04:原先只在 openai_compat_test.go 里定义,那个文件迁到 test/ +// 后本包 4 个测试文件(auth_hardening / gzip / legacy_proxy ×2)仍在用它。 +const testAuthAPIKey = "test-api-key" + +// newOpenAITestServer 起一个带完整路由的 /v1/* 测试服务器。 +// +// ★ 2026-11-04:原先定义在 openai_compat_test.go 里,那个文件迁到 test/ +// 之后本包仍有判据(auth_hardening_test.go)要用它,于是在这里重建一份包内版本。 +// 两份都保留是有意的:包内版本用包内的 seedWebUIConfig/testSDK, +// test/ 版本用那边的 helper —— 各自独立,避免跨包共享测试辅助。 +func newOpenAITestServer(t *testing.T) (*httptest.Server, *agentIO.IOManager, *events.Bus) { + t.Helper() + cfgReg := internalConfig.NewConfigRegistry("") + seedWebUIConfig(cfgReg) + + iom := agentIO.NewIOManager() + bus := events.NewBus() + h := NewHandler(testSDK(sdk.SDKConfig{ + Settings: sdk.NewSettings("webui", cfgReg), + IOManager: iom, + EventBus: bus, + })) + h.RegisterRoutes(http.NewServeMux()) + + srv := httptest.NewServer(h.Handler()) + t.Cleanup(func() { srv.Close() }) + return srv, iom, bus +} diff --git a/internal/plugins/webui/test/helpers_test.go b/internal/plugins/webui/test/helpers_test.go index 55e27761..589de957 100644 --- a/internal/plugins/webui/test/helpers_test.go +++ b/internal/plugins/webui/test/helpers_test.go @@ -9,6 +9,8 @@ import ( "github.com/JianFeeeee/HologramAgent/internal/plugins/webui" "strings" "testing" + + internalConfig "github.com/JianFeeeee/HologramAgent/internal/config" ) // stripJSComments 剥掉 // 行注释与 /* */ 块注释(粗粒度,但足够用于词频统计)。 @@ -96,3 +98,20 @@ func dashboardJS(t *testing.T) string { t.Helper() return dashboardJSSource(t) } + +// testAPIKey 与 seedWebUIConfig 写进配置的值一致。 +const testAPIKey = "test-api-key" + +// seedWebUIConfig 在 webui 插件配置里登记并设置 api_key / username / password。 +// +// 与包内 handler_test.go 的同名辅助保持一致 —— requireAPI 会读它, +// 没配就返回 503「webui api_key not configured」。 +func seedWebUIConfig(reg *internalConfig.ConfigRegistry) { + c := reg.PluginConfig("webui") + c.RegisterDef(internalConfig.ConfigDef{Key: "api_key", Default: ""}) + c.RegisterDef(internalConfig.ConfigDef{Key: "username", Default: ""}) + c.RegisterDef(internalConfig.ConfigDef{Key: "password", Default: ""}) + c.Set("api_key", testAPIKey) + c.Set("username", "admin") + c.Set("password", "pw-for-test") +} diff --git a/internal/plugins/webui/openai_compat_test.go b/internal/plugins/webui/test/openai_compat_test.go similarity index 98% rename from internal/plugins/webui/openai_compat_test.go rename to internal/plugins/webui/test/openai_compat_test.go index d5e20578..8f6209a1 100644 --- a/internal/plugins/webui/openai_compat_test.go +++ b/internal/plugins/webui/test/openai_compat_test.go @@ -1,4 +1,4 @@ -package webui +package test import ( "bufio" @@ -13,6 +13,7 @@ import ( agentIO "github.com/JianFeeeee/HologramAgent/internal/agent/io" internalConfig "github.com/JianFeeeee/HologramAgent/internal/config" "github.com/JianFeeeee/HologramAgent/internal/events" + "github.com/JianFeeeee/HologramAgent/internal/plugins/webui" "github.com/JianFeeeee/HologramAgent/internal/sdk" ) @@ -48,12 +49,12 @@ func newOpenAITestServer(t *testing.T) (*httptest.Server, *agentIO.IOManager, *e iom := agentIO.NewIOManager() bus := events.NewBus() - cfg := sdk.SDKConfig{ + cfg := sdk.New("webui", sdk.SDKConfig{ Settings: sdk.NewSettings("webui", cfgReg), IOManager: iom, EventBus: bus, - } - h := NewHandler(testSDK(cfg)) + }) + h := webui.NewHandler(cfg) h.RegisterRoutes(http.NewServeMux()) srv := httptest.NewServer(h.Handler()) diff --git a/internal/plugins/webui/test/secret_meta_test.go b/internal/plugins/webui/test/secret_meta_test.go index 16d69505..c96b98c1 100644 --- a/internal/plugins/webui/test/secret_meta_test.go +++ b/internal/plugins/webui/test/secret_meta_test.go @@ -147,20 +147,3 @@ func serveRoutes(t *testing.T, h *webui.Handler, w http.ResponseWriter, r *http. h.RegisterRoutes(mux) mux.ServeHTTP(w, r) } - -// testAPIKey 与 seedWebUIConfig 写进配置的值一致。 -const testAPIKey = "test-api-key" - -// seedWebUIConfig 在 webui 插件配置里登记并设置 api_key / username / password。 -// -// 与包内 handler_test.go 的同名辅助保持一致 —— requireAPI 会读它, -// 没配就返回 503「webui api_key not configured」。 -func seedWebUIConfig(reg *internalConfig.ConfigRegistry) { - c := reg.PluginConfig("webui") - c.RegisterDef(internalConfig.ConfigDef{Key: "api_key", Default: ""}) - c.RegisterDef(internalConfig.ConfigDef{Key: "username", Default: ""}) - c.RegisterDef(internalConfig.ConfigDef{Key: "password", Default: ""}) - c.Set("api_key", testAPIKey) - c.Set("username", "admin") - c.Set("password", "pw-for-test") -}