rin
Публичный Open-source lightweight git hosting.
config_test.go · 59 строк · 1.5 KB
Raw
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