public void WhenValidFormInformation_ShouldReturnBytesOfModifedPdf()
            {
                // arrange
                var pdfUtils = new PdfTestUtils();
                var fileName = "BootCampForm-v2.pdf";

                pdfUtils.UploadTemplateToCloud(fileName);
                var pdfManipuation = new PdfManipuation();
                var fields         = new List <SimplePdfFormField>
                {
                    new SimplePdfFormField {
                        Name = "FirstName", Value = "Travis"
                    },
                    new SimplePdfFormField {
                        Name = "Surname", Value = "Frisinger"
                    },
                    new SimplePdfFormField {
                        Name = "DateOfBirth", Value = "1981-04-29"
                    },
                };
                var cloudStorageName = pdfManipuation.PopulateTemplate(fileName, fields);
                // act
                var actual = pdfManipuation.MarkFieldsAsReadOnly(cloudStorageName, fields);
                // assert
                var expectedLength = pdfUtils.FetchExpectedFileLength("readonly.pdf");

                actual.Length.Should().Be(expectedLength);
            }
            public void WhenValidFormInformation_ShouldReturnNewFileNameOfPopulatedPdf()
            {
                // arrange
                var pdfUtils = new PdfTestUtils();
                var fileName = "BootCampForm-v2.pdf";

                pdfUtils.UploadTemplateToCloud(fileName);
                var pdfManipuation = new PdfManipuation();
                var fields         = new List <SimplePdfFormField>
                {
                    new SimplePdfFormField {
                        Name = "FirstName", Value = "Bob"
                    },
                    new SimplePdfFormField {
                        Name = "Surname", Value = "Smith"
                    },
                    new SimplePdfFormField {
                        Name = "DateOfBirth", Value = "1981-04-29"
                    }
                };
                // act
                var actual = pdfManipuation.PopulateTemplate(fileName, fields);
                // assert
                var expected = $"-{fileName}";

                actual.Should().Contain(expected);
            }
            public void WhenEmptyPassword_ShouldReturnZeroBytes(string password)
            {
                // arrange
                var fileName       = "BootCampForm-v2.pdf";
                var pdfUtils       = new PdfTestUtils();
                var pdfBytes       = pdfUtils.FetchFileFromLocal(fileName);
                var pdfManipuation = new PdfManipuation();
                // act
                var actual = pdfManipuation.PasswordProtect(pdfBytes, password);

                // assert
                actual.Length.Should().Be(0);
            }
            public void WhenNonEmptyPassword_ShouldReturnBytesOfPasswordProtectedPdf()
            {
                // arrange
                var fileName       = "BootCampForm-v2.pdf";
                var password       = "******";
                var pdfUtils       = new PdfTestUtils();
                var pdfBytes       = pdfUtils.FetchFileFromLocal(fileName);
                var pdfManipuation = new PdfManipuation();
                // act
                var actual = pdfManipuation.PasswordProtect(pdfBytes, password);

                // assert
                Assert.DoesNotThrow(() => pdfUtils.DecryptBytes(actual, password));
            }