Пример #1
0
        public async Task ReturnsErrorCodeWhenWriteFails()
        {
            //Arrange
            var mockS3 = new Mock <IAmazonS3>();

            mockS3.Setup(s3 => s3.PutObjectAsync(It.IsAny <PutObjectRequest>(), default(CancellationToken)))
            .ReturnsAsync(new PutObjectResponse {
                HttpStatusCode = HttpStatusCode.InternalServerError
            });

            var mockCloudFrontService = new Mock <IAmazonCloudFront>();

            var service = new S3StaticWebsiteService(mockS3.Object, mockCloudFrontService.Object, Mock.Of <ILogger <S3StaticWebsiteService> >(), Mock.Of <AWSConfig>(), Mock.Of <EnvironmentConfig>(), Mock.Of <CloudFrontConfig>());

            var a = new StaticContentRequest {
                FilePath = "sitemap.xml", ContentStream = new System.IO.MemoryStream()
            };
            var b = new StaticContentRequest {
                FilePath = "abc.html", ContentBody = "Some html"
            };
            var filePaths = new List <string>()
            {
                "/" + a.FilePath, "/" + b.FilePath
            };

            //Act
            var result = service.WriteFilesAsync(a, b).Result;

            //Assert
            mockS3.Verify(x => x.PutObjectAsync(It.Is <PutObjectRequest>(o => o.Key == a.FilePath), default(CancellationToken)), Times.Exactly(1));
            mockS3.Verify(x => x.PutObjectAsync(It.Is <PutObjectRequest>(o => o.Key == b.FilePath), default(CancellationToken)), Times.Exactly(1));
            Assert.Equal(HttpStatusCode.InternalServerError, result);
        }
Пример #2
0
        public async Task CanSuccessfullyWriteFilesAndInvalidateCache()
        {
            //Arrange
            var mockS3 = new Mock <IAmazonS3>();

            mockS3.Setup(s3 => s3.PutObjectAsync(It.IsAny <PutObjectRequest>(), default(CancellationToken)))
            .ReturnsAsync(new PutObjectResponse {
                HttpStatusCode = HttpStatusCode.OK
            });

            var mockCloudFrontService = new Mock <IAmazonCloudFront>();

            mockCloudFrontService.Setup(cf => cf.CreateInvalidationAsync(It.IsAny <CreateInvalidationRequest>(), default(CancellationToken)))
            .ReturnsAsync(new CreateInvalidationResponse {
                HttpStatusCode = HttpStatusCode.Created
            });

            var cfConfig = new CloudFrontConfig()
            {
                Enabled = true
            };
            var service = new S3StaticWebsiteService(mockS3.Object, mockCloudFrontService.Object, Mock.Of <ILogger <S3StaticWebsiteService> >(), Mock.Of <AWSConfig>(), Mock.Of <EnvironmentConfig>(), cfConfig);

            var a = new StaticContentRequest {
                FilePath = "sitemap.xml", ContentStream = new System.IO.MemoryStream()
            };
            var b = new StaticContentRequest {
                FilePath = "abc.html", ContentBody = "Some html"
            };
            var filePaths = new List <string>()
            {
                "/" + a.FilePath, "/" + b.FilePath
            };

            //Act
            var result = service.WriteFilesAsync(a, b).Result;

            //Assert
            mockCloudFrontService.Verify(x => x.CreateInvalidationAsync(It.Is <CreateInvalidationRequest>(
                                                                            o => Enumerable.SequenceEqual(o.InvalidationBatch.Paths.Items, filePaths)), default(CancellationToken)), Times.Once);
            mockS3.Verify(x => x.PutObjectAsync(It.Is <PutObjectRequest>(o => o.Key == a.FilePath), default(CancellationToken)), Times.Exactly(1));
            mockS3.Verify(x => x.PutObjectAsync(It.Is <PutObjectRequest>(o => o.Key == b.FilePath), default(CancellationToken)), Times.Exactly(1));
            Assert.Equal(HttpStatusCode.Created, result);
        }