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