Exemplo n.º 1
0
        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;
            }));
        }
Exemplo n.º 2
0
 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();
     }));
 }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
        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);
        }