74 lines
1.9 KiB
Go
74 lines
1.9 KiB
Go
package config
|
|
|
|
import "os"
|
|
import "path/filepath"
|
|
import "testing"
|
|
import "time"
|
|
|
|
func TestLoadDefaults(t *testing.T) {
|
|
var cfg Config
|
|
var err error
|
|
cfg, err = Load("")
|
|
if err != nil {
|
|
t.Fatalf("Load() error: %v", err)
|
|
}
|
|
if cfg.DBDriver == "" || cfg.DBDSN == "" {
|
|
t.Fatalf("defaults not populated: driver=%q dsn=%q", cfg.DBDriver, cfg.DBDSN)
|
|
}
|
|
if cfg.GitHTTPPrefix != "/git" {
|
|
t.Fatalf("unexpected git prefix default: %s", cfg.GitHTTPPrefix)
|
|
}
|
|
if cfg.FrontendDir == "" {
|
|
t.Fatalf("frontend_dir default missing")
|
|
}
|
|
}
|
|
|
|
func TestLoadFromJSONAndEnvOverride(t *testing.T) {
|
|
var dir string
|
|
var path string
|
|
var data string
|
|
var err error
|
|
var cfg Config
|
|
dir = t.TempDir()
|
|
path = filepath.Join(dir, "config.json")
|
|
data = `{"db_driver":"sqlite","db_dsn":"file:test.db","auth_mode":"HyBrId","git_http_prefix":"/g"}`
|
|
err = os.WriteFile(path, []byte(data), 0o644)
|
|
if err != nil {
|
|
t.Fatalf("write config file: %v", err)
|
|
}
|
|
t.Setenv("CODIT_DB_DSN", "file:override.db")
|
|
t.Setenv("CODIT_FRONTEND_DIR", "/srv/codit/frontend")
|
|
cfg, err = Load(path)
|
|
if err != nil {
|
|
t.Fatalf("Load() error: %v", err)
|
|
}
|
|
if cfg.DBDSN != "file:override.db" {
|
|
t.Fatalf("env override failed: %s", cfg.DBDSN)
|
|
}
|
|
if cfg.AuthMode != "hybrid" {
|
|
t.Fatalf("auth_mode normalization failed: %s", cfg.AuthMode)
|
|
}
|
|
if cfg.FrontendDir != "/srv/codit/frontend" {
|
|
t.Fatalf("frontend_dir env override failed: %s", cfg.FrontendDir)
|
|
}
|
|
}
|
|
|
|
func TestDurationUnmarshalJSON(t *testing.T) {
|
|
var d Duration
|
|
var err error
|
|
err = d.UnmarshalJSON([]byte(`"90m"`))
|
|
if err != nil {
|
|
t.Fatalf("UnmarshalJSON() string duration error: %v", err)
|
|
}
|
|
if d.Duration() != 90*time.Minute {
|
|
t.Fatalf("unexpected duration: %v", d.Duration())
|
|
}
|
|
err = d.UnmarshalJSON([]byte(`60000000000`))
|
|
if err != nil {
|
|
t.Fatalf("UnmarshalJSON() numeric duration error: %v", err)
|
|
}
|
|
if d.Duration() != time.Duration(60000000000) {
|
|
t.Fatalf("unexpected numeric duration: %v", d.Duration())
|
|
}
|
|
}
|