package handler import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" ) // TestExtractBearerToken 校验 Bearer token 解析 func TestExtractBearerToken(t *testing.T) { gin.SetMode(gin.TestMode) tests := []struct { name string auth string wantToken string wantOK bool }{ {name: "缺失 header", auth: "", wantOK: false}, {name: "错误前缀", auth: "Token abc", wantOK: false}, {name: "Bearer 空", auth: "Bearer ", wantOK: false}, {name: "有效 Bearer", auth: "Bearer mytoken123", wantToken: "mytoken123", wantOK: true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest(http.MethodGet, "/friends", nil) if tt.auth != "" { c.Request.Header.Set("Authorization", tt.auth) } got, ok := extractBearerToken(c) if ok != tt.wantOK { t.Fatalf("ok = %v, want %v", ok, tt.wantOK) } if ok && got != tt.wantToken { t.Errorf("token = %q, want %q", got, tt.wantToken) } }) } }