diff options
Diffstat (limited to 'internal/namespace/pinning_test.go')
| -rw-r--r-- | internal/namespace/pinning_test.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/internal/namespace/pinning_test.go b/internal/namespace/pinning_test.go new file mode 100644 index 0000000..c65e1b1 --- /dev/null +++ b/internal/namespace/pinning_test.go @@ -0,0 +1,53 @@ +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) + } + }) +} |
