go-microservices-tuto/images/files/local_test.go
2020-07-21 10:59:27 +02:00

68 lines
1.4 KiB
Go

package files
import (
"bytes"
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
func setupLocal(t *testing.T) (*Local, string, func()) {
// create a temporary directory
dir, err := ioutil.TempDir("", "files")
if err != nil {
t.Fatal(err)
}
l, err := NewLocal(dir, 100)
if err != nil {
t.Fatal(err)
}
return l, dir, func() {
// cleanup function
//os.RemoveAll(dir)
}
}
func TestSavesContentsOfReader(t *testing.T) {
savePath := "/1/test.png"
fileContents := "Hello World"
l, dir, cleanup := setupLocal(t)
defer cleanup()
err := l.Save(savePath, bytes.NewBuffer([]byte(fileContents)))
assert.NoError(t, err)
// check the file has been correctly written
f, err := os.Open(filepath.Join(dir, savePath))
assert.NoError(t, err)
// check the contents of the file
d, err := ioutil.ReadAll(f)
assert.NoError(t, err)
assert.Equal(t, fileContents, string(d))
}
func TestGetsContentsAndWritesToWriter(t *testing.T) {
savePath := "/1/test.png"
fileContents := "Hello World"
l, _, cleanup := setupLocal(t)
defer cleanup()
// Save a file
err := l.Save(savePath, bytes.NewBuffer([]byte(fileContents)))
assert.NoError(t, err)
// Read the file back
r, err := l.Get(savePath)
assert.NoError(t, err)
defer r.Close()
// read the full contents of the reader
d, err := ioutil.ReadAll(r)
assert.Equal(t, fileContents, string(d))
}