Change JWT TTL config from duration to string for flexibility
- The mapstructure library is no longer needed for direct duration parsing since we now store TTLs as string durations (e.g., "15m", "168h") and parse them on demand via helper methods. - This allows more flexible duration formats in configuration and moves the parsing responsibility to the JWT config struct itself.
This commit is contained in:
@@ -25,8 +25,8 @@ func TestDefaults(t *testing.T) {
|
||||
{"database.path", cfg.Database.Path, "data/mygo.db"},
|
||||
{"storage.driver", cfg.Storage.Driver, "local"},
|
||||
{"storage.local.path", cfg.Storage.Local.Path, "data/files"},
|
||||
{"jwt.access_ttl", cfg.JWT.AccessTTL, 15 * time.Minute},
|
||||
{"jwt.refresh_ttl", cfg.JWT.RefreshTTL, 168 * time.Hour},
|
||||
{"jwt.access_ttl", cfg.JWT.AccessTTL, "15m"},
|
||||
{"jwt.refresh_ttl", cfg.JWT.RefreshTTL, "168h"},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
@@ -86,11 +86,11 @@ jwt:
|
||||
if cfg.JWT.Secret != "test-secret" {
|
||||
t.Errorf("jwt.secret = %q, want %q", cfg.JWT.Secret, "test-secret")
|
||||
}
|
||||
if cfg.JWT.AccessTTL != 30*time.Minute {
|
||||
t.Errorf("jwt.access_ttl = %v, want %v", cfg.JWT.AccessTTL, 30*time.Minute)
|
||||
if cfg.JWT.AccessTTL != "30m" {
|
||||
t.Errorf("jwt.access_ttl = %q, want %q", cfg.JWT.AccessTTL, "30m")
|
||||
}
|
||||
if cfg.JWT.RefreshTTL != 72*time.Hour {
|
||||
t.Errorf("jwt.refresh_ttl = %v, want %v", cfg.JWT.RefreshTTL, 72*time.Hour)
|
||||
if cfg.JWT.RefreshTTL != "72h" {
|
||||
t.Errorf("jwt.refresh_ttl = %q, want %q", cfg.JWT.RefreshTTL, "72h")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,3 +195,17 @@ func TestExplicitConfigFileNotFound(t *testing.T) {
|
||||
t.Fatal("expected error when explicitly specifying a nonexistent config file")
|
||||
}
|
||||
}
|
||||
|
||||
func TestJWTConfigAccessDuration(t *testing.T) {
|
||||
j := JWTConfig{AccessTTL: "15m"}
|
||||
if got := j.AccessDuration(); got != 15*time.Minute {
|
||||
t.Errorf("AccessDuration() = %v, want %v", got, 15*time.Minute)
|
||||
}
|
||||
}
|
||||
|
||||
func TestJWTConfigRefreshDuration(t *testing.T) {
|
||||
j := JWTConfig{RefreshTTL: "168h"}
|
||||
if got := j.RefreshDuration(); got != 168*time.Hour {
|
||||
t.Errorf("RefreshDuration() = %v, want %v", got, 168*time.Hour)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user