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