github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/shared/filestore/s3store_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package filestore 5 6 import ( 7 "crypto/rand" 8 "encoding/base64" 9 "fmt" 10 "os" 11 "strings" 12 "testing" 13 14 "github.com/stretchr/testify/require" 15 ) 16 17 // Copied from model/config.go to avoid an import cycle 18 const ( 19 MinioAccessKey = "minioaccesskey" 20 MinioSecretKey = "miniosecretkey" 21 ImageDriverS3 = "amazons3" 22 ) 23 24 func TestCheckMandatoryS3Fields(t *testing.T) { 25 cfg := FileBackendSettings{} 26 27 err := cfg.CheckMandatoryS3Fields() 28 require.Error(t, err) 29 require.Equal(t, err.Error(), "missing s3 bucket settings", "should've failed with missing s3 bucket") 30 31 cfg.AmazonS3Bucket = "test-mm" 32 err = cfg.CheckMandatoryS3Fields() 33 require.NoError(t, err) 34 35 cfg.AmazonS3Endpoint = "" 36 err = cfg.CheckMandatoryS3Fields() 37 require.NoError(t, err) 38 39 require.Equal(t, "s3.amazonaws.com", cfg.AmazonS3Endpoint, "should've set the endpoint to the default") 40 } 41 42 func TestMakeBucket(t *testing.T) { 43 s3Host := os.Getenv("CI_MINIO_HOST") 44 if s3Host == "" { 45 s3Host = "localhost" 46 } 47 48 s3Port := os.Getenv("CI_MINIO_PORT") 49 if s3Port == "" { 50 s3Port = "9000" 51 } 52 53 s3Endpoint := fmt.Sprintf("%s:%s", s3Host, s3Port) 54 55 // Generate a random bucket name 56 b := make([]byte, 30) 57 rand.Read(b) 58 bucketName := base64.StdEncoding.EncodeToString(b) 59 bucketName = strings.ToLower(bucketName) 60 bucketName = strings.Replace(bucketName, "+", "", -1) 61 bucketName = strings.Replace(bucketName, "/", "", -1) 62 63 cfg := FileBackendSettings{ 64 DriverName: ImageDriverS3, 65 AmazonS3AccessKeyId: MinioAccessKey, 66 AmazonS3SecretAccessKey: MinioSecretKey, 67 AmazonS3Bucket: bucketName, 68 AmazonS3Endpoint: s3Endpoint, 69 AmazonS3Region: "", 70 AmazonS3PathPrefix: "", 71 AmazonS3SSL: false, 72 } 73 74 fileBackend, err := NewS3FileBackend(cfg) 75 require.NoError(t, err) 76 77 err = fileBackend.MakeBucket() 78 require.NoError(t, err) 79 }