github.com/rudderlabs/rudder-go-kit@v0.30.0/filemanager/s3manager_test.go (about) 1 package filemanager 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/stretchr/testify/assert" 10 11 "github.com/rudderlabs/rudder-go-kit/awsutil" 12 "github.com/rudderlabs/rudder-go-kit/logger" 13 ) 14 15 func TestNewS3ManagerWithNil(t *testing.T) { 16 s3Manager, err := NewS3Manager(nil, logger.NOP, func() time.Duration { return time.Minute }) 17 assert.EqualError(t, err, "config should not be nil") 18 assert.Nil(t, s3Manager) 19 } 20 21 func TestNewS3ManagerWithAccessKeys(t *testing.T) { 22 s3Manager, err := NewS3Manager(map[string]interface{}{ 23 "bucketName": "someBucket", 24 "region": "someRegion", 25 "accessKeyID": "someAccessKeyId", 26 "accessKey": "someSecretAccessKey", 27 }, logger.NOP, func() time.Duration { return time.Minute }) 28 assert.Nil(t, err) 29 assert.NotNil(t, s3Manager) 30 assert.Equal(t, "someBucket", s3Manager.config.Bucket) 31 assert.Equal(t, aws.String("someRegion"), s3Manager.config.Region) 32 assert.Equal(t, "someAccessKeyId", s3Manager.sessionConfig.AccessKeyID) 33 assert.Equal(t, "someSecretAccessKey", s3Manager.sessionConfig.AccessKey) 34 assert.Equal(t, false, s3Manager.sessionConfig.RoleBasedAuth) 35 } 36 37 func TestNewS3ManagerWithRole(t *testing.T) { 38 s3Manager, err := NewS3Manager(map[string]interface{}{ 39 "bucketName": "someBucket", 40 "region": "someRegion", 41 "iamRoleARN": "someIAMRole", 42 "externalID": "someExternalID", 43 }, logger.NOP, func() time.Duration { return time.Minute }) 44 assert.Nil(t, err) 45 assert.NotNil(t, s3Manager) 46 assert.Equal(t, "someBucket", s3Manager.config.Bucket) 47 assert.Equal(t, aws.String("someRegion"), s3Manager.config.Region) 48 assert.Equal(t, "someIAMRole", s3Manager.sessionConfig.IAMRoleARN) 49 assert.Equal(t, "someExternalID", s3Manager.sessionConfig.ExternalID) 50 assert.Equal(t, true, s3Manager.sessionConfig.RoleBasedAuth) 51 } 52 53 func TestNewS3ManagerWithBothAccessKeysAndRole(t *testing.T) { 54 s3Manager, err := NewS3Manager(map[string]interface{}{ 55 "bucketName": "someBucket", 56 "region": "someRegion", 57 "iamRoleARN": "someIAMRole", 58 "externalID": "someExternalID", 59 "accessKeyID": "someAccessKeyId", 60 "accessKey": "someSecretAccessKey", 61 }, logger.NOP, func() time.Duration { return time.Minute }) 62 assert.Nil(t, err) 63 assert.NotNil(t, s3Manager) 64 assert.Equal(t, "someBucket", s3Manager.config.Bucket) 65 assert.Equal(t, aws.String("someRegion"), s3Manager.config.Region) 66 assert.Equal(t, "someAccessKeyId", s3Manager.sessionConfig.AccessKeyID) 67 assert.Equal(t, "someSecretAccessKey", s3Manager.sessionConfig.AccessKey) 68 assert.Equal(t, "someIAMRole", s3Manager.sessionConfig.IAMRoleARN) 69 assert.Equal(t, "someExternalID", s3Manager.sessionConfig.ExternalID) 70 assert.Equal(t, true, s3Manager.sessionConfig.RoleBasedAuth) 71 } 72 73 func TestNewS3ManagerWithBothAccessKeysAndRoleButRoleBasedAuthFalse(t *testing.T) { 74 s3Manager, err := NewS3Manager(map[string]interface{}{ 75 "bucketName": "someBucket", 76 "region": "someRegion", 77 "iamRoleARN": "someIAMRole", 78 "externalID": "someExternalID", 79 "accessKeyID": "someAccessKeyId", 80 "accessKey": "someSecretAccessKey", 81 "roleBasedAuth": false, 82 }, logger.NOP, func() time.Duration { return time.Minute }) 83 assert.Nil(t, err) 84 assert.NotNil(t, s3Manager) 85 assert.Equal(t, "someBucket", s3Manager.config.Bucket) 86 assert.Equal(t, aws.String("someRegion"), s3Manager.config.Region) 87 assert.Equal(t, "someAccessKeyId", s3Manager.sessionConfig.AccessKeyID) 88 assert.Equal(t, "someSecretAccessKey", s3Manager.sessionConfig.AccessKey) 89 assert.Equal(t, "someIAMRole", s3Manager.sessionConfig.IAMRoleARN) 90 assert.Equal(t, "someExternalID", s3Manager.sessionConfig.ExternalID) 91 assert.Equal(t, false, s3Manager.sessionConfig.RoleBasedAuth) 92 } 93 94 func TestGetSessionWithAccessKeys(t *testing.T) { 95 s3Manager := S3Manager{ 96 baseManager: &baseManager{ 97 logger: logger.NOP, 98 }, 99 config: &S3Config{ 100 Bucket: "someBucket", 101 Region: aws.String("someRegion"), 102 }, 103 sessionConfig: &awsutil.SessionConfig{ 104 AccessKeyID: "someAccessKeyId", 105 AccessKey: "someSecretAccessKey", 106 Region: "someRegion", 107 }, 108 } 109 awsSession, err := s3Manager.GetSession(context.TODO()) 110 assert.Nil(t, err) 111 assert.NotNil(t, awsSession) 112 assert.NotNil(t, s3Manager.session) 113 } 114 115 func TestGetSessionWithIAMRole(t *testing.T) { 116 s3Manager := S3Manager{ 117 baseManager: &baseManager{ 118 logger: logger.NOP, 119 }, 120 config: &S3Config{ 121 Bucket: "someBucket", 122 Region: aws.String("someRegion"), 123 }, 124 sessionConfig: &awsutil.SessionConfig{ 125 IAMRoleARN: "someIAMRole", 126 ExternalID: "someExternalID", 127 Region: "someRegion", 128 }, 129 } 130 awsSession, err := s3Manager.GetSession(context.TODO()) 131 assert.Nil(t, err) 132 assert.NotNil(t, awsSession) 133 assert.NotNil(t, s3Manager.session) 134 }