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);
        }
Beispiel #2
0
        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
                                                                              ));
        }