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