public void ProcessEntityObfuscateMultipleIntegerFields() { // Arrange CrmGenericImporterConfig config = GetCrmConfigWithFieldsToObfuscate(); InitializeEntityMetadata(); MockEntityMetadataCache .Setup(cache => cache.GetAttribute("contact", "age")) .Returns(new IntegerAttributeMetadata()); MockEntityMetadataCache .Setup(cache => cache.GetAttribute("contact", "idnumber")) .Returns(new IntegerAttributeMetadata()); int ageBefore = 25; int idNumberBefore = 25; Entity entity = new Entity("contact"); entity.Attributes.Add("age", ageBefore); entity.Attributes.Add("idnumber", idNumberBefore); EntityWrapper entityWrapper = new EntityWrapper(entity); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "age" }, new FieldToBeObfuscated() { FieldName = "idnumber" } }; EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fiedlsToBeObfuscated); var fieldToBeObfuscated = new List <EntityToBeObfuscated> { entityToBeObfuscated }; config.FieldsToObfuscate.AddRange(fieldToBeObfuscated); // Act ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(MockEntityMetadataCache.Object, config.FieldsToObfuscate); processor.ProcessEntity(entityWrapper, 1, 1); int ageAfter = (int)entity["age"]; int idNumberAfter = (int)entity["idnumber"]; // Assert Assert.AreNotEqual(ageBefore, ageAfter); Assert.AreNotEqual(idNumberBefore, idNumberAfter); }
protected override CrmImportConfig GetImporterConfig() { var importConfig = base.GetImporterConfig(); importConfig.SaveBatchSize = 500; var fiedlsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "firstname" } }; var entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fiedlsToBeObfuscated); var fieldToBeObfuscated = new List <EntityToBeObfuscated> { entityToBeObfuscated }; importConfig.FieldsToObfuscate.AddRange(fieldToBeObfuscated); return(importConfig); }
protected override CrmImportConfig GetImporterConfig() { var importConfig = base.GetImporterConfig(); importConfig.SaveBatchSize = 500; List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated>(); fiedlsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "firstname" }); EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact", FieldsToBeObfuscated = fiedlsToBeObfuscated }; var fieldToBeObfuscated = new List <EntityToBeObfuscated>(); fieldToBeObfuscated.Add(entityToBeObfuscated); importConfig.FieldsToObfuscate = fieldToBeObfuscated; return(importConfig); }
public void ProcessEntityObfuscateMultipleStringFields() { // Arrange CrmGenericImporterConfig config = GetCrmConfigWithFieldsToObfuscate(); string firstnameBefore = "Tester"; string surnameBefore = "Tester"; Entity entity = new Entity("contact"); entity.Attributes.Add("firstname", firstnameBefore); entity.Attributes.Add("surname", surnameBefore); EntityWrapper entityWrapper = new EntityWrapper(entity); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "firstname" }, new FieldToBeObfuscated() { FieldName = "surname" } }; EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fiedlsToBeObfuscated); var fieldToBeObfuscated = new List <EntityToBeObfuscated> { entityToBeObfuscated }; config.FieldsToObfuscate.AddRange(fieldToBeObfuscated); // Act ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(MockEntityMetadataCache.Object, config.FieldsToObfuscate); processor.ProcessEntity(entityWrapper, 1, 1); string firstnameAfter = (string)entity["firstname"]; string surnameAfter = (string)entity["surname"]; // Assert Assert.AreNotEqual(firstnameBefore, firstnameAfter); Assert.AreNotEqual(surnameBefore, surnameAfter); Assert.AreNotEqual(firstnameAfter, surnameAfter); }
public void ProcessEntity_ObfuscateIntegerFields() { // Arrange CrmGenericImporterConfig config = GetCrmConfigWithFieldsToObfuscate(); InitializeEntityMetadata(); MockEntityMetadataCache .Setup(cache => cache.GetAttribute("contact", "age")) .Returns(new IntegerAttributeMetadata()); int ageBefore = 25; string surnameBefore = "Tester"; Entity entity = new Entity("contact"); entity.Attributes.Add("age", ageBefore); entity.Attributes.Add("surname", surnameBefore); EntityWrapper entityWrapper = new EntityWrapper(entity); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated>(); fiedlsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "age" }); EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact", FieldsToBeObfuscated = fiedlsToBeObfuscated }; var fieldToBeObfuscated = new List <EntityToBeObfuscated>(); fieldToBeObfuscated.Add(entityToBeObfuscated); config.FieldsToObfuscate = fieldToBeObfuscated; // Act ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(MockEntityMetadataCache.Object, config.FieldsToObfuscate); processor.ProcessEntity(entityWrapper, 1, 1); int ageAfter = (int)entity["age"]; string surnameAfter = (string)entity["surname"]; // Assert Assert.AreNotEqual(ageBefore, ageAfter); Assert.AreEqual(surnameBefore, surnameAfter); }
public void ProcessEntityObfuscateDoubleFields() { // Arrange CrmGenericImporterConfig config = GetCrmConfigWithFieldsToObfuscate(); InitializeEntityMetadata(); MockEntityMetadataCache .Setup(cache => cache.GetAttribute("contact", "address1_latitude")) .Returns(new DoubleAttributeMetadata()); double latitudeBefore = 51.5178737; Entity entity = new Entity("contact"); entity.Attributes.Add("address1_latitude", latitudeBefore); EntityWrapper entityWrapper = new EntityWrapper(entity); List <FieldToBeObfuscated> fieldsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "address1_latitude" } }; EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fieldsToBeObfuscated); var fieldToBeObfuscated = new List <EntityToBeObfuscated> { entityToBeObfuscated }; config.FieldsToObfuscate.AddRange(fieldToBeObfuscated); // Act ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(MockEntityMetadataCache.Object, config.FieldsToObfuscate); processor.ProcessEntity(entityWrapper, 1, 1); double latitudeAfter = (double)entity["address1_latitude"]; // Assert Assert.AreNotEqual(latitudeBefore, latitudeAfter); }
public void ProcessEntity_ObfuscateDecimalFields() { // Arrange CrmGenericImporterConfig config = GetCrmConfigWithFieldsToObfuscate(); InitializeEntityMetadata(); MockEntityMetadataCache .Setup(cache => cache.GetAttribute("contact", "creditlimit")) .Returns(new DecimalAttributeMetadata()); decimal creditLimitBefore = 1000M; Entity entity = new Entity("contact"); entity.Attributes.Add("creditlimit", creditLimitBefore); EntityWrapper entityWrapper = new EntityWrapper(entity); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated>(); fiedlsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "creditlimit" }); EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact", FieldsToBeObfuscated = fiedlsToBeObfuscated }; var fieldToBeObfuscated = new List <EntityToBeObfuscated>(); fieldToBeObfuscated.Add(entityToBeObfuscated); config.FieldsToObfuscate = fieldToBeObfuscated; // Act ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(MockEntityMetadataCache.Object, config.FieldsToObfuscate); processor.ProcessEntity(entityWrapper, 1, 1); decimal creditLimitAfter = (decimal)entity["creditlimit"]; // Assert Assert.AreNotEqual(creditLimitBefore, creditLimitAfter); }
public void ObfuscateStringFieldsTest() { var orgService = ConnectionHelper.GetOrganizationalServiceTarget(); var cache = new EntityMetadataCache(orgService); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "firstname" } }; EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fiedlsToBeObfuscated); var fieldsToBeObfuscated = new List <EntityToBeObfuscated> { entityToBeObfuscated }; ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(cache, fieldsToBeObfuscated); string beforeFirstName = "Bob"; string beforeLastName = "test"; Entity ent = new Entity("contact"); ent.Attributes.Add("firstname", beforeFirstName); ent.Attributes.Add("lastname", beforeLastName); EntityWrapper entWrap = new EntityWrapper(ent); processor.ProcessEntity(entWrap, 1, 1); Assert.AreNotEqual(beforeFirstName, entWrap.OriginalEntity.Attributes["firstname"]); Assert.AreEqual(beforeLastName, entWrap.OriginalEntity.Attributes["lastname"]); }
public void ObfuscateIntFieldsTest() { var orgService = ConnectionHelper.GetOrganizationalServiceTarget(); var cache = new EntityMetadataCache(orgService); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated>(); fiedlsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "numberofchildren" }); EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact", FieldsToBeObfuscated = fiedlsToBeObfuscated }; var fieldsToBeObfuscated = new List <EntityToBeObfuscated>(); fieldsToBeObfuscated.Add(entityToBeObfuscated); ObfuscateFieldsProcessor processor = new ObfuscateFieldsProcessor(cache, fieldsToBeObfuscated); string beforeFirstName = "Bob"; int beforeNumberOfChildren = 5; Entity ent = new Entity("contact"); ent.Attributes.Add("firstname", beforeFirstName); ent.Attributes.Add("numberofchildren", beforeNumberOfChildren); EntityWrapper entWrap = new EntityWrapper(ent); processor.ProcessEntity(entWrap, 1, 1); Assert.AreEqual(beforeFirstName, entWrap.OriginalEntity.Attributes["firstname"]); Assert.AreNotEqual(beforeNumberOfChildren, entWrap.OriginalEntity.Attributes["numberofchildren"]); }
public void RemoveEntityReferenceNamePropertyValue() { // Arrange Guid accountId = Guid.NewGuid(); string accountName = "ABC Ltd"; Entity account = new Entity("account") { Id = accountId }; account.Attributes.Add("name", "Fake Account"); EntityReference entityRef = account.ToEntityReference(); entityRef.Name = accountName; Entity entity = new Entity("contact"); entity.Attributes.Add("firstname", "Test"); entity.Attributes.Add("surname", "Tester"); entity.Attributes.Add("account", entityRef); List <FieldToBeObfuscated> fiedlsToBeObfuscated = new List <FieldToBeObfuscated> { new FieldToBeObfuscated() { FieldName = "firstname" } }; var fieldToBeObfuscated = new List <EntityToBeObfuscated>(); var entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact" }; entityToBeObfuscated.FieldsToBeObfuscated.AddRange(fiedlsToBeObfuscated); fieldToBeObfuscated.Add(entityToBeObfuscated); List <EntityWrapper> entities = new List <EntityWrapper> { new EntityWrapper(entity) }; var entitiesToExport = entities.Select(e => new CrmEntityStore(e)).ToList(); var dataFileStoreWriter = new DataFileStoreWriter(MockLogger.Object, FilePrefix, TestResultFolder, null, true, fieldToBeObfuscated); string accountNameBefore = ((EntityReference)entity["account"]).Name; // Assert FluentActions.Invoking(() => dataFileStoreWriter.RemoveEntityReferenceNameProperty(entitiesToExport)) .Should() .NotThrow(); string accountNameAfter = ((EntityReference)entity["account"]).Name; accountNameBefore.Should().Be(accountName); accountNameAfter.Should().BeNull(); }
private static EntityToBeObfuscated CreateObfuscationConfigForContact() { List <FieldToBeObfuscated> fieldsToBeObfuscated = new List <FieldToBeObfuscated>(); // Firstname List <ObfuscationFormatOption> firstnameArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> firstnameArgumentParams = new Dictionary <string, string>(); firstnameArgumentParams.Add("filename", "FirstnameAndSurnames.csv"); firstnameArgumentParams.Add("columnname", "firstname"); firstnameArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, firstnameArgumentParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "firstname", ObfuscationFormat = "OB-{0}", ObfuscationFormatArgs = firstnameArguments }); // Lastname List <ObfuscationFormatOption> lastnameArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> lastnameArgumentsParams = new Dictionary <string, string>(); lastnameArgumentsParams.Add("filename", "FirstnameAndSurnames.csv"); lastnameArgumentsParams.Add("columnname", "surname"); lastnameArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, lastnameArgumentsParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "lastname", ObfuscationFormat = "OB-{0}", ObfuscationFormatArgs = lastnameArguments }); // Email Address List <ObfuscationFormatOption> emailAddressArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> emailAddressArgumentsParams1 = new Dictionary <string, string>(); Dictionary <string, string> emailAddressArgumentsParams2 = new Dictionary <string, string>(); emailAddressArgumentsParams1.Add("filename", "FirstnameAndSurnames.csv"); emailAddressArgumentsParams1.Add("columnname", "firstname"); emailAddressArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, emailAddressArgumentsParams1)); emailAddressArgumentsParams2.Add("length", "10"); emailAddressArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomString, emailAddressArgumentsParams2)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "emailaddress1", ObfuscationFormat = "OB-{0}.{1}@email.com", ObfuscationFormatArgs = emailAddressArguments }); // Postcode List <ObfuscationFormatOption> postcodeArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> postcodeArgumentParams = new Dictionary <string, string>(); postcodeArgumentParams.Add("filename", "ukpostcodes.csv"); postcodeArgumentParams.Add("columnname", "postcode"); postcodeArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, postcodeArgumentParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_postalcode", ObfuscationFormat = "OB-{0}", ObfuscationFormatArgs = postcodeArguments }); // Address Latitude List <ObfuscationFormatOption> latitudeArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> latitudeArgumentParams = new Dictionary <string, string>(); latitudeArgumentParams.Add("filename", "ukpostcodes.csv"); latitudeArgumentParams.Add("columnname", "latitude"); latitudeArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, latitudeArgumentParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_latitude", ObfuscationFormat = "{0}", ObfuscationFormatArgs = latitudeArguments }); // Address Longitude List <ObfuscationFormatOption> longitudeArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> longitudeArgumentsParams = new Dictionary <string, string>(); longitudeArgumentsParams.Add("filename", "ukpostcodes.csv"); longitudeArgumentsParams.Add("columnname", "longitude"); longitudeArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.Lookup, longitudeArgumentsParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_longitude", ObfuscationFormat = "{0}", ObfuscationFormatArgs = longitudeArguments }); // Address 1 using default fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_city" }); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_country" }); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_county" }); //Address line 1 List <ObfuscationFormatOption> address_line1Arguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> address_line1ArgumentParams = new Dictionary <string, string>(); address_line1ArgumentParams.Add("min", "1"); address_line1ArgumentParams.Add("max", "1234"); address_line1Arguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomNumber, address_line1ArgumentParams)); Dictionary <string, string> argumentsParams11_2 = new Dictionary <string, string>(); argumentsParams11_2.Add("length", "8"); address_line1Arguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomString, argumentsParams11_2)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_line1", ObfuscationFormat = "OB-{0} {1} Close", ObfuscationFormatArgs = address_line1Arguments }); // Address 1 using defaults fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_line2" }); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_line3" }); // Address 1 Name List <ObfuscationFormatOption> address1_nameArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> address1_NameArgumentParams = new Dictionary <string, string>(); address1_NameArgumentParams.Add("length", "20"); address1_nameArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomString, address1_NameArgumentParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_name", ObfuscationFormat = "{0}", ObfuscationFormatArgs = address1_nameArguments }); // Mobile Telephone List <ObfuscationFormatOption> mobilePhoneArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> mobilephoneArgumentParams1 = new Dictionary <string, string>(); Dictionary <string, string> mobilephoneArgumentParams2 = new Dictionary <string, string>(); mobilephoneArgumentParams1.Add("min", "7000"); mobilephoneArgumentParams1.Add("max", "7999"); mobilePhoneArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomNumber, mobilephoneArgumentParams1)); mobilephoneArgumentParams2.Add("min", "123456"); mobilephoneArgumentParams2.Add("max", "987654"); mobilePhoneArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomNumber, mobilephoneArgumentParams2)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_mobilephone", ObfuscationFormat = "OB-0{0} {1}", ObfuscationFormatArgs = mobilePhoneArguments }); // Address 1 Telephone1 List <ObfuscationFormatOption> telephoneArguments = new List <ObfuscationFormatOption>(); Dictionary <string, string> telephoneArgumentParams = new Dictionary <string, string>(); telephoneArgumentParams.Add("min", "7000"); telephoneArgumentParams.Add("max", "7999"); telephoneArguments.Add(new ObfuscationFormatOption(ObfuscationFormatType.RandomNumber, telephoneArgumentParams)); fieldsToBeObfuscated.Add(new FieldToBeObfuscated() { FieldName = "address1_telephone1", ObfuscationFormat = "OB-0{0}", ObfuscationFormatArgs = telephoneArguments }); EntityToBeObfuscated entityToBeObfuscated = new EntityToBeObfuscated() { EntityName = "contact", FieldsToBeObfuscated = fieldsToBeObfuscated }; return(entityToBeObfuscated); }