//go:build linux && integration package namespace import ( "os" "path/filepath" "testing" "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" ) func TestUnpinNamespace(t *testing.T) { tmpDir := t.TempDir() pm := paths.NewPathManager("", tmpDir) profile := "test-profile" nsPath := GetProfileNamespacePath(pm, profile) // Create the base profiles directory first profilesDir := filepath.Dir(nsPath) if err := os.MkdirAll(profilesDir, 0755); err != nil { t.Fatalf("failed to create profiles dir: %v", err) } // Create dummy namespace file if err := os.WriteFile(nsPath, []byte("dummy"), 0644); err != nil { t.Fatalf("failed to create ns file: %v", err) } pidsDir := GetPidsDirPath(pm, profile) if err := os.MkdirAll(pidsDir, 0755); err != nil { t.Fatalf("failed to create pids dir: %v", err) } t.Run("successfully unpins", func(t *testing.T) { err := UnpinNamespace(pm, profile) if err != nil { t.Errorf("unexpected error: %v", err) } if _, err := os.Stat(nsPath); !os.IsNotExist(err) { t.Errorf("namespace file should have been deleted") } if _, err := os.Stat(pidsDir); !os.IsNotExist(err) { t.Errorf("pids directory should have been deleted") } }) t.Run("handles non-existent namespace", func(t *testing.T) { err := UnpinNamespace(pm, profile) if err != nil { t.Errorf("unexpected error when unpinning non-existent namespace: %v", err) } }) }