filemanager_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package filemanager
  2. import (
  3. "context"
  4. "fmt"
  5. "io"
  6. "math/rand"
  7. "os"
  8. "path/filepath"
  9. "testing"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func Test_NewFileManager(t *testing.T) {
  13. t.Run("file system", func(t *testing.T) {
  14. tmpPath := filepath.Join(os.TempDir(), fmt.Sprintf("opencost-test-file-manager-%d", rand.Int31()))
  15. fm, err := NewFileManager(tmpPath)
  16. require.NoError(t, err)
  17. downloadFile, err := os.CreateTemp("", "opencost-test-file-manager-*")
  18. require.NoError(t, err)
  19. err = fm.Download(context.TODO(), downloadFile)
  20. require.ErrorIs(t, err, ErrNotFound)
  21. uploadFile, err := os.CreateTemp("", "opencost-test-file-manager-*")
  22. require.NoError(t, err)
  23. _, err = uploadFile.WriteString("test-content")
  24. require.NoError(t, err)
  25. require.NoError(t, err)
  26. err = fm.Upload(context.TODO(), uploadFile)
  27. require.NoError(t, err)
  28. err = fm.Download(context.TODO(), downloadFile)
  29. require.NoError(t, err)
  30. _, err = downloadFile.Seek(0, io.SeekStart)
  31. require.NoError(t, err)
  32. data, err := io.ReadAll(downloadFile)
  33. require.NoError(t, err)
  34. require.Equal(t, "test-content", string(data))
  35. })
  36. }