package ect import ( "os" "testing" "time" ) func TestDefaultConfig(t *testing.T) { c := DefaultConfig() if c.IATMaxAge != 15*time.Minute { t.Errorf("IATMaxAge: got %v", c.IATMaxAge) } if c.JTIReplaySize != 0 { t.Errorf("JTIReplaySize: got %d", c.JTIReplaySize) } } func TestLoadConfigFromEnv(t *testing.T) { os.Setenv(EnvIATMaxAgeMinutes, "20") os.Setenv(EnvJTIReplayCacheSize, "1000") os.Setenv(EnvIATMaxFutureSec, "45") os.Setenv(EnvDefaultExpiryMin, "12") os.Setenv(EnvJTIReplayTTLMin, "90") defer func() { os.Unsetenv(EnvIATMaxAgeMinutes) os.Unsetenv(EnvJTIReplayCacheSize) os.Unsetenv(EnvIATMaxFutureSec) os.Unsetenv(EnvDefaultExpiryMin) os.Unsetenv(EnvJTIReplayTTLMin) }() c := LoadConfigFromEnv() if c.IATMaxAge != 20*time.Minute { t.Errorf("IATMaxAge from env: got %v", c.IATMaxAge) } if c.JTIReplaySize != 1000 { t.Errorf("JTIReplaySize from env: got %d", c.JTIReplaySize) } if c.IATMaxFuture != 45*time.Second { t.Errorf("IATMaxFuture: got %v", c.IATMaxFuture) } if c.DefaultExpiry != 12*time.Minute { t.Errorf("DefaultExpiry: got %v", c.DefaultExpiry) } if c.JTIReplayTTL != 90*time.Minute { t.Errorf("JTIReplayTTL: got %v", c.JTIReplayTTL) } } func TestLoadConfigFromEnv_invalidInt(t *testing.T) { os.Setenv(EnvIATMaxAgeMinutes, "bad") defer os.Unsetenv(EnvIATMaxAgeMinutes) c := LoadConfigFromEnv() if c.IATMaxAge != 15*time.Minute { t.Errorf("invalid int should keep default: got %v", c.IATMaxAge) } } func TestConfig_CreateOptions(t *testing.T) { c := DefaultConfig() opts := c.CreateOptions("my-kid") if opts.KeyID != "my-kid" { t.Errorf("KeyID: got %q", opts.KeyID) } if opts.DefaultExpiry != c.DefaultExpiry { t.Errorf("DefaultExpiry: got %v", opts.DefaultExpiry) } } func TestConfig_VerifyOptions(t *testing.T) { c := DefaultConfig() opts := c.VerifyOptions() if opts.IATMaxAge != c.IATMaxAge { t.Errorf("IATMaxAge: got %v", opts.IATMaxAge) } if opts.DAG.ClockSkewTolerance != DefaultClockSkewTolerance { t.Errorf("DAG.ClockSkewTolerance: got %d", opts.DAG.ClockSkewTolerance) } }