|
|
@@ -476,20 +476,48 @@ func TestSMAssumeRole(t *testing.T) {
|
|
|
k8sClient := clientfake.NewClientBuilder().Build()
|
|
|
sts := &fakesess.AssumeRoler{
|
|
|
AssumeRoleFunc: func(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) {
|
|
|
- // make sure the correct role is passed in
|
|
|
- assert.Equal(t, *input.RoleArn, "my-awesome-role")
|
|
|
- return &sts.AssumeRoleOutput{
|
|
|
- AssumedRoleUser: &sts.AssumedRoleUser{
|
|
|
- Arn: aws.String("1123132"),
|
|
|
- AssumedRoleId: aws.String("xxxxx"),
|
|
|
- },
|
|
|
- Credentials: &sts.Credentials{
|
|
|
- AccessKeyId: aws.String("3333"),
|
|
|
- SecretAccessKey: aws.String("4444"),
|
|
|
- Expiration: aws.Time(time.Now().Add(time.Hour)),
|
|
|
- SessionToken: aws.String("6666"),
|
|
|
- },
|
|
|
- }, nil
|
|
|
+ if *input.RoleArn == "chained-role-1" {
|
|
|
+ return &sts.AssumeRoleOutput{
|
|
|
+ AssumedRoleUser: &sts.AssumedRoleUser{
|
|
|
+ Arn: aws.String("1111111"),
|
|
|
+ AssumedRoleId: aws.String("yyyyy1"),
|
|
|
+ },
|
|
|
+ Credentials: &sts.Credentials{
|
|
|
+ AccessKeyId: aws.String("77771"),
|
|
|
+ SecretAccessKey: aws.String("88881"),
|
|
|
+ Expiration: aws.Time(time.Now().Add(time.Hour)),
|
|
|
+ SessionToken: aws.String("99991"),
|
|
|
+ },
|
|
|
+ }, nil
|
|
|
+ } else if *input.RoleArn == "chained-role-2" {
|
|
|
+ return &sts.AssumeRoleOutput{
|
|
|
+ AssumedRoleUser: &sts.AssumedRoleUser{
|
|
|
+ Arn: aws.String("2222222"),
|
|
|
+ AssumedRoleId: aws.String("yyyyy2"),
|
|
|
+ },
|
|
|
+ Credentials: &sts.Credentials{
|
|
|
+ AccessKeyId: aws.String("77772"),
|
|
|
+ SecretAccessKey: aws.String("88882"),
|
|
|
+ Expiration: aws.Time(time.Now().Add(time.Hour)),
|
|
|
+ SessionToken: aws.String("99992"),
|
|
|
+ },
|
|
|
+ }, nil
|
|
|
+ } else {
|
|
|
+ // make sure the correct role is passed in
|
|
|
+ assert.Equal(t, *input.RoleArn, "my-awesome-role")
|
|
|
+ return &sts.AssumeRoleOutput{
|
|
|
+ AssumedRoleUser: &sts.AssumedRoleUser{
|
|
|
+ Arn: aws.String("1123132"),
|
|
|
+ AssumedRoleId: aws.String("xxxxx"),
|
|
|
+ },
|
|
|
+ Credentials: &sts.Credentials{
|
|
|
+ AccessKeyId: aws.String("3333"),
|
|
|
+ SecretAccessKey: aws.String("4444"),
|
|
|
+ Expiration: aws.Time(time.Now().Add(time.Hour)),
|
|
|
+ SessionToken: aws.String("6666"),
|
|
|
+ },
|
|
|
+ }, nil
|
|
|
+ }
|
|
|
},
|
|
|
}
|
|
|
t.Setenv("AWS_SECRET_ACCESS_KEY", "1111")
|
|
|
@@ -499,7 +527,8 @@ func TestSMAssumeRole(t *testing.T) {
|
|
|
Provider: &esv1beta1.SecretStoreProvider{
|
|
|
// do assume role!
|
|
|
AWS: &esv1beta1.AWSProvider{
|
|
|
- Role: "my-awesome-role",
|
|
|
+ Role: "my-awesome-role",
|
|
|
+ AdditionalRoles: []string{"chained-role-1", "chained-role-2"},
|
|
|
},
|
|
|
},
|
|
|
},
|
|
|
@@ -507,8 +536,19 @@ func TestSMAssumeRole(t *testing.T) {
|
|
|
// check if the correct temporary credentials were used
|
|
|
creds, err := se.Config.Credentials.Get()
|
|
|
assert.Nil(t, err)
|
|
|
- assert.Equal(t, creds.AccessKeyID, "2222")
|
|
|
- assert.Equal(t, creds.SecretAccessKey, "1111")
|
|
|
+ if creds.SessionToken == "" {
|
|
|
+ // called with credentials from envvars
|
|
|
+ assert.Equal(t, creds.AccessKeyID, "2222")
|
|
|
+ assert.Equal(t, creds.SecretAccessKey, "1111")
|
|
|
+ } else if creds.SessionToken == "99991" {
|
|
|
+ // called with chained role 1's credentials
|
|
|
+ assert.Equal(t, creds.AccessKeyID, "77771")
|
|
|
+ assert.Equal(t, creds.SecretAccessKey, "88881")
|
|
|
+ } else {
|
|
|
+ // called with chained role 2's credentials
|
|
|
+ assert.Equal(t, creds.AccessKeyID, "77772")
|
|
|
+ assert.Equal(t, creds.SecretAccessKey, "88882")
|
|
|
+ }
|
|
|
return sts
|
|
|
}, nil)
|
|
|
assert.Nil(t, err)
|