Exemple #1
0
        private async Task AssertPlainTextRedactionOccurredFor(RemoteWorkFile result, string expectedLineEndings)
        {
            using (var memoryStream = new MemoryStream())
            {
                await result.CopyToAsync(memoryStream);

                memoryStream.Position = 0;
                using (var reader = new StreamReader(memoryStream))
                {
                    string text = reader.ReadToEnd();

                    // Quick sanity check to verify redaction actually occurred
                    Assert.IsTrue(text.Contains("Peter Parker"), "Hmm, text content we expected to be in the output document was not present. Did something go wrong?");
                    Assert.IsFalse(text.Contains("*****@*****.**"), "Content that was expected to be redacted was not actually redacted!");
                    Assert.IsTrue(text.Contains("<Text Redacted>"), "Expected to find an occurrence of the string \"<Text Redacted>\", but didn't!");

                    if (expectedLineEndings == "\r\n")
                    {
                        Assert.IsTrue(text.Contains("\r\n"));
                    }
                    else if (expectedLineEndings == "\n")
                    {
                        Assert.IsFalse(text.Contains("\r\n"));
                    }
                    else
                    {
                        throw new ArgumentException("expectedLineEndings must be either \"\\r\\n\" or \"\\n\".", "expectedLineEndings");
                    }
                }
            }
        }
Exemple #2
0
        public async Task GetInstanceWithAffinity_works()
        {
            // Arrange
            AffinitySession session1 = Util.RestClient.CreateAffinitySession();
            AffinitySession session2 = Util.RestClient.CreateAffinitySession();

            RemoteWorkFile file1 = await session1.UploadAsync("documents/confidential-contacts.pdf");

            RemoteWorkFile file2 = await session2.UploadAsync("documents/confidential-contacts.pdf.markup.json");

            Assert.AreNotEqual(file1.AffinityToken, file2.AffinityToken);

            // Act
            RemoteWorkFile file2Reuploaded = await file2.GetInstanceWithAffinity(session2, file1.AffinityToken);

            // Assert
            Assert.AreEqual(file2.FileExtension, file2Reuploaded.FileExtension, "The FileExtension was not set correctly after reupload!");
            Assert.AreEqual(file1.AffinityToken, file2Reuploaded.AffinityToken, "The AffinityToken was not correct after reupload!");

            using (var originalContent = new MemoryStream())
                using (var reuploadedContent = new MemoryStream())
                {
                    await file2.CopyToAsync(originalContent);

                    await file2Reuploaded.CopyToAsync(reuploadedContent);

                    CollectionAssert.AreEqual(originalContent.ToArray(), reuploadedContent.ToArray());
                }
        }
Exemple #3
0
        public async Task UploadAsync_with_local_file_path_followed_by_CopyToAsync_roundtrip_works()
        {
            PrizmDocServerClient prizmDocServer = Util.CreatePrizmDocServerClient();

            const string INPUT_FILENAME = "documents/example.docx";

            RemoteWorkFile remoteWorkFile = await prizmDocServer.UploadAsync(INPUT_FILENAME);

            using (var memoryStream = new MemoryStream())
            {
                await remoteWorkFile.CopyToAsync(memoryStream);

                CollectionAssert.AreEqual(File.ReadAllBytes(INPUT_FILENAME), memoryStream.ToArray());
            }
        }
        public async Task Can_create_redactions()
        {
            // Arrange
            PrizmDocServerClient prizmDocServer = Util.CreatePrizmDocServerClient();

            var ssn = new RegexRedactionMatchRule(@"\d\d\d-\d\d-\d\d\d\d")
            {
                RedactWith = new RedactionCreationOptions()
                {
                    Reason = "(b)(6)",
                    Data   = new Dictionary <string, string>
                    {
                        { "rule", "SSN" },
                    },
                },
            };

            var email = new RegexRedactionMatchRule(@"\S+@\S+\.\S+")
            {
                RedactWith = new RedactionCreationOptions()
                {
                    Reason = "(b)(6)",
                    Data   = new Dictionary <string, string>
                    {
                        { "rule", "email" },
                    },
                },
            };

            var bruceWayne = new RegexRedactionMatchRule(@"Bruce Wayne")
            {
                RedactWith = new RedactionCreationOptions()
                {
                    Reason = "Not Batman",
                },
            };

            var rules = new[]
            {
                ssn,
                email,
                bruceWayne,
            };

            // Act
            RemoteWorkFile result = await prizmDocServer.CreateRedactionsAsync("documents/confidential-contacts.pdf", rules);

            // Assert: Verify the expected redactions were created for the test document
            JObject markup;

            using (var memoryStream = new MemoryStream())
            {
                await result.CopyToAsync(memoryStream);

                string markupJson = Encoding.ASCII.GetString(memoryStream.ToArray());
                markup = JObject.Parse(markupJson);
            }

            List <JToken> marks                     = markup["marks"].Children().ToList();
            List <JToken> redactions                = marks.Where(x => (string)x["type"] == "RectangleRedaction").ToList();
            List <JToken> firstPageRedactions       = redactions.Where(x => (int)x["pageNumber"] == 1).ToList();
            List <JToken> secondPageRedactions      = redactions.Where(x => (int)x["pageNumber"] == 2).ToList();
            List <JToken> firstPageSsnRedactions    = firstPageRedactions.Where(x => x["data"] != null && (string)x["data"]["rule"] == "SSN").ToList();
            List <JToken> secondPageSsnRedactions   = secondPageRedactions.Where(x => x["data"] != null && (string)x["data"]["rule"] == "SSN").ToList();
            List <JToken> firstPageEmailRedactions  = firstPageRedactions.Where(x => x["data"] != null && (string)x["data"]["rule"] == "email").ToList();
            List <JToken> secondPageEmailRedactions = secondPageRedactions.Where(x => x["data"] != null && (string)x["data"]["rule"] == "email").ToList();
            List <JToken> bruceWayneRedactions      = redactions.Where(x => (string)x["reason"] == "Not Batman").ToList();

            Assert.AreEqual(18, marks.Count);
            Assert.AreEqual(18, redactions.Count);
            Assert.AreEqual(13, firstPageRedactions.Count);
            Assert.AreEqual(5, secondPageRedactions.Count);
            Assert.AreEqual(6, firstPageSsnRedactions.Count);
            Assert.AreEqual(3, secondPageSsnRedactions.Count);
            Assert.AreEqual(6, firstPageEmailRedactions.Count);
            Assert.AreEqual(2, secondPageEmailRedactions.Count);
            Assert.AreEqual(1, bruceWayneRedactions.Count);
        }