package fsys import ( "github.com/stretchr/testify/assert" "io" "io/fs" "testing" ) func TestStorageLocal(t *testing.T) { stor, err := New(Config{ Type: "local", Path: "./test/local", }) assert.NoError(t, err) t.Log("== Write ==") err = stor.Write("test.txt", []byte("hi"), WriteOptions{}) assert.NoError(t, err) t.Log("== Stat ==") fileInfo, err := stor.Stat("test.txt") assert.NoError(t, err) assert.Equal(t, "test.txt", fileInfo.Name) assert.Equal(t, int64(len("hi")), fileInfo.Size) assert.Equal(t, fs.FileMode(0600), fileInfo.Mode) t.Log("== Read ==") fileContent, err := stor.Read("test.txt") assert.NoError(t, err) assert.Equal(t, []byte("hi"), fileContent) t.Log("== Copy ==") err = stor.Copy("test.txt", "test2.txt") assert.NoError(t, err) copyFileInfo, err := stor.Stat("test2.txt") assert.NoError(t, err) assert.Equal(t, fs.FileMode(0600), copyFileInfo.Mode) assert.Equal(t, "test2.txt", copyFileInfo.Name) assert.Equal(t, int64(len("hi")), copyFileInfo.Size) t.Log("== Move ==") err = stor.Move("test2.txt", "test3.txt") assert.NoError(t, err) moveFileInfo, err := stor.Stat("test3.txt") assert.NoError(t, err) assert.Equal(t, fs.FileMode(0600), moveFileInfo.Mode) assert.Equal(t, "test3.txt", moveFileInfo.Name) assert.Equal(t, int64(len("hi")), moveFileInfo.Size) t.Log("== Open ==") file, err := stor.Open("test.txt") assert.NoError(t, err) assert.Equal(t, "test.txt", file.Name) fileContent, err = io.ReadAll(file) assert.NoError(t, err) assert.Equal(t, []byte("hi"), fileContent) err = file.Close() assert.NoError(t, err) t.Log("== Delete ==") err = stor.Delete("test.txt") assert.NoError(t, err) } func TestStorageS3(t *testing.T) { stor, err := New(Config{ Type: "s3", S3BucketName: "test", S3AccessID: "root", S3AccessKey: "password123", S3Endpoint: "127.0.0.1:9000", }) assert.NoError(t, err) t.Log("== Write ==") err = stor.Write("test.txt", []byte("hi"), WriteOptions{}) assert.NoError(t, err) t.Log("== Stat ==") fileInfo, err := stor.Stat("test.txt") assert.NoError(t, err) assert.Equal(t, "test.txt", fileInfo.Name) assert.Equal(t, int64(len("hi")), fileInfo.Size) assert.Equal(t, fs.FileMode(0777), fileInfo.Mode) t.Log("== Read ==") fileContent, err := stor.Read("test.txt") assert.NoError(t, err) assert.Equal(t, []byte("hi"), fileContent) t.Log("== Copy ==") err = stor.Copy("test.txt", "test2.txt") assert.NoError(t, err) copyFileInfo, err := stor.Stat("test2.txt") assert.NoError(t, err) assert.Equal(t, fs.FileMode(0777), copyFileInfo.Mode) assert.Equal(t, "test2.txt", copyFileInfo.Name) assert.Equal(t, int64(len("hi")), copyFileInfo.Size) t.Log("== Move ==") err = stor.Move("test2.txt", "test3.txt") assert.NoError(t, err) moveFileInfo, err := stor.Stat("test3.txt") assert.NoError(t, err) assert.Equal(t, fs.FileMode(0777), moveFileInfo.Mode) assert.Equal(t, "test3.txt", moveFileInfo.Name) assert.Equal(t, int64(len("hi")), moveFileInfo.Size) t.Log("== Open ==") file, err := stor.Open("test.txt") assert.NoError(t, err) assert.Equal(t, "test.txt", file.Name) fileContent, err = io.ReadAll(file) assert.NoError(t, err) assert.Equal(t, []byte("hi"), fileContent) err = file.Close() assert.NoError(t, err) t.Log("== Delete ==") err = stor.Delete("test.txt") assert.NoError(t, err) }