public async Task <IActionResult> ExportIssuersZip( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "issuers/export/zip")] ExportIssuersQuery queryArg, HttpRequest req, Microsoft.Azure.WebJobs.ExecutionContext context, ILogger log) { return(await ExecuteAsync <ExportIssuersQuery, ExportIssuersResponse>(context, req, queryArg, async (r) => { var outputStream = new MemoryStream(); using (var zipArchive = new ZipArchive(outputStream, ZipArchiveMode.Create, true)) { var zipEntry = zipArchive.CreateEntry(r.FileName); using (var zipStream = zipEntry.Open()) { using (var ms = new MemoryStream(r.Content)) { await ms.CopyToAsync(zipStream); } } } outputStream.Position = 0; var result = new FileStreamResult(outputStream, "application/octet-stream") { FileDownloadName = "export.zip" }; return result; })); }
public async Task <IActionResult> ExportIssuers( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "issuers/export")] ExportIssuersQuery queryArg, HttpRequest req, IDictionary <string, string> headers, Microsoft.Azure.WebJobs.ExecutionContext context) { return(await ExecuteAsync <ExportIssuersQuery, ExportIssuersResponse>(context, req, queryArg, (r) => { var result = new FileContentResult(r.Content, r.ContentType) { FileDownloadName = r.FileName }; return result.ToTask(); })); }
public async Task ExportIssuers_EnsureAllRecordsGivenToFileBuilderMatchDatabase() { IEnumerable <IssuerRecord> records = Enumerable.Empty <IssuerRecord>(); var logger = new Mock <ILogger <ExportIssuersQuery.ExportIssuersQueryHandler> >(); var fileBuilder = new Mock <ICsvFileBuilder>(); fileBuilder.Setup(_ => _.BuildFileAsync(It.IsAny <IEnumerable <IssuerRecord> >())) .Callback <IEnumerable <IssuerRecord> >(r => records = r); var query = new ExportIssuersQuery(); var sut = new ExportIssuersQuery.ExportIssuersQueryHandler(_context, _mapper, fileBuilder.Object, logger.Object); // act await sut.Handle(query, CancellationToken.None); records.Should().NotBeEmpty(); records.Count().Should().Be(_context.Issuers.Count()); }
public async Task ExportIssuers_EnsureFileBuilderIsCalledAndCorrectResultIsReturned() { var logger = new Mock <ILogger <ExportIssuersQuery.ExportIssuersQueryHandler> >(); var fileBuilder = new Mock <ICsvFileBuilder>(); byte[] fileData = Encoding.UTF8.GetBytes("This is the file data"); fileBuilder.Setup(_ => _.BuildFileAsync(It.IsAny <IEnumerable <IssuerRecord> >())).ReturnsAsync(fileData); var query = new ExportIssuersQuery(); var sut = new ExportIssuersQuery.ExportIssuersQueryHandler(_context, _mapper, fileBuilder.Object, logger.Object); // act var result = await sut.Handle(query, CancellationToken.None); // assert fileBuilder.Verify(); result.Should().BeOfType <ExportIssuersResponse>(); result.Should().NotBeNull(); result.ContentType.Should().Be("text/csv"); result.Content.Should().BeSameAs(fileData); result.FileName.Should().Be("Issuers.csv"); }
public async Task ExportIssuers_EnsureExactRecordsGivenToFileBuilderMatchesDatabase() { IEnumerable <IssuerRecord> records = Enumerable.Empty <IssuerRecord>(); var logger = new Mock <ILogger <ExportIssuersQuery.ExportIssuersQueryHandler> >(); var fileBuilder = new Mock <ICsvFileBuilder>(); fileBuilder.Setup(_ => _.BuildFileAsync(It.IsAny <IEnumerable <IssuerRecord> >())) .Callback <IEnumerable <IssuerRecord> >(r => records = r); var query = new ExportIssuersQuery(); query.Id = new Guid("de891235-405e-4e72-912d-7bd51b4c92b7"); var sut = new ExportIssuersQuery.ExportIssuersQueryHandler(_context, _mapper, fileBuilder.Object, logger.Object); // act await sut.Handle(query, CancellationToken.None); var databaseRecords = _context.Issuers.Where(_ => _.Id == query.Id); records.Should().NotBeEmpty(); records.Count().Should().Be(databaseRecords.Count()); records.First().Name.Should().Be(databaseRecords.First().Name); records.First().CreatedDate.Should().Be(databaseRecords.First().CreatedDate); }