veza/veza-backend-api/internal/config/env_loader_test.go
2025-12-03 20:29:37 +01:00

107 lines
2.7 KiB
Go

package config
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLoadEnvFiles(t *testing.T) {
tests := []struct {
name string
env string
wantErr bool
}{
{
name: "development environment",
env: "development",
wantErr: false,
},
{
name: "production environment",
env: "production",
wantErr: false,
},
{
name: "test environment",
env: "test",
wantErr: false,
},
{
name: "environment without file (should not error)",
env: "staging",
wantErr: false,
},
{
name: "custom environment",
env: "custom",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Sauvegarder la valeur originale de TEST_VAR si elle existe
originalValue := os.Getenv("TEST_VAR")
defer func() {
if originalValue != "" {
os.Setenv("TEST_VAR", originalValue)
} else {
os.Unsetenv("TEST_VAR")
}
}()
// Unset TEST_VAR avant le test pour éviter les valeurs système
os.Unsetenv("TEST_VAR")
// Test: LoadEnvFiles ne devrait pas causer d'erreur même si les fichiers n'existent pas
err := LoadEnvFiles(tt.env)
if tt.wantErr {
require.Error(t, err)
} else {
// Si le fichier n'existe pas, ce n'est pas une erreur
require.NoError(t, err)
}
})
}
}
func TestLoadEnvFiles_Priority(t *testing.T) {
// Tester que les variables d'environnement système ont priorité sur les fichiers .env
// Sauvegarder la valeur originale
originalValue := os.Getenv("TEST_PRIORITY")
defer func() {
if originalValue != "" {
os.Setenv("TEST_PRIORITY", originalValue)
} else {
os.Unsetenv("TEST_PRIORITY")
}
}()
// Définir variable système avant de charger les fichiers
os.Setenv("TEST_PRIORITY", "system_value")
// Charger les fichiers (même si .env.development n'existe pas, ça ne devrait pas causer d'erreur)
err := LoadEnvFiles("development")
require.NoError(t, err)
// La variable système doit toujours être présente (godotenv ne surcharge pas les variables existantes)
value := os.Getenv("TEST_PRIORITY")
assert.Equal(t, "system_value", value, "System environment variable should have priority")
}
func TestLoadEnvFiles_NoErrorOnMissingFile(t *testing.T) {
// Tester que LoadEnvFiles ne cause pas d'erreur si les fichiers n'existent pas
err := LoadEnvFiles("nonexistent_env_12345")
// Ne devrait pas causer d'erreur si les fichiers n'existent pas
assert.NoError(t, err)
}
func TestLoadEnvFiles_EmptyEnvironment(t *testing.T) {
// Tester avec un environnement vide
err := LoadEnvFiles("")
// Ne devrait pas causer d'erreur
assert.NoError(t, err)
}