Example #1
0
        public void GivenANodeWithConflictRuleProcessedChild_WhenSubstitute_PreviousResultShouldBeKept(Base data, string processedNodePath, string configJson, string targetJson, bool isPrimitive = false)
        {
            targetJson = targetJson.Replace("\r\n", Environment.NewLine);

            SubstituteProcessor processor = new SubstituteProcessor();
            var node    = ElementNode.FromElement(data.ToTypedElement());
            var context = new ProcessContext
            {
                VisitedNodes = node.Select(processedNodePath).Cast <ElementNode>().ToHashSet()
            };

            Assert.NotEmpty(context.VisitedNodes);
            var settings = JsonConvert.DeserializeObject <Dictionary <string, object> >(configJson);

            var processResult = processor.Process(node, context, settings);

            if (isPrimitive)
            {
                // Primitive types are not substituted
                Assert.False(processResult.IsSubstituted);
                Assert.Equal(targetJson, node.Value);
            }
            else
            {
                Assert.True(processResult.IsSubstituted);
                Assert.Equal(targetJson, Standardize(node));
            }
        }
Example #2
0
        public void GivenAComplexDatatypeNodeAndInvalidReplaceValue_WhenSubstitute_FormatExceptionShouldBeThrown(Base data, string configJson)
        {
            SubstituteProcessor processor = new SubstituteProcessor();
            var node    = ElementNode.FromElement(data.ToTypedElement());
            var context = new ProcessContext
            {
                VisitedNodes = new HashSet <ElementNode>()
            };
            var settings = JsonConvert.DeserializeObject <Dictionary <string, object> >(configJson);

            Assert.Throws <FormatException>(() => processor.Process(node, context, settings));
        }
Example #3
0
        public void GivenAPrimitiveNode_WhenSubstitute_SubstitutedNodeShouldBeReturned(Base data, string configJson)
        {
            var node = ElementNode.FromElement(data.ToTypedElement());
            SubstituteProcessor processor = new SubstituteProcessor();
            var context = new ProcessContext
            {
                VisitedNodes = new HashSet <ElementNode>()
            };
            var settings = JsonConvert.DeserializeObject <Dictionary <string, object> >(configJson);

            var processResult = processor.Process(node, context, settings);

            Assert.True(processResult.IsSubstituted);
            Assert.Equal(node.Value?.ToString(), settings["replaceWith"]?.ToString());
        }
Example #4
0
        public void GivenAComplexDatatypeNodeAndValidReplaceValue_WhenSubstitute_SubstituteNodeShouldBeReturned(Base data, string configJson, string targetJson)
        {
            targetJson = targetJson.Replace("\r\n", Environment.NewLine);

            SubstituteProcessor processor = new SubstituteProcessor();
            var node    = ElementNode.FromElement(data.ToTypedElement());
            var context = new ProcessContext
            {
                VisitedNodes = new HashSet <ElementNode>()
            };
            var settings = JsonConvert.DeserializeObject <Dictionary <string, object> >(configJson);

            var processResult = processor.Process(node, context, settings);

            Assert.True(processResult.IsSubstituted);
            Assert.Equal(targetJson, Standardize(node));
        }
        private Dictionary <string, IAnonymizerProcessor> CreateTestProcessors()
        {
            KeepProcessor       keepProcessor       = new KeepProcessor();
            RedactProcessor     redactProcessor     = new RedactProcessor(false, false, false, null);
            DateShiftProcessor  dateShiftProcessor  = new DateShiftProcessor("123", "123", false);
            CryptoHashProcessor cryptoHashProcessor = new CryptoHashProcessor("123");
            EncryptProcessor    encryptProcessor    = new EncryptProcessor("1234567890123456");
            SubstituteProcessor substituteProcessor = new SubstituteProcessor();
            PerturbProcessor    perturbProcessor    = new PerturbProcessor();
            Dictionary <string, IAnonymizerProcessor> processors = new Dictionary <string, IAnonymizerProcessor>()
            {
                { "KEEP", keepProcessor },
                { "REDACT", redactProcessor },
                { "DATESHIFT", dateShiftProcessor },
                { "CRYPTOHASH", cryptoHashProcessor },
                { "ENCRYPT", encryptProcessor },
                { "SUBSTITUTE", substituteProcessor },
                { "PERTURB", perturbProcessor }
            };

            return(processors);
        }
Example #6
0
 public SubstituteProcessorUnitTests()
 {
     Processor = new SubstituteProcessor(JObject.Parse("{\"ReplaceWith\" : \"Anonymous\"}"));
 }