2026-08-09 22:47:43 +02:00
|
|
|
package auth
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"net/http"
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestNewSessionManagerCookieFlags(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
2026-08-18 00:31:58 +02:00
|
|
|
sm := NewSessionManager(nil, "descrybe_session", "", true, 12)
|
2026-08-09 22:47:43 +02:00
|
|
|
if sm.Cookie.Name != "descrybe_session" {
|
|
|
|
|
t.Fatalf("Name = %q", sm.Cookie.Name)
|
|
|
|
|
}
|
2026-08-18 00:31:58 +02:00
|
|
|
if sm.Cookie.Domain != "" {
|
|
|
|
|
t.Fatalf("Domain = %q, want host-only default", sm.Cookie.Domain)
|
|
|
|
|
}
|
2026-08-09 22:47:43 +02:00
|
|
|
if !sm.Cookie.HttpOnly {
|
|
|
|
|
t.Fatal("session cookie must be HttpOnly")
|
|
|
|
|
}
|
|
|
|
|
if !sm.Cookie.Secure {
|
|
|
|
|
t.Fatal("secure=true must set Secure")
|
|
|
|
|
}
|
|
|
|
|
if sm.Cookie.SameSite != http.SameSiteLaxMode {
|
|
|
|
|
t.Fatalf("SameSite = %v, want Lax", sm.Cookie.SameSite)
|
|
|
|
|
}
|
|
|
|
|
if sm.Cookie.Path != "/" {
|
|
|
|
|
t.Fatalf("Path = %q, want /", sm.Cookie.Path)
|
|
|
|
|
}
|
|
|
|
|
if sm.IdleTimeout != 12*time.Hour {
|
|
|
|
|
t.Fatalf("IdleTimeout = %v, want 12h", sm.IdleTimeout)
|
|
|
|
|
}
|
|
|
|
|
if sm.Lifetime != 7*24*time.Hour {
|
|
|
|
|
t.Fatalf("Lifetime = %v, want 7d", sm.Lifetime)
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-18 00:31:58 +02:00
|
|
|
insecure := NewSessionManager(nil, "descrybe_session", "", false, 0)
|
2026-08-09 22:47:43 +02:00
|
|
|
if insecure.Cookie.Secure {
|
|
|
|
|
t.Fatal("secure=false must not set Secure")
|
|
|
|
|
}
|
|
|
|
|
if !insecure.Cookie.HttpOnly {
|
|
|
|
|
t.Fatal("session cookie must remain HttpOnly")
|
|
|
|
|
}
|
|
|
|
|
if insecure.IdleTimeout != 24*time.Hour {
|
|
|
|
|
t.Fatalf("default IdleTimeout = %v, want 24h", insecure.IdleTimeout)
|
|
|
|
|
}
|
2026-08-18 00:31:58 +02:00
|
|
|
|
|
|
|
|
// Parent-domain deploys (descrybe.io + api.descrybe.io): leading dot is
|
|
|
|
|
// normalized away; browsers include subdomains whenever Domain is set.
|
|
|
|
|
scoped := NewSessionManager(nil, "descrybe_session", ".descrybe.io", true, 12)
|
|
|
|
|
if scoped.Cookie.Domain != "descrybe.io" {
|
|
|
|
|
t.Fatalf("Domain = %q, want descrybe.io", scoped.Cookie.Domain)
|
|
|
|
|
}
|
2026-08-09 22:47:43 +02:00
|
|
|
}
|