diff options
Diffstat (limited to 'tests/e2e/config_test.go')
| -rw-r--r-- | tests/e2e/config_test.go | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/tests/e2e/config_test.go b/tests/e2e/config_test.go index e613b13..c8749ce 100644 --- a/tests/e2e/config_test.go +++ b/tests/e2e/config_test.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "os/exec" + "path/filepath" "strings" "testing" ) @@ -14,12 +15,30 @@ func TestConfigPropagation(t *testing.T) { t.Skipf("Skipping test: %v", err) } + tmpConfigDir := t.TempDir() tmpRuntimeDir := t.TempDir() profile := "config-test-vpn" + // Write a valid dummy profile for config-test-vpn so it doesn't fail the profile-existence check + confContent := `[Interface] +PrivateKey = YXNkZmFzZGZhc2RmYXNkZmFzZGZhc2RmYXNkZmFzZGY= +Address = 10.0.0.2/24 + +[Peer] +PublicKey = YXNkZmFzZGZhc2RmYXNkZmFzZGZhc2RmYXNkZmFzZGY= +Endpoint = 127.0.0.1:51820 +AllowedIPs = 10.0.0.0/24 +` + profilesDir := filepath.Join(tmpConfigDir, "wg-wrap", "profiles") + _ = os.MkdirAll(profilesDir, 0755) + _ = os.WriteFile(filepath.Join(profilesDir, profile+".conf"), []byte(confContent), 0644) + // Test 1: Non-isolated configuration cmd := exec.Command(binaryPath, "show-config", "--profile", profile) - cmd.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir)) + cmd.Env = append(os.Environ(), + fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir), + fmt.Sprintf("XDG_CONFIG_HOME=%s", tmpConfigDir), + ) out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("show-config failed: %v\nOutput: %s", err, string(out)) @@ -37,16 +56,11 @@ func TestConfigPropagation(t *testing.T) { } // Test 2: Configuration after bootstrap (Isolated) - // We use 'test-ns' as a way to run a command that we know is isolated. - // Actually, we can just run 'show-config' but the current 'Route' - // handles 'show-config' BEFORE the bootstrap. - // To test isolated config, we can't use 'show-config' because it's a diagnostic - // command designed to run outside isolation. - - // To verify what an isolated process sees, we can use a target command - // that prints the environment. cmdIsolated := exec.Command(binaryPath, "--profile", profile, "--", "sh", "-c", "echo $XDG_RUNTIME_DIR") - cmdIsolated.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir)) + cmdIsolated.Env = append(os.Environ(), + fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir), + fmt.Sprintf("XDG_CONFIG_HOME=%s", tmpConfigDir), + ) outIso, err := cmdIsolated.CombinedOutput() if err != nil { t.Fatalf("Isolated command failed: %v\nOutput: %s", err, string(outIso)) |
