58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package middleware
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/go-admin-team/go-admin-core/sdk/config"
|
|
)
|
|
|
|
func TestResolveJWTTimeoutDefaultsToThirtyDays(t *testing.T) {
|
|
for _, mode := range []string{"prod", "test", "demo"} {
|
|
if got := resolveJWTTimeout(mode, 0); got != 30*24*time.Hour {
|
|
t.Errorf("mode %s timeout=%s, want 720h", mode, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestResolveJWTTimeoutHonorsExplicitConfiguration(t *testing.T) {
|
|
if got := resolveJWTTimeout("prod", 3600); got != time.Hour {
|
|
t.Fatalf("timeout=%s, want 1h", got)
|
|
}
|
|
}
|
|
|
|
func TestResolveJWTTimeoutKeepsUpstreamDevelopmentBehavior(t *testing.T) {
|
|
if got := resolveJWTTimeout("dev", 1); got != 876010*time.Hour {
|
|
t.Fatalf("development timeout=%s", got)
|
|
}
|
|
}
|
|
|
|
func TestAuthInitSignsTokenExpiringAfterThirtyDays(t *testing.T) {
|
|
oldMode := config.ApplicationConfig.Mode
|
|
oldTimeout := config.JwtConfig.Timeout
|
|
oldSecret := config.JwtConfig.Secret
|
|
t.Cleanup(func() {
|
|
config.ApplicationConfig.Mode = oldMode
|
|
config.JwtConfig.Timeout = oldTimeout
|
|
config.JwtConfig.Secret = oldSecret
|
|
})
|
|
|
|
config.ApplicationConfig.Mode = "prod"
|
|
config.JwtConfig.Timeout = 0
|
|
config.JwtConfig.Secret = "task-104-test-secret-not-for-production"
|
|
|
|
auth, err := AuthInit()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
now := time.Date(2026, 8, 17, 10, 0, 0, 0, time.UTC)
|
|
auth.TimeFunc = func() time.Time { return now }
|
|
_, expiresAt, err := auth.TokenGenerator(map[string]interface{}{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := expiresAt.Sub(now); got != 30*24*time.Hour {
|
|
t.Fatalf("signed token validity=%s, want 720h", got)
|
|
}
|
|
}
|