diff --git a/README.md b/README.md index 363d282..f6a0584 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# S3 +[utils_test.go](..%2Foss%2Futils_test.go)# S3 A s3 disk driver for `facades.Storage()` of Goravel. diff --git a/s3_test.go b/s3_test.go index fe349f9..e44831b 100644 --- a/s3_test.go +++ b/s3_test.go @@ -269,6 +269,7 @@ func TestStorage(t *testing.T) { name: "Put", setup: func() { assert.Nil(t, driver.Put("Put/1.txt", "Goravel")) + assert.True(t, driver.Exists("Put")) assert.True(t, driver.Exists("Put/1.txt")) assert.True(t, driver.Missing("Put/2.txt")) assert.Nil(t, driver.DeleteDirectory("Put")) @@ -290,6 +291,7 @@ func TestStorage(t *testing.T) { fileInfo := &File{path: "test.txt"} path, err := driver.PutFile("PutFile", fileInfo) assert.Nil(t, err) + assert.True(t, driver.Exists("PutFile")) assert.True(t, driver.Exists(path)) data, err := driver.Get(path) assert.Nil(t, err) diff --git a/utils.go b/utils.go index 7d21262..8c9712e 100644 --- a/utils.go +++ b/utils.go @@ -1,8 +1,8 @@ package s3 import ( + "fmt" "path" - "path/filepath" "strings" "github.com/goravel/framework/contracts/filesystem" @@ -18,18 +18,18 @@ func fullPathOfFile(filePath string, source filesystem.File, name string) (strin return "", err } - return filepath.Join(filePath, strings.TrimSuffix(strings.TrimPrefix(path.Base(name), string(filepath.Separator)), string(filepath.Separator))+"."+extension), nil + return fmt.Sprintf("%s/%s.%s", filePath, strings.TrimSuffix(strings.TrimPrefix(path.Base(name), "/"), "/"), extension), nil } else { - return filepath.Join(filePath, strings.TrimPrefix(path.Base(name), string(filepath.Separator))), nil + return fmt.Sprintf("%s/%s", filePath, strings.TrimPrefix(path.Base(name), "/")), nil } } func validPath(path string) string { - realPath := strings.TrimPrefix(path, "."+string(filepath.Separator)) - realPath = strings.TrimPrefix(realPath, string(filepath.Separator)) + realPath := strings.TrimPrefix(path, "./") + realPath = strings.TrimPrefix(realPath, "/") realPath = strings.TrimPrefix(realPath, ".") - if realPath != "" && !strings.HasSuffix(realPath, string(filepath.Separator)) { - realPath += string(filepath.Separator) + if realPath != "" && !strings.HasSuffix(realPath, "/") { + realPath += "/" } return realPath diff --git a/utils_test.go b/utils_test.go new file mode 100644 index 0000000..ee35efd --- /dev/null +++ b/utils_test.go @@ -0,0 +1,29 @@ +package s3 + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFullPathOfFile(t *testing.T) { + path, err := fullPathOfFile("a/b", &File{path: "logo.png"}, "c") + assert.Equal(t, "a/b/c.png", path) + assert.Nil(t, err) + + path, err = fullPathOfFile("a/b", &File{path: "logo.png"}, "c.jpg") + assert.Equal(t, "a/b/c.jpg", path) + assert.Nil(t, err) +} + +func TestValidPath(t *testing.T) { + assert.Equal(t, "a/", validPath("./a")) + assert.Equal(t, "a/", validPath(".a")) + assert.Equal(t, "a/", validPath("/a")) + assert.Equal(t, "a/", validPath("./a/")) + assert.Equal(t, "a/", validPath(".a/")) + assert.Equal(t, "a/", validPath("/a/")) + assert.Equal(t, "", validPath("./")) + assert.Equal(t, "", validPath(".")) + assert.Equal(t, "", validPath("/")) +}