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) }