Commit 5c2e5ee5 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Add test for parsing bearer tokens.

parent f9ef4324
...@@ -61,6 +61,35 @@ func TestParseWhip(t *testing.T) { ...@@ -61,6 +61,35 @@ func TestParseWhip(t *testing.T) {
} }
} }
func TestParseBearerToken(t *testing.T) {
a := []struct{ a, b string }{
{"", ""},
{"foo", ""},
{"foo bar", ""},
{" foo bar", ""},
{"foo bar ", ""},
{"Bearer", ""},
{"Bearer ", ""},
{"Bearer foo", "foo"},
{"bearer foo", "foo"},
{" Bearer foo", "foo"},
{"Bearer foo ", "foo"},
{" Bearer foo ", "foo"},
{"Bearer foo bar", ""},
}
for _, ab := range a {
t.Run(ab.a, func(t *testing.T) {
b := parseBearerToken(ab.a)
if b != ab.b {
t.Errorf("Bearer token %v, got %v, expected %v",
ab.a, b, ab.b,
)
}
})
}
}
func TestFormatICEServer(t *testing.T) { func TestFormatICEServer(t *testing.T) {
a := []struct { a := []struct {
s webrtc.ICEServer s webrtc.ICEServer
......
...@@ -52,8 +52,7 @@ func canPresent(perms []string) bool { ...@@ -52,8 +52,7 @@ func canPresent(perms []string) bool {
return false return false
} }
func getBearerToken(r *http.Request) string { func parseBearerToken(auth string) string {
auth := r.Header.Get("Authorization")
auths := strings.Split(auth, ",") auths := strings.Split(auth, ",")
for _, a := range auths { for _, a := range auths {
a = strings.Trim(a, " \t") a = strings.Trim(a, " \t")
...@@ -178,7 +177,8 @@ func whipEndpointHandler(w http.ResponseWriter, r *http.Request) { ...@@ -178,7 +177,8 @@ func whipEndpointHandler(w http.ResponseWriter, r *http.Request) {
return return
} }
token := getBearerToken(r) token := parseBearerToken(r.Header.Get("Authorization"))
whip := "whip" whip := "whip"
creds := group.ClientCredentials{ creds := group.ClientCredentials{
Username: &whip, Username: &whip,
...@@ -258,7 +258,7 @@ func whipResourceHandler(w http.ResponseWriter, r *http.Request) { ...@@ -258,7 +258,7 @@ func whipResourceHandler(w http.ResponseWriter, r *http.Request) {
} }
if t := c.Token(); t != "" { if t := c.Token(); t != "" {
token := getBearerToken(r) token := parseBearerToken(r.Header.Get("Authorization"))
if token != t { if token != t {
http.Error(w, "Forbidden", http.StatusForbidden) http.Error(w, "Forbidden", http.StatusForbidden)
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment