Beispiel #1
0
        public async Task <TestResultFile> Download(string blobName, string fileName)
        {
            var container = blobHelper.GetBlobContainer();
            var blob      = container.GetBlockBlobReference(blobName);

            var ms = await blob.OpenReadAsync();

            if (!string.IsNullOrWhiteSpace(fileName))
            {
                ZipArchive zipArchive = new ZipArchive(ms);
                foreach (ZipArchiveEntry entry in zipArchive.Entries)
                {
                    if (entry.Name.Equals(fileName, StringComparison.OrdinalIgnoreCase))
                    {
                        var fileStream = entry.Open();

                        return(new TestResultFile
                        {
                            Stream = fileStream,
                            FileName = fileName,
                            FileSize = entry.Length,
                            ContentType = blob.Properties.ContentType
                        });
                    }
                }
                throw new FileNotFoundException($"File: {fileName} not found.");
            }

            var download = new TestResultFile
            {
                Stream      = ms,
                FileName    = blob.Name,
                FileSize    = blob.Properties.Length,
                ContentType = blob.Properties.ContentType
            };

            return(download);
        }
Beispiel #2
0
        public async Task Download_WhenResultFound_ReturnsOkWithResult()
        {
            // Arrange
            var testResultsController = new TestResultsController(mockedService.Object);

            testResultsController.ControllerContext = FakeControllerContextFactory.CreateGetRequestContext();
            var resultFile = new TestResultFile
            {
                FileName    = "MockFileName",
                FileSize    = 12121,
                ContentType = "application/zip",
                Stream      = new MemoryStream()
            };

            mockedService.Setup(m => m.Download(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(Task.FromResult(resultFile));

            // Act
            var result = await testResultsController.Download("TestArchive.zip", "TestResult.txt");

            // Assert
            Assert.AreEqual(typeof(ResponseMessageResult), result.GetType());
            Assert.AreEqual(HttpStatusCode.OK, ((ResponseMessageResult)result).Response.StatusCode);
        }