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 )); }
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 !); }