public void Execute_GivenValidRequest_ExecuteMethodForAttachingQrCodeShouldBeCalled() { //Arrange var fileName = "BootCampForm-v2.pdf"; var request = new RenderReportRequest { FileName = fileName, ListOfFields = GetValidFieldNames(), QrCodeData = new CreateBarCodeRequest { Text = Guid.NewGuid().ToString(), CheckSumEnabled = true }, Barcode = new Barcode { LowerLeftX = 100, LowerLeftY = 100, UpperRightX = 200, UpperRightY = 200, PageNumber = 1 } }; var fileLoader = Substitute.For <IFileSystemProvider>(); fileLoader.LoadFile(Arg.Any <string>()).Returns(new byte[999]); var fieldsOperator = Substitute.For <IPopulatePdfUseCase>(); fieldsOperator.Execute(Arg.Any <byte[]>(), Arg.Any <List <PdfFields> >()) .Returns(new PdfFieldsOperationsResponse { Output = new byte[999] }); var barCodeCreater = Substitute.For <ICreateBarCodeUseCase>(); barCodeCreater.Execute(Arg.Any <CreateBarCodeRequest>()).Returns(new CreateBarCodeResponse()); var barCodeAttacher = Substitute.For <IAttachBarCodeUseCase>(); barCodeAttacher.Execute(Arg.Any <AttachBarCodeRequest>()).Returns(new AttachBarCodeResponse()); var passwordProtecter = Substitute.For <IPdfOperations>(); passwordProtecter.PasswordProtect(Arg.Any <byte[]>(), Arg.Any <string>()).Returns(new byte[0]); var sut = new RenderReportUseCase(fileLoader, fieldsOperator, barCodeCreater, barCodeAttacher, passwordProtecter); //Act sut.Execute(request); //Assert barCodeAttacher.Received().Execute(Arg.Any <AttachBarCodeRequest>()); }
public void ExecuteRenderReportEndPoint_GivenValidData_ShouldReturnFileBytesThatAreGreaterThan0() { // Arrange var request = new RenderReportRequest() { FileName = "BootCampForm-v2.pdf", ListOfFields = GetValidFieldNames(), QrCodeData = new CreateBarCodeRequest { Text = Guid.NewGuid().ToString(), CheckSumEnabled = true }, Barcode = new Barcode { LowerLeftX = 100, LowerLeftY = 100, UpperRightX = 200, UpperRightY = 200, PageNumber = 1 }, Password = "******" }; var fileName = "BootCampForm-v2.pdf"; var renderReportSubstitute = Substitute.For <IRenderReportUseCase>(); var fileBytes = File.ReadAllBytes(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", fileName)); renderReportSubstitute.Execute(Arg.Any <RenderReportRequest>()).Returns(fileBytes); var browser = CreateBrowser(renderReportSubstitute); // Act var result = browser.Post("/api/RenderReport", with => { with.HttpRequest(); with.Header("Accept", "application/json"); with.JsonBody(request); }); // Assert var expected = 94853; var stream = result.Result.Body.AsStream(); Assert.AreEqual(expected, stream.Length); }
public void ExecuteRenderReportEndPoint_GivenValidData_ShouldReturnStatusCode200() { // Arrange var request = new RenderReportRequest() { FileName = "BootCampForm-v2.pdf", ListOfFields = GetValidFieldNames(), QrCodeData = new CreateBarCodeRequest { Text = Guid.NewGuid().ToString(), CheckSumEnabled = true }, Barcode = new Barcode { LowerLeftX = 100, LowerLeftY = 100, UpperRightX = 200, UpperRightY = 200, PageNumber = 1 }, Password = "******" }; var renderReportSubstitute = Substitute.For <IRenderReportUseCase>(); renderReportSubstitute.Execute(Arg.Any <RenderReportRequest>()).Returns(new byte[999]); var browser = CreateBrowser(renderReportSubstitute); // Act var result = browser.Post("/api/RenderReport", with => { with.HttpRequest(); with.Header("Accept", "application/json"); with.JsonBody(request); }); // Assert Assert.AreEqual(HttpStatusCode.OK, result.Result.StatusCode); }
public void ExecuteRenderReportEndPoint_GivenEmptyOrNullFileName_ExecuteMethodShouldNotBeCalled(string fileName) { // Arrange var listOfFields = GetValidFieldNames(); var request = new RenderReportRequest() { FileName = fileName, ListOfFields = listOfFields, QrCodeData = new CreateBarCodeRequest { Text = Guid.NewGuid().ToString(), CheckSumEnabled = true }, Barcode = new Barcode { LowerLeftX = 100, LowerLeftY = 100, UpperRightX = 200, UpperRightY = 200, PageNumber = 1 }, Password = "******" }; var renderReportSubstitute = Substitute.For <IRenderReportUseCase>(); var browser = CreateBrowser(renderReportSubstitute); // Act browser.Post("/api/RenderReport", with => { with.HttpRequest(); with.Header("Accept", "application/json"); with.JsonBody(request); }); // Assert renderReportSubstitute.DidNotReceive().Execute(Arg.Any <RenderReportRequest>()); }
public void ExecuteRenderReportEndPoint_GivenEmptyOrNullFileName_ShouldReturnStatusCode400(string fileName) { // Arrange var listOfFields = GetValidFieldNames(); var request = new RenderReportRequest() { FileName = fileName, ListOfFields = listOfFields, QrCodeData = new CreateBarCodeRequest { Text = Guid.NewGuid().ToString(), CheckSumEnabled = true }, Barcode = new Barcode { LowerLeftX = 100, LowerLeftY = 100, UpperRightX = 200, UpperRightY = 200, PageNumber = 1 }, Password = "******" }; var renderReportSubstitute = Substitute.For <IRenderReportUseCase>(); var browser = CreateBrowser(renderReportSubstitute); // Act var result = browser.Post("/api/RenderReport", with => { with.HttpRequest(); with.Header("Accept", "application/json"); with.JsonBody(request); }); // Assert Assert.AreEqual(HttpStatusCode.BadRequest, result.Result.StatusCode); }
public byte[] Execute(RenderReportRequest request) { var path = GetFile(request.FileName); var fileLoader = _fileSystemProvider.LoadFile(path); if (fileLoader.Length == 0) { return(new byte[0]); } var fieldsOperator = _pdfFieldsOperations.Execute(fileLoader, request.ListOfFields); var barCodeCreator = _createBarCodeUseCase.Execute(request.QrCodeData); var config = CreateMapperConfiguration(); var attachBarCodeRequest = Map(request.Barcode, fieldsOperator, barCodeCreator, config); var barCodeAttacher = _attachQrCodeUseCase.Execute(attachBarCodeRequest); if (!string.IsNullOrWhiteSpace(request.Password)) { var passwordProtecter = _passwordProtectOperation.PasswordProtect(barCodeAttacher.OutputFileBytes, request.Password); return(passwordProtecter); } return(barCodeAttacher.OutputFileBytes); }