|
@@ -0,0 +1,73 @@
|
|
|
|
+package rest
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "net/http"
|
|
|
|
+ "net/http/httptest"
|
|
|
|
+ "testing"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+func TestIsAuthenticated(t *testing.T) {
|
|
|
|
+ type TestCase struct {
|
|
|
|
+ Req *http.Request
|
|
|
|
+ Token string
|
|
|
|
+ Expected bool
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ testCases := []TestCase{}
|
|
|
|
+
|
|
|
|
+ req := httptest.NewRequest("GET", "/", nil)
|
|
|
|
+ req.Header.Add("authorization", "bearer abcd")
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Token: "abcd", Expected: true})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("POST", "/", nil)
|
|
|
|
+ req.Header.Add("authorization", "Bearer defg hijk")
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Token: "defg hijk", Expected: true})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("DELETE", "/", nil)
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Token: "", Expected: true})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("GET", "/", nil)
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Token: "lmno"})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("GET", "/", nil)
|
|
|
|
+ req.Header.Add("authorization", "Bearer pqrs")
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Expected: true})
|
|
|
|
+
|
|
|
|
+ for i, tc := range testCases {
|
|
|
|
+ t.Logf("(%d) Testing request authorization header against %q", i, tc.Token)
|
|
|
|
+
|
|
|
|
+ actual := IsAuthenticated(tc.Req, tc.Token)
|
|
|
|
+ if actual != tc.Expected {
|
|
|
|
+ t.Errorf("Expected %v, got %v", tc.Expected, actual)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func TestReadBearerToken(t *testing.T) {
|
|
|
|
+ type TestCase struct {
|
|
|
|
+ Req *http.Request
|
|
|
|
+ Expected string
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ testCases := []TestCase{}
|
|
|
|
+
|
|
|
|
+ req := httptest.NewRequest("GET", "/", nil)
|
|
|
|
+ req.Header.Add("authorization", "bearer abcd")
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Expected: "abcd"})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("POST", "/", nil)
|
|
|
|
+ req.Header.Add("authorization", "Bearer defg hijk")
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Expected: "defg hijk"})
|
|
|
|
+
|
|
|
|
+ req = httptest.NewRequest("DELETE", "/", nil)
|
|
|
|
+ testCases = append(testCases, TestCase{Req: req, Expected: ""})
|
|
|
|
+
|
|
|
|
+ for i, tc := range testCases {
|
|
|
|
+ t.Logf("(%d) Testing request authorization header against %q", i, tc.Expected)
|
|
|
|
+
|
|
|
|
+ actual := ReadBearerToken(tc.Req)
|
|
|
|
+ if actual != tc.Expected {
|
|
|
|
+ t.Errorf("Expected %q, got %q", tc.Expected, actual)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|