From 3463e1fc932bc4e36a3014a084af0459a9cd9af7 Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Fri, 22 Sep 2017 19:38:46 +0100 Subject: Run file tests on Minio and local drivers. (#7482) --- utils/file_test.go | 175 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 98 insertions(+), 77 deletions(-) (limited to 'utils/file_test.go') diff --git a/utils/file_test.go b/utils/file_test.go index 6bb042447..c9a50472d 100644 --- a/utils/file_test.go +++ b/utils/file_test.go @@ -6,117 +6,138 @@ package utils import ( "testing" + "github.com/stretchr/testify/suite" + "github.com/mattermost/mattermost-server/model" ) -func TestReadWriteFile(t *testing.T) { - TranslationsPreInit() - LoadConfig("config.json") - InitTranslations(Cfg.LocalizationSettings) +type FileTestSuite struct { + suite.Suite - b := []byte("test") - path := "tests/" + model.NewId() + testDriver string - if err := WriteFile(b, path); err != nil { - t.Fatal(err) + // Config to be reset after tests. + driverName string + amazonS3AccessKeyId string + amazonS3SecretAccessKey string + amazonS3Bucket string + amazonS3Endpoint string + amazonS3SSL bool +} + +func TestFileLocalTestSuite(t *testing.T) { + testsuite := FileTestSuite{ + testDriver: model.IMAGE_DRIVER_LOCAL, } - defer RemoveFile(path) + suite.Run(t, &testsuite) +} - if read, err := ReadFile(path); err != nil { - t.Fatal(err) - } else if readString := string(read); readString != "test" { - t.Fatal("should've read back contents of file") +func TestFileMinioTestSuite(t *testing.T) { + testsuite := FileTestSuite{ + testDriver: model.IMAGE_DRIVER_S3, } + suite.Run(t, &testsuite) } -func TestMoveFile(t *testing.T) { +func (s *FileTestSuite) SetupTest() { TranslationsPreInit() LoadConfig("config.json") InitTranslations(Cfg.LocalizationSettings) + // Save state to restore after the test has run. + s.driverName = *Cfg.FileSettings.DriverName + s.amazonS3AccessKeyId = Cfg.FileSettings.AmazonS3AccessKeyId + s.amazonS3SecretAccessKey = Cfg.FileSettings.AmazonS3SecretAccessKey + s.amazonS3Bucket = Cfg.FileSettings.AmazonS3Bucket + s.amazonS3Endpoint = Cfg.FileSettings.AmazonS3Endpoint + s.amazonS3SSL = *Cfg.FileSettings.AmazonS3SSL + + // Set up the state for the tests. + if s.testDriver == model.IMAGE_DRIVER_LOCAL { + *Cfg.FileSettings.DriverName = model.IMAGE_DRIVER_LOCAL + } else if s.testDriver == model.IMAGE_DRIVER_S3 { + *Cfg.FileSettings.DriverName = model.IMAGE_DRIVER_S3 + Cfg.FileSettings.AmazonS3AccessKeyId = "minioaccesskey" + Cfg.FileSettings.AmazonS3SecretAccessKey = "miniosecretkey" + Cfg.FileSettings.AmazonS3Bucket = "mattermost-test" + Cfg.FileSettings.AmazonS3Endpoint = "dockerhost:9001" + *Cfg.FileSettings.AmazonS3SSL = false + } else { + s.T().Fatal("Invalid image driver set for test suite.") + } +} + +func (s *FileTestSuite) TearDownTest() { + // Restore the test state. + *Cfg.FileSettings.DriverName = s.driverName + Cfg.FileSettings.AmazonS3AccessKeyId = s.amazonS3AccessKeyId + Cfg.FileSettings.AmazonS3SecretAccessKey = s.amazonS3SecretAccessKey + Cfg.FileSettings.AmazonS3Bucket = s.amazonS3Bucket + Cfg.FileSettings.AmazonS3Endpoint = s.amazonS3Endpoint + *Cfg.FileSettings.AmazonS3SSL = s.amazonS3SSL +} + +func (s *FileTestSuite) TestReadWriteFile() { + b := []byte("test") + path := "tests/" + model.NewId() + + s.Nil(WriteFile(b, path)) + defer RemoveFile(path) + + read, err := ReadFile(path) + s.Nil(err) + + readString := string(read) + s.EqualValues(readString, "test") +} + +func (s *FileTestSuite) TestMoveFile() { b := []byte("test") path1 := "tests/" + model.NewId() path2 := "tests/" + model.NewId() - if err := WriteFile(b, path1); err != nil { - t.Fatal(err) - } + s.Nil(WriteFile(b, path1)) defer RemoveFile(path1) - if err := MoveFile(path1, path2); err != nil { - t.Fatal(err) - } + s.Nil(MoveFile(path1, path2)) defer RemoveFile(path2) - if _, err := ReadFile(path1); err == nil { - t.Fatal("file should no longer exist at old path") - } + _, err := ReadFile(path1) + s.Error(err) - if _, err := ReadFile(path2); err != nil { - t.Fatal("file should exist at new path", err) - } + _, err = ReadFile(path2) + s.Nil(err) } -func TestRemoveFile(t *testing.T) { - TranslationsPreInit() - LoadConfig("config.json") - InitTranslations(Cfg.LocalizationSettings) - +func (s *FileTestSuite) TestRemoveFile() { b := []byte("test") path := "tests/" + model.NewId() - if err := WriteFile(b, path); err != nil { - t.Fatal(err) - } - - if err := RemoveFile(path); err != nil { - t.Fatal(err) - } + s.Nil(WriteFile(b, path)) + s.Nil(RemoveFile(path)) - if _, err := ReadFile(path); err == nil { - t.Fatal("should've removed file") - } + _, err := ReadFile(path) + s.Error(err) - if err := WriteFile(b, "tests2/foo"); err != nil { - t.Fatal(err) - } - if err := WriteFile(b, "tests2/bar"); err != nil { - t.Fatal(err) - } - if err := WriteFile(b, "tests2/asdf"); err != nil { - t.Fatal(err) - } - if err := RemoveDirectory("tests2"); err != nil { - t.Fatal(err) - } + s.Nil(WriteFile(b, "tests2/foo")) + s.Nil(WriteFile(b, "tests2/bar")) + s.Nil(WriteFile(b, "tests2/asdf")) + s.Nil(RemoveDirectory("tests2")) } -func TestRemoveDirectory(t *testing.T) { - TranslationsPreInit() - LoadConfig("config.json") - InitTranslations(Cfg.LocalizationSettings) - +func (s *FileTestSuite) TestRemoveDirectory() { b := []byte("test") - if err := WriteFile(b, "tests2/foo"); err != nil { - t.Fatal(err) - } - if err := WriteFile(b, "tests2/bar"); err != nil { - t.Fatal(err) - } - if err := WriteFile(b, "tests2/aaa"); err != nil { - t.Fatal(err) - } + s.Nil(WriteFile(b, "tests2/foo")) + s.Nil(WriteFile(b, "tests2/bar")) + s.Nil(WriteFile(b, "tests2/aaa")) - if err := RemoveDirectory("tests2"); err != nil { - t.Fatal(err) - } + s.Nil(RemoveDirectory("tests2")) - if _, err := ReadFile("tests2/foo"); err == nil { - t.Fatal("should've removed file") - } else if _, err := ReadFile("tests2/bar"); err == nil { - t.Fatal("should've removed file") - } else if _, err := ReadFile("tests2/asdf"); err == nil { - t.Fatal("should've removed file") - } + _, err := ReadFile("tests2/foo") + s.Error(err) + _, err = ReadFile("tests2/bar") + s.Error(err) + _, err = ReadFile("tests2/asdf") + s.Error(err) } -- cgit v1.2.3-1-g7c22