Example #1
0
            public async Task UploadDefinition_UploadsDefinition_IfObjectDoesntExist()
            {
                var logger         = Substitute.For <ILogger <PipelineDeployer> >();
                var fileFetcher    = Substitute.For <GithubFileFetcher>();
                var deployer       = Substitute.For <DeployStackFacade>();
                var statusNotifier = Substitute.For <GithubStatusNotifier>();
                var sumComputer    = Substitute.For <Sha256SumComputer>();
                var config         = Options.Create(new Config {
                    ArtifactStore = bucketName
                });
                var s3Client         = Substitute.For <IAmazonS3>();
                var pipelineDeployer = new PipelineDeployer(s3Client, sumComputer, fileFetcher, statusNotifier, deployer, config, logger);

                s3Client
                .When(client => client.GetObjectMetadataAsync(Any <string>(), Any <string>()))
                .Do(client => throw new Exception());


                sumComputer.ComputeSum(Any <string>()).Returns(sum);
                var result = await pipelineDeployer.UploadDefinition(githubRepo, definition);

                result.Should().BeEquivalentTo(expectedKey);
                await s3Client.Received().GetObjectMetadataAsync(Is(bucketName), Is(expectedKey));

                await s3Client.Received().PutObjectAsync(Is <PutObjectRequest>(req =>
                                                                               req.BucketName == bucketName &&
                                                                               req.Key == expectedKey &&
                                                                               req.ContentBody == definition
                                                                               ));
            }
Example #2
0
            public async Task UploadDefinition_DoesNotUploadDefinition_IfAlreadyExists()
            {
                var logger         = Substitute.For <ILogger <PipelineDeployer> >();
                var fileFetcher    = Substitute.For <GithubFileFetcher>();
                var deployer       = Substitute.For <DeployStackFacade>();
                var s3Client       = Substitute.For <IAmazonS3>();
                var sumComputer    = Substitute.For <Sha256SumComputer>();
                var statusNotifier = Substitute.For <GithubStatusNotifier>();
                var config         = Options.Create(new Config {
                    ArtifactStore = bucketName
                });
                var pipelineDeployer = new PipelineDeployer(s3Client, sumComputer, fileFetcher, statusNotifier, deployer, config, logger);

                sumComputer.ComputeSum(Any <string>()).Returns(sum);
                var result = await pipelineDeployer.UploadDefinition(githubRepo, definition);

                result.Should().BeEquivalentTo(expectedKey);
                await s3Client.Received().GetObjectMetadataAsync(Is(bucketName), Is(expectedKey));

                await s3Client.DidNotReceiveWithAnyArgs().PutObjectAsync(null !);
            }