~bigbes/sr-ht-spec

ref: 5bb0bb134d608263da3197df9fb4f1d8a3fe42db sr-ht-spec/authn/token_test.go -rw-r--r-- 822 bytes
5bb0bb13 — Eugene Blikh graph: serve /query on the anonymous router with a bearer credential 2 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)
			}
		})
	}
}