package authn import ( "net/http" "net/http/httptest" "testing" ) func TestBearerFromRequest(t *testing.T) { cases := map[string]struct{ header, want string }{ "bearer": {"Bearer abc123", "abc123"}, "lowercase scheme": {"bearer abc123", "abc123"}, "mixed case scheme": {"BeArEr abc123", "abc123"}, "padded": {"Bearer abc123 ", "abc123"}, "basic is not ours": {"Basic dXNlcjpwYXNz", ""}, "no scheme": {"abc123", ""}, "absent": {"", ""}, } for name, c := range cases { t.Run(name, func(t *testing.T) { r := httptest.NewRequest(http.MethodGet, "/", nil) if c.header != "" { r.Header.Set("Authorization", c.header) } if got := BearerFromRequest(r); got != c.want { t.Fatalf("BearerFromRequest = %q, want %q", got, c.want) } }) } }