github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/storage/bucket/client_test.go (about)

     1  package bucket
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/grafana/dskit/flagext"
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  	yaml "gopkg.in/yaml.v2"
    11  
    12  	util_log "github.com/cortexproject/cortex/pkg/util/log"
    13  )
    14  
    15  const (
    16  	configWithS3Backend = `
    17  backend: s3
    18  s3:
    19    endpoint:          localhost
    20    bucket_name:       test
    21    access_key_id:     xxx
    22    secret_access_key: yyy
    23    insecure:          true
    24  `
    25  
    26  	configWithGCSBackend = `
    27  backend: gcs
    28  gcs:
    29    bucket_name:     test
    30    service_account: |-
    31      {
    32        "type": "service_account",
    33        "project_id": "id",
    34        "private_key_id": "id",
    35        "private_key": "-----BEGIN PRIVATE KEY-----\nSOMETHING\n-----END PRIVATE KEY-----\n",
    36        "client_email": "test@test.com",
    37        "client_id": "12345",
    38        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    39        "token_uri": "https://oauth2.googleapis.com/token",
    40        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    41        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test%40test.com"
    42      }
    43  `
    44  
    45  	configWithUnknownBackend = `
    46  backend: unknown
    47  `
    48  )
    49  
    50  func TestNewClient(t *testing.T) {
    51  	t.Parallel()
    52  
    53  	tests := map[string]struct {
    54  		config      string
    55  		expectedErr error
    56  	}{
    57  		"should create an S3 bucket": {
    58  			config:      configWithS3Backend,
    59  			expectedErr: nil,
    60  		},
    61  		"should create a GCS bucket": {
    62  			config:      configWithGCSBackend,
    63  			expectedErr: nil,
    64  		},
    65  		"should return error on unknown backend": {
    66  			config:      configWithUnknownBackend,
    67  			expectedErr: ErrUnsupportedStorageBackend,
    68  		},
    69  	}
    70  
    71  	for testName, testData := range tests {
    72  		testData := testData
    73  
    74  		t.Run(testName, func(t *testing.T) {
    75  			// Load config
    76  			cfg := Config{}
    77  			flagext.DefaultValues(&cfg)
    78  
    79  			err := yaml.Unmarshal([]byte(testData.config), &cfg)
    80  			require.NoError(t, err)
    81  
    82  			// Instance a new bucket client from the config
    83  			bucketClient, err := NewClient(context.Background(), cfg, "test", util_log.Logger, nil)
    84  			require.Equal(t, testData.expectedErr, err)
    85  
    86  			if testData.expectedErr == nil {
    87  				require.NotNil(t, bucketClient)
    88  				bucketClient.Close()
    89  			} else {
    90  				assert.Equal(t, nil, bucketClient)
    91  			}
    92  		})
    93  	}
    94  }