public async Task Png_Should_return_a_png_image_file_content() { // Arrange var fixture = new Fixture(); var html = fixture.Create <string>(); var htmlAsByteArray = fixture.Create <byte[]>(); var htmlToImageMock = new Mock <IHtmlToImage>(); htmlToImageMock.Setup(x => x.FromStringToPngAsync(html, null, null)) .ReturnsAsync(htmlAsByteArray); var sut = new HtmlToImageController( Mock.Of <ILogger <HtmlToImageController> >(), htmlToImageMock.Object); var payload = new HtmlToImageModel() { Html = html }; // Act var response = await sut.Png(payload); var responseAction = response as FileContentResult; // Assert Assert.IsType <FileContentResult>(response); Assert.Equal(htmlAsByteArray, responseAction.FileContents); Assert.Equal("image/png", responseAction.ContentType); }
public async Task <IActionResult> Png([FromBody] HtmlToImageModel htmlToImageModel) { try { _logger.LogInformation("Converting HTML to PNG image"); var imageAsBytes = await _htmlToImage.FromStringToPngAsync(htmlToImageModel.Html, htmlToImageModel.Height, htmlToImageModel.Width); return(File(imageAsBytes, "image/png")); } catch (Exception ex) { _logger.LogError("Error converting HTML text to PNG image", ex); return(BadRequest(ex)); } }