Files
rest/headers_test.go
2024-06-22 17:12:09 +01:00

74 lines
2.0 KiB
Go

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