@@ -10,6 +10,7 @@ import (
1010 "time"
1111
1212 "github.com/aws/aws-sdk-go-v2/aws"
13+ "github.com/aws/aws-sdk-go-v2/aws/arn"
1314 "github.com/aws/aws-sdk-go-v2/config"
1415 "github.com/cert-manager/aws-privateca-issuer/pkg/api/v1beta1"
1516 clientV1beta1 "github.com/cert-manager/aws-privateca-issuer/pkg/clientset/v1beta1"
@@ -31,7 +32,7 @@ type TestContext struct {
3132 xaCfg aws.Config
3233 caArns map [string ]string
3334
34- region , partition , accessKey , secretKey , endEntityResourceShareArn , subordinateCaResourceShareArn , userName , policyArn string
35+ region , partition , accessKey , secretKey , endEntityResourceShareArn , subordinateCaResourceShareArn , userName , policyArn , accountId , roleToAssume string
3536}
3637
3738// These are variables specific to each test
@@ -111,7 +112,21 @@ func InitializeTestSuite(suiteCtx *godog.TestSuiteContext) {
111112 panic (cfgErr .Error ())
112113 }
113114
114- testContext .partition = getPartition (ctx , cfg )
115+ callerID := getCallerIdentity (ctx , cfg )
116+ testContext .accountId = * callerID .Account
117+
118+ parsedArn , parseErr := arn .Parse (* callerID .Arn )
119+ if parseErr != nil {
120+ panic ("Failed to parse caller identity ARN: " + parseErr .Error ())
121+ }
122+
123+ testContext .partition = parsedArn .Partition
124+
125+ // Set roleArn with environment variable override or default
126+ testContext .roleToAssume = fmt .Sprintf ("arn:%s:iam::%s:role/IssuerTestRole-test-us-east-1" , testContext .partition , testContext .accountId )
127+ if roleToAssumeOverride , exists := os .LookupEnv ("ROLE_TO_ASSUME_OVERRIDE" ); exists {
128+ testContext .roleToAssume = roleToAssumeOverride
129+ }
115130
116131 testContext .iclient , err = clientV1beta1 .NewForConfig (clientConfig )
117132
@@ -217,8 +232,10 @@ func InitializeScenario(ctx *godog.ScenarioContext) {
217232 ctx .Step (`^I create a namespace` , issuerContext .createNamespace )
218233 ctx .Step (`^I create a Secret with keys ([A-Za-z_]+) and ([A-Za-z_]+) for my AWS credentials$` , issuerContext .createSecret )
219234 ctx .Step (`^I create an AWSPCAClusterIssuer using a (RSA|ECDSA|XA) CA$` , issuerContext .createClusterIssuer )
235+ ctx .Step (`^I create an AWSPCAClusterIssuer with role assumption$` , issuerContext .createClusterIssuerWithRole )
220236 ctx .Step (`^I delete the AWSPCAClusterIssuer$` , issuerContext .deleteClusterIssuer )
221237 ctx .Step (`^I create an AWSPCAIssuer using a (RSA|ECDSA|XA) CA$` , issuerContext .createNamespaceIssuer )
238+ ctx .Step (`^I create an AWSPCAIssuer with role assumption$` , issuerContext .createNamespaceIssuerWithRole )
222239 ctx .Step (`^I issue a (SHORT_VALIDITY|RSA|ECDSA|CA) certificate$` , issuerContext .issueCertificate )
223240 ctx .Step (`^the certificate should be issued successfully$` , issuerContext .verifyCertificateIssued )
224241 ctx .Step (`^the certificate request has been created$` , issuerContext .verifyCertificateRequestIsCreated )
0 commit comments