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  }