// test_helpers_test.go — internal/api 套件 unit test 共用 helper。 // // OB5 起 AuthMiddleware 強制走 OIDC(cookie + SessionManager), // 但很多既有 unit test 並不關心 auth 細節 — 它們關心的是「假設 user 已登入, // 那該 handler 行為對不對」。為了讓這類測試不被 auth 細節拖累, // 提供一個「跳過 AuthMiddleware、直接塞 UserContext」的 middleware shim。 // // 完整的 OIDC 認證流程測試見: // - oidc_auth_test.go(unit test,含 AuthMiddleware 行為) // - cmd/api-server/oidc_e2e_test.go(end-to-end) package api import ( "github.com/gin-gonic/gin" "visiona-backend/internal/auth" ) // injectStaticUserContext 是 unit test 用的 fake AuthMiddleware: // 直接把指定的 userID / email 塞進 gin.Context,跳過 cookie / session 邏輯。 // // 用途:測試 handler 在「假設 user 已登入」前提下的行為(list / create 等業務邏輯)。 // 不可用於:驗證 AuthMiddleware 自身行為 — 那要走真 OIDC flow。 func injectStaticUserContext(userID, email string) gin.HandlerFunc { return func(c *gin.Context) { c.Set(ctxKeyUserContext, &auth.UserContext{ UserID: userID, Email: email, }) c.Next() } }