diff options
author | Chris <ccbrown112@gmail.com> | 2017-11-16 15:04:27 -0600 |
---|---|---|
committer | Jonathan <jonfritz@gmail.com> | 2017-11-16 16:04:27 -0500 |
commit | eb1a00ef5f93b19c2d49b26de057ee2c51c09e45 (patch) | |
tree | e63afa695283e15c5cd9ee2a437d74024dcc5c20 /utils/file_backend_test.go | |
parent | ef69d93abfb192bc7a2416f3cf2622d99fd27dd5 (diff) | |
download | chat-eb1a00ef5f93b19c2d49b26de057ee2c51c09e45.tar.gz chat-eb1a00ef5f93b19c2d49b26de057ee2c51c09e45.tar.bz2 chat-eb1a00ef5f93b19c2d49b26de057ee2c51c09e45.zip |
Reorganize file util functionality (#7848)
* reorganize file util functionality
* fix api test compilation
* fix rebase issue
Diffstat (limited to 'utils/file_backend_test.go')
-rw-r--r-- | utils/file_backend_test.go | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/utils/file_backend_test.go b/utils/file_backend_test.go new file mode 100644 index 000000000..0989f783c --- /dev/null +++ b/utils/file_backend_test.go @@ -0,0 +1,164 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package utils + +import ( + "fmt" + "io/ioutil" + "os" + "testing" + + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + "github.com/mattermost/mattermost-server/model" +) + +type FileBackendTestSuite struct { + suite.Suite + + settings model.FileSettings + backend FileBackend +} + +func TestLocalFileBackendTestSuite(t *testing.T) { + dir, err := ioutil.TempDir("", "") + require.NoError(t, err) + defer os.RemoveAll(dir) + + suite.Run(t, &FileBackendTestSuite{ + settings: model.FileSettings{ + DriverName: model.NewString(model.IMAGE_DRIVER_LOCAL), + Directory: dir, + }, + }) +} + +func TestS3FileBackendTestSuite(t *testing.T) { + s3Host := os.Getenv("CI_HOST") + if s3Host == "" { + s3Host = "dockerhost" + } + + s3Port := os.Getenv("CI_MINIO_PORT") + if s3Port == "" { + s3Port = "9001" + } + + s3Endpoint := fmt.Sprintf("%s:%s", s3Host, s3Port) + + suite.Run(t, &FileBackendTestSuite{ + settings: model.FileSettings{ + DriverName: model.NewString(model.IMAGE_DRIVER_S3), + AmazonS3AccessKeyId: "minioaccesskey", + AmazonS3SecretAccessKey: "miniosecretkey", + AmazonS3Bucket: "mattermost-test", + AmazonS3Endpoint: s3Endpoint, + AmazonS3SSL: model.NewBool(false), + }, + }) +} + +func (s *FileBackendTestSuite) SetupTest() { + TranslationsPreInit() + + backend, err := NewFileBackend(&s.settings) + require.Nil(s.T(), err) + s.backend = backend +} + +func (s *FileBackendTestSuite) TestConnection() { + s.Nil(s.backend.TestConnection()) +} + +func (s *FileBackendTestSuite) TestReadWriteFile() { + b := []byte("test") + path := "tests/" + model.NewId() + + s.Nil(s.backend.WriteFile(b, path)) + defer s.backend.RemoveFile(path) + + read, err := s.backend.ReadFile(path) + s.Nil(err) + + readString := string(read) + s.EqualValues(readString, "test") +} + +func (s *FileBackendTestSuite) TestMoveFile() { + b := []byte("test") + path1 := "tests/" + model.NewId() + path2 := "tests/" + model.NewId() + + s.Nil(s.backend.WriteFile(b, path1)) + defer s.backend.RemoveFile(path1) + + s.Nil(s.backend.MoveFile(path1, path2)) + defer s.backend.RemoveFile(path2) + + _, err := s.backend.ReadFile(path1) + s.Error(err) + + _, err = s.backend.ReadFile(path2) + s.Nil(err) +} + +func (s *FileBackendTestSuite) TestRemoveFile() { + b := []byte("test") + path := "tests/" + model.NewId() + + s.Nil(s.backend.WriteFile(b, path)) + s.Nil(s.backend.RemoveFile(path)) + + _, err := s.backend.ReadFile(path) + s.Error(err) + + s.Nil(s.backend.WriteFile(b, "tests2/foo")) + s.Nil(s.backend.WriteFile(b, "tests2/bar")) + s.Nil(s.backend.WriteFile(b, "tests2/asdf")) + s.Nil(s.backend.RemoveDirectory("tests2")) +} + +func (s *FileBackendTestSuite) TestListDirectory() { + b := []byte("test") + path1 := "19700101/" + model.NewId() + path2 := "19800101/" + model.NewId() + + s.Nil(s.backend.WriteFile(b, path1)) + defer s.backend.RemoveFile(path1) + s.Nil(s.backend.WriteFile(b, path2)) + defer s.backend.RemoveFile(path2) + + paths, err := s.backend.ListDirectory("") + s.Nil(err) + + found1 := false + found2 := false + for _, path := range *paths { + if path == "19700101" { + found1 = true + } else if path == "19800101" { + found2 = true + } + } + s.True(found1) + s.True(found2) +} + +func (s *FileBackendTestSuite) TestRemoveDirectory() { + b := []byte("test") + + s.Nil(s.backend.WriteFile(b, "tests2/foo")) + s.Nil(s.backend.WriteFile(b, "tests2/bar")) + s.Nil(s.backend.WriteFile(b, "tests2/aaa")) + + s.Nil(s.backend.RemoveDirectory("tests2")) + + _, err := s.backend.ReadFile("tests2/foo") + s.Error(err) + _, err = s.backend.ReadFile("tests2/bar") + s.Error(err) + _, err = s.backend.ReadFile("tests2/asdf") + s.Error(err) +} |