refactor(webui): openai_compat 判据迁到 test/,包内重建共享辅助

openai_compat_test.go → webui/test/    (4 条判据)
    webui/       178 → 174 条
    webui/test/   24 →  28 条
    合计 202 条不变

## 迁移碰到的连带问题

`openai_compat_test.go` 里除了自己的判据,还定义了三个**被包内其他文件
依赖**的共享件:

    newOpenAITestServer(t)   auth_hardening_test.go 在用
    testAuthAPIKey           auth_hardening / gzip / legacy_proxy(×2) 在用
    seedWebUIConfig          多处

文件一移走,包内立刻 build failed:

    vet: auth_hardening_test.go:373:15: undefined: newOpenAITestServer
    vet: auth_hardening_test.go:377:30: undefined: testAuthAPIKey

这说明「迁一个测试文件」从来不是孤立的 —— 它可能是包内共享辅助的**宿主**。

## 处理方式:两边各留一份,不跨包共享

包内重定义 `testAuthAPIKey` 与 `newOpenAITestServer`(放 handler_test.go),
test/ 侧保留自己那份(`seedWebUIConfig` 统一收进 helpers_test.go)。

**为什么不抽到共享包**:包内版本要用包内的 `testSDK`/`seedWebUIConfig`,
test/ 版本要用那边的 helper。抽公共包等于让 test/ 反向依赖包内的未导出
辅助 —— 那正是这次迁移要摆脱的东西。两份各写 20 行,换来两侧互不牵连,
比一个"共享测试工具包"更符合这次的目的。

## 顺带修掉一处重复定义

`seedWebUIConfig` 在 secret_meta_test.go 与 helpers_test.go 各出现过一次
(上一批我加的那份没和已有的对齐)。收拢到 helpers_test.go 一份,
字段与包内版本保持一致(api_key/username/password/session_ttl_hours)。

## 验证

    go build ./...                  PASS
    go vet ./...                    PASS
    gofmt -l                        干净
    go test ./... -count=1          67 包全过,0 FAIL
    webui/ + webui/test/            174 + 28 = 202 条,与迁移前一致
This commit is contained in:
JianFeeeee
2026-11-04 21:52:52 +08:00
parent b3ae99e32f
commit 2e90c2cb5a
4 changed files with 55 additions and 21 deletions

View File

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