public async Task CreateWithRoleArn_CreatesClientWithCredentials() { var roleArn = "test arn"; var instance = CreateInstance(); var credentials = new SessionAWSCredentials("key", "secret", "token"); StsClient.AssumeRoleAsync(Arg.Any <AssumeRoleRequest>()).Returns(new AssumeRoleResponse { Credentials = new Credentials { AccessKeyId = credentials.GetCredentials().AccessKey, SecretAccessKey = credentials.GetCredentials().SecretKey, SessionToken = credentials.GetCredentials().Token, } }); var result = await instance.Create(roleArn); await StsFactory.Received().Create(); await StsClient.Received().AssumeRoleAsync( Arg.Is <AssumeRoleRequest>(req => req.RoleArn == roleArn && req.RoleSessionName != null) ); TestUtils.AssertClientHasCredentials((AmazonServiceClient)result, credentials); }
public async Task EmittedFactories_PerformAssumeRole_IfArnGiven( string roleArn, AssumeRoleResponse response, Credentials credentials, IAmazonSecurityTokenService stsClient ) { response.Credentials = credentials; stsClient.AssumeRoleAsync(Any <AssumeRoleRequest>()).Returns(response); using var generation = await project.GenerateAssembly(); var(assembly, _) = generation; var factoryType = assembly.GetType("Lambdajection.CompilationTests.AmazonFactories.Handler+LambdajectionConfigurator+S3Factory"); var factory = (IAwsFactory <IAmazonS3>)Activator.CreateInstance(factoryType !, new object[] { stsClient }) !; var result = await factory.Create(roleArn); var credentialsProperty = typeof(AmazonServiceClient).GetProperty("Credentials", BindingFlags.NonPublic | BindingFlags.Instance) !; var actualCredentials = credentialsProperty.GetMethod !.Invoke(result, Array.Empty <object>()); actualCredentials.Should().BeSameAs(credentials); await stsClient.Received().AssumeRoleAsync(Is <AssumeRoleRequest>(req => req.RoleArn == roleArn )); }