Merge pull request #25 from ifraixedes/test-from-header
Add test for jws.fromHeader function - retrieved
diff --git a/jws/jws.go b/jws/jws.go
index 29ae67c..c8c9ca4 100644
--- a/jws/jws.go
+++ b/jws/jws.go
@@ -414,7 +414,7 @@
}
func fromHeader(req *http.Request) ([]byte, bool) {
- if ah := req.Header.Get("Authorization"); ah != "" && len(ah) > 6 && strings.EqualFold(ah[0:6], "BEARER") {
+ if ah := req.Header.Get("Authorization"); len(ah) > 7 && strings.EqualFold(ah[0:7], "BEARER ") {
return []byte(ah[7:]), true
}
return nil, false
diff --git a/jws/jwt_test.go b/jws/jwt_test.go
index 5ea4a9b..c0056c3 100644
--- a/jws/jwt_test.go
+++ b/jws/jwt_test.go
@@ -2,6 +2,7 @@
import (
"errors"
+ "net/http"
"testing"
"time"
@@ -82,3 +83,49 @@
t.Error(err)
}
}
+
+func TestFromHeader(t *testing.T) {
+ header := http.Header{}
+ req := &http.Request{
+ Header: header,
+ }
+
+ _, ok := fromHeader(req)
+ if ok {
+ t.Errorf("fromHeader should return !ok when request doesn't have an authorization header")
+ }
+
+ header.Set("Authorization", "invalid")
+ _, ok = fromHeader(req)
+ if ok {
+ t.Errorf("fromHeader should return !ok when Authorization header value is invalid")
+ }
+
+ header.Set("Authorization", "bearer")
+ _, ok = fromHeader(req)
+ if ok {
+ t.Errorf("fromHeader should return !ok when Authorization header value doesn't contain any value for a token")
+ }
+
+ header.Set("Authorization", "bearer ")
+ _, ok = fromHeader(req)
+ if ok {
+ t.Errorf("fromHeader should return !ok when Authorization header value doesn't contain any value for a token")
+ }
+
+ header.Set("Authorization", "BEARER ")
+ _, ok = fromHeader(req)
+ if ok {
+ t.Errorf("fromHeader should return !ok when Authorization header value doesn't contain any value for a token")
+ }
+
+ header.Set("Authorization", "BEARER t")
+ token, ok := fromHeader(req)
+ if !ok {
+ t.Errorf("fromHeader should return ok when Authorization header contains a value for a token")
+ }
+
+ if string(token) != "t" {
+ t.Errorf("fromHeader should return the value set as token in the Auhorization header")
+ }
+}