Files
plainleaf/server/disk_space_primitives_test.go
T
2025-09-22 15:57:26 +02:00

90 lines
2.8 KiB
Go

package server
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
func TestDiskSpacePrimitives(t *testing.T) {
// Create DiskSpacePrimitives instance
space, err := NewDiskSpacePrimitives(t.TempDir(), "")
assert.NoError(t, err, "Failed to create DiskSpacePrimitives")
// Run all test suites using local testing utilities
TestSpacePrimitives(t, space)
}
// Test path safety - specific to disk implementation
func TestSafePath(t *testing.T) {
space, err := NewDiskSpacePrimitives(t.TempDir(), "")
assert.NoError(t, err, "Failed to create DiskSpacePrimitives")
// Test that paths outside root are rejected
_, err = space.safePath("../outside")
assert.Equal(t, ErrPathOutsideRoot, err, "Expected ErrPathOutsideRoot for '../outside'")
_, err = space.safePath("/etc/passwd")
assert.Equal(t, ErrPathOutsideRoot, err, "Expected ErrPathOutsideRoot for '/etc/passwd'")
// Test that valid paths work
_, err = space.safePath("valid/path.txt")
assert.NoError(t, err, "Valid path should not error")
_, err = space.safePath("./valid.txt")
assert.NoError(t, err, "Valid relative path should not error")
}
func TestGitIgnore(t *testing.T) {
space, err := NewDiskSpacePrimitives(t.TempDir(), "*.txt\n*.jpg")
assert.NoError(t, err, "Failed to create DiskSpacePrimitives")
// Initially no files
fileList, err := space.FetchFileList()
assert.NoError(t, err)
assert.Len(t, fileList, 0)
// Write a file matching the gitignore pattern
_, err = space.WriteFile("test.txt", []byte("Test"), nil)
assert.NoError(t, err)
// And one that doesn't
_, err = space.WriteFile("test.md", []byte("Test"), nil)
assert.NoError(t, err)
fileList, err = space.FetchFileList()
assert.NoError(t, err)
// Only 1 file
assert.Len(t, fileList, 1)
assert.Equal(t, fileList[0].Name, "test.md")
}
// Test directory cleanup - specific to disk implementation
func TestCleanOrphaned(t *testing.T) {
tmpDir := t.TempDir()
space, err := NewDiskSpacePrimitives(tmpDir, "")
assert.NoError(t, err, "Failed to create DiskSpacePrimitives")
// Create nested directory structure with a file
_, err = space.WriteFile("deep/nested/dir/file.txt", []byte("test"), nil)
assert.NoError(t, err, "Failed to write nested file")
// Verify the directories were created
nestedPath := filepath.Join(tmpDir, "deep", "nested", "dir")
_, err = os.Stat(nestedPath)
assert.False(t, os.IsNotExist(err), "Nested directory should exist")
// Delete the file
err = space.DeleteFile("deep/nested/dir/file.txt")
assert.NoError(t, err, "Failed to delete nested file")
_, err = os.Stat(nestedPath)
assert.True(t, os.IsNotExist(err), "Empty nested directory should be cleaned up")
deepPath := filepath.Join(tmpDir, "deep")
_, err = os.Stat(deepPath)
assert.True(t, os.IsNotExist(err), "Empty parent directory should be cleaned up")
}