test: fix config tests failing in CI when /etc/pulse doesn't exist

Tests were calling Load() without setting PULSE_DATA_DIR, causing them
to try to create /etc/pulse which fails in CI environments.

- Skip TestLoad_Defaults if /etc/pulse doesn't exist
- Add PULSE_DATA_DIR to tests that were missing it
This commit is contained in:
rcourtman
2026-01-04 17:50:57 +00:00
parent 7a1e3e9b4e
commit 301b2fd050
3 changed files with 18 additions and 0 deletions
@@ -35,6 +35,7 @@ func TestLoad_EnvLoadErrors(t *testing.T) {
}
func TestLoad_EnvOverrides_Invalid_Extra(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("BACKUP_POLLING_CYCLES", "-1")
t.Setenv("BACKUP_POLLING_INTERVAL", "-5s")
t.Setenv("PVE_POLLING_INTERVAL", "5s") // too low
@@ -51,6 +52,7 @@ func TestLoad_EnvOverrides_Invalid_Extra(t *testing.T) {
}
func TestLoad_EnvOverrides_Seconds(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("BACKUP_POLLING_INTERVAL", "30")
t.Setenv("PVE_POLLING_INTERVAL", "45")
@@ -62,6 +64,7 @@ func TestLoad_EnvOverrides_Seconds(t *testing.T) {
}
func TestLoad_EnvOverrides_More(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("PULSE_ENABLE_SENSOR_PROXY", "true")
t.Setenv("PULSE_AUTH_HIDE_LOCAL_LOGIN", "true")
t.Setenv("PULSE_DISABLE_DOCKER_UPDATE_ACTIONS", "true")
@@ -89,6 +92,7 @@ func TestLoad_EnvOverrides_More(t *testing.T) {
}
func TestLoad_EnvOverrides_AdaptivePolling_Intervals(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("ADAPTIVE_POLLING_BASE_INTERVAL", "30s")
t.Setenv("ADAPTIVE_POLLING_MIN_INTERVAL", "10s")
t.Setenv("ADAPTIVE_POLLING_MAX_INTERVAL", "10m")
@@ -102,6 +106,7 @@ func TestLoad_EnvOverrides_AdaptivePolling_Intervals(t *testing.T) {
}
func TestLoad_EnvOverrides_Invalid_Negative(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("GUEST_METADATA_MIN_REFRESH_INTERVAL", "-1s")
t.Setenv("GUEST_METADATA_REFRESH_JITTER", "-500ms")
t.Setenv("GUEST_METADATA_RETRY_BACKOFF", "-1s")
@@ -88,6 +88,7 @@ func TestLoad_MockEnvErrors(t *testing.T) {
os.Chdir(tempCWD)
defer os.Chdir(cwd)
t.Setenv("PULSE_DATA_DIR", tempCWD)
require.NoError(t, os.WriteFile("mock.env", []byte("invalid="), 0644))
require.NoError(t, os.WriteFile("mock.env.local", []byte("invalid="), 0644))
+12
View File
@@ -11,6 +11,12 @@ import (
)
func TestLoad_Defaults(t *testing.T) {
// This test requires write access to /etc/pulse (the default data path)
// Skip in CI environments where /etc/pulse doesn't exist or isn't writable
if _, err := os.Stat("/etc/pulse"); os.IsNotExist(err) {
t.Skip("Skipping test: /etc/pulse does not exist (likely CI environment)")
}
// Clear env vars that might affect defaults
os.Unsetenv("PULSE_DATA_DIR")
os.Unsetenv("PORT")
@@ -84,6 +90,8 @@ func TestLoad_APITokens_Migration(t *testing.T) {
}
func TestLoad_LegacyAPIToken(t *testing.T) {
tempDir := t.TempDir()
t.Setenv("PULSE_DATA_DIR", tempDir)
t.Setenv("API_TOKEN", "legacytoken")
cfg, err := Load()
@@ -115,6 +123,7 @@ func TestLoad_MockEnv(t *testing.T) {
}
func TestLoad_ProxyAuth(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("PROXY_AUTH_SECRET", "secret")
t.Setenv("PROXY_AUTH_USER_HEADER", "X-User")
@@ -126,6 +135,7 @@ func TestLoad_ProxyAuth(t *testing.T) {
}
func TestLoad_OIDC(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
t.Setenv("OIDC_ENABLED", "true")
t.Setenv("OIDC_ISSUER_URL", "https://issuer.com")
t.Setenv("OIDC_CLIENT_ID", "client-id")
@@ -140,6 +150,7 @@ func TestLoad_OIDC(t *testing.T) {
}
func TestLoad_AuthPass_AutoHash(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
pass := "mysecretpassword"
t.Setenv("PULSE_AUTH_PASS", pass)
@@ -151,6 +162,7 @@ func TestLoad_AuthPass_AutoHash(t *testing.T) {
}
func TestLoad_AuthPass_PreHashed(t *testing.T) {
t.Setenv("PULSE_DATA_DIR", t.TempDir())
hash := "$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy"
t.Setenv("PULSE_AUTH_PASS", hash)