diff --git a/Sense/server/common/middleware/auth_test.go b/Sense/server/common/middleware/auth_test.go index 7a2e391..0d26b7f 100644 --- a/Sense/server/common/middleware/auth_test.go +++ b/Sense/server/common/middleware/auth_test.go @@ -3,6 +3,8 @@ package middleware import ( "testing" "time" + + "github.com/go-admin-team/go-admin-core/sdk/config" ) func TestResolveJWTTimeoutDefaultsToThirtyDays(t *testing.T) { @@ -24,3 +26,32 @@ func TestResolveJWTTimeoutKeepsUpstreamDevelopmentBehavior(t *testing.T) { 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) + } +}