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);
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #7
0
        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);
        }