go-tell/internal/security/token_test.go

43 lines
1.3 KiB
Go
Raw Permalink Normal View History

2026-09-19 16:45:24 +02:00
package security
import (
"net/http"
"net/http/httptest"
"testing"
)
func requestWithHeader(name, value string) *http.Request {
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.Header.Set(name, value)
return r
}
func TestSSOTokenVerifierRequiresProxyHeader(t *testing.T) {
v := NewSSOTokenVerifier("X-SSO-Token", "", "")
if v.Authenticated(httptest.NewRequest(http.MethodGet, "/", nil)) {
t.Fatal("request without proxy header must stay anonymous")
}
if !v.Authenticated(requestWithHeader("X-SSO-Token", "oauth2-access-token")) {
t.Fatal("request with proxy header must be authenticated")
}
}
func TestSSOTokenVerifierChecksExpectedToken(t *testing.T) {
v := NewSSOTokenVerifier("X-SSO-Token", "secret", "")
if v.Authenticated(requestWithHeader("X-SSO-Token", "other")) {
t.Fatal("mismatching token must stay anonymous")
}
if !v.Authenticated(requestWithHeader("X-SSO-Token", "Bearer secret")) {
t.Fatal("bearer-prefixed token must be authenticated")
}
}
func TestSSOTokenVerifierCookieFallback(t *testing.T) {
2026-10-03 04:41:31 +02:00
v := NewSSOTokenVerifier("X-SSO-Token", "", "go_tell_session")
2026-09-19 16:45:24 +02:00
r := httptest.NewRequest(http.MethodGet, "/", nil)
2026-10-03 04:41:31 +02:00
r.AddCookie(&http.Cookie{Name: "go_tell_session", Value: "cookie-token"})
2026-09-19 16:45:24 +02:00
if !v.Authenticated(r) {
t.Fatal("cookie token must be authenticated")
}
}