two/internal/config/agent/config_test.go
GnomeZworc c7d20b4124
f-19: test: ajouter des test
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-03-31 20:05:30 +02:00

83 lines
2.2 KiB
Go

package configuration
import (
"os"
"path/filepath"
"testing"
)
func writeYAML(t *testing.T, content string) string {
t.Helper()
path := filepath.Join(t.TempDir(), "config.yml")
if err := os.WriteFile(path, []byte(content), 0644); err != nil {
t.Fatalf("impossible d'écrire le fichier de config : %v", err)
}
return path
}
// --- LoadConfig ---
func TestLoadConfig_ValidFile(t *testing.T) {
path := writeYAML(t, `
database:
path: /tmp/mydb
`)
cfg, err := LoadConfig(path)
if err != nil {
t.Fatalf("LoadConfig a échoué : %v", err)
}
if cfg.Database.Path != "/tmp/mydb" {
t.Errorf("database.path attendu %q, obtenu %q", "/tmp/mydb", cfg.Database.Path)
}
}
func TestLoadConfig_DefaultPath(t *testing.T) {
// Fichier vide → viper applique la valeur par défaut
path := writeYAML(t, "")
cfg, err := LoadConfig(path)
if err != nil {
t.Fatalf("LoadConfig a échoué : %v", err)
}
if cfg.Database.Path != "/var/lib/two/data/" {
t.Errorf("valeur par défaut attendue %q, obtenu %q", "/var/lib/two/data/", cfg.Database.Path)
}
}
func TestLoadConfig_MissingFile_UsesDefaults(t *testing.T) {
// Fichier inexistant : viper ignore l'erreur ReadInConfig et retourne les défauts
cfg, err := LoadConfig("/chemin/inexistant/config.yml")
if err != nil {
t.Fatalf("LoadConfig devrait retourner les défauts si le fichier est absent : %v", err)
}
if cfg.Database.Path != "/var/lib/two/data/" {
t.Errorf("valeur par défaut attendue, obtenu %q", cfg.Database.Path)
}
}
func TestLoadConfig_PartialConfig_MissingDatabaseKey(t *testing.T) {
// Fichier sans la clé database → valeur par défaut
path := writeYAML(t, `
autrekey: valeur
`)
cfg, err := LoadConfig(path)
if err != nil {
t.Fatalf("LoadConfig a échoué : %v", err)
}
if cfg.Database.Path != "/var/lib/two/data/" {
t.Errorf("valeur par défaut attendue, obtenu %q", cfg.Database.Path)
}
}
func TestLoadConfig_CustomPath(t *testing.T) {
path := writeYAML(t, `
database:
path: /opt/two/data
`)
cfg, err := LoadConfig(path)
if err != nil {
t.Fatalf("LoadConfig a échoué : %v", err)
}
if cfg.Database.Path != "/opt/two/data" {
t.Errorf("attendu %q, obtenu %q", "/opt/two/data", cfg.Database.Path)
}
}