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)); } }
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)); }
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()); }
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); }
public SubstituteProcessorUnitTests() { Processor = new SubstituteProcessor(JObject.Parse("{\"ReplaceWith\" : \"Anonymous\"}")); }