config_test.go
·
59 строк
·
1.5 KB
| 1 | package config |
| 2 | |
| 3 | import ( |
| 4 | "os" |
| 5 | "path/filepath" |
| 6 | "testing" |
| 7 | ) |
| 8 | |
| 9 | func TestLoadDefaultsAndOverrides(t *testing.T) { |
| 10 | cfg, err := Load("") |
| 11 | if err != nil { |
| 12 | t.Fatalf("Load default failed: %v", err) |
| 13 | } |
| 14 | if cfg.Server.Port != 3000 || cfg.Landing.DefaultLang != "ru" { |
| 15 | t.Fatalf("unexpected default config: %+v", cfg) |
| 16 | } |
| 17 | |
| 18 | tmpFile := filepath.Join(t.TempDir(), "polar.toml") |
| 19 | tomlData := ` |
| 20 | [server] |
| 21 | host = "127.0.0.1" |
| 22 | port = 4000 |
| 23 | base_url = "https://git.example.com/" |
| 24 | |
| 25 | [storage] |
| 26 | data_dir = "/var/lib/polar" |
| 27 | |
| 28 | [auth] |
| 29 | registration_enabled = false |
| 30 | |
| 31 | [landing] |
| 32 | enabled = false |
| 33 | default_lang = "en" |
| 34 | ` |
| 35 | if err := os.WriteFile(tmpFile, []byte(tomlData), 0o644); err != nil { |
| 36 | t.Fatalf("write temp toml: %v", err) |
| 37 | } |
| 38 | |
| 39 | t.Setenv("POLAR_SERVER_PORT", "8080") |
| 40 | loaded, err := Load(tmpFile) |
| 41 | if err != nil { |
| 42 | t.Fatalf("Load from file failed: %v", err) |
| 43 | } |
| 44 | if loaded.Server.Port != 8080 { |
| 45 | t.Fatalf("expected env POLAR_SERVER_PORT=8080 to override file port 4000, got %d", loaded.Server.Port) |
| 46 | } |
| 47 | if loaded.Server.BaseURL != "https://git.example.com" { |
| 48 | t.Fatalf("expected trailing slash trimmed from base_url, got %q", loaded.Server.BaseURL) |
| 49 | } |
| 50 | if loaded.Auth.RegistrationEnabled { |
| 51 | t.Fatalf("expected registration_enabled = false") |
| 52 | } |
| 53 | if loaded.Landing.DefaultLang != "en" { |
| 54 | t.Fatalf("expected default_lang = en, got %q", loaded.Landing.DefaultLang) |
| 55 | } |
| 56 | if loaded.DBPath() != filepath.Join(loaded.Storage.DataDir, "polar.db") { |
| 57 | t.Fatalf("expected DBPath to default to polar.db, got %q", loaded.DBPath()) |
| 58 | } |
| 59 | } |
| 60 |