Exemple #1
0
        private object LookupRandomValue(string columnName, ObfuscationLookup lookup)
        {
            int index = FormattingOptionProcessorStatics.RandomGenerator.Next(lookup.Count - 1);

            var newValue = lookup[index, columnName];

            return(newValue);
        }
        public void PassingEmptyStringAsTheNameParamShouldThrowInvalidArgumentException()
        {
            // Arrange
            List <dynamic>    dataRows = CreateDataRows();
            ObfuscationLookup a        = null;

            // Act
            Action action = () => a = new ObfuscationLookup(string.Empty, dataRows);

            // Assert
            action.Should().Throw <ArgumentException>();
        }
        public void GetNameShouldReturnTheNameOfTheLookupFile()
        {
            // Arrange
            string         name     = "testlookup.csv";
            List <dynamic> dataRows = CreateDataRows();

            // Act
            ObfuscationLookup testObject = new ObfuscationLookup(name, dataRows);

            // Assert
            testObject.Name.Should().Be(name);
        }
        public void CountShouldEqualTheNumberOfDatarowsPassedWhenInitialisingTheObject()
        {
            // Arrange
            string         name     = "testlookup.csv";
            List <dynamic> dataRows = CreateDataRows();

            // Act
            ObfuscationLookup testObject = new ObfuscationLookup(name, dataRows);

            // Assert
            testObject.Count.Should().Be(dataRows.Count);
        }
        public void PassingNullAsTheDataRowsParamShouldThrowInvalidArgumentException()
        {
            // Arrange
            string            name = "testlookup.csv";
            ObfuscationLookup a    = null;

            // Act
            Action action = () => a = new ObfuscationLookup(name, null);

            // Assert
            action.Should().Throw <ArgumentException>();
        }
        public void Setup()
        {
            InitializeProperties();

            ObfuscationLookup lookups = new ObfuscationLookup("testlookup.csv", CreateDataRows());

            var mockLookup = new Mock <FormattingOptionLookup>();

            mockLookup.Setup(a => a.GetObfuscationLookup(It.IsAny <string>()))
            .Returns(lookups);

            systemUnderTest = new FormattingOptionProcessor(mockLookup.Object);
        }
        public void PassingEmptyListAsTheDataRowsParamShouldThrowInvalidArgumentException()
        {
            // Arrange
            string            name     = "testlookup.csv";
            List <dynamic>    dataRows = new List <dynamic>();
            ObfuscationLookup a        = null;

            // Act
            Action action = () => a = new ObfuscationLookup(name, dataRows);

            // Assert
            action.Should().Throw <ArgumentException>();
        }
        public void PassingValidNameAndDataRowsParamsToObjectInitialiserShouldCreateTheObject()
        {
            // Arrange
            string         name     = "testlookup.csv";
            List <dynamic> dataRows = CreateDataRows();

            // Act
            ObfuscationLookup testObject = new ObfuscationLookup(name, dataRows);

            // Assert
            testObject.Count.Should().Be(dataRows.Count);
            testObject.Name.Should().Be(name);
        }
        public void GetItemShouldReturnNullIfNoItemWithAKeyOfColumnNameCanBeFound()
        {
            // Arrange
            string         name     = "testlookup.csv";
            List <dynamic> dataRows = CreateDataRows();

            int    index      = dataRows.Count - 1;
            string columnName = "NonExistingColumnName";

            // Act
            ObfuscationLookup testObject = new ObfuscationLookup(name, dataRows);

            // Assert
            testObject[index, columnName].Should().BeNull();
        }
        public void GetItemShouldReturnTheDataRowAtTheGivenIndex()
        {
            // Arrange
            string         name     = "testlookup.csv";
            List <dynamic> dataRows = CreateDataRows();

            int    index      = dataRows.Count - 1;
            string columnName = "postcode";

            ExpandoObject row             = dataRows[index];
            var           properties      = (IDictionary <string, object>)row;
            var           comparisonValue = properties[columnName];

            // Act
            ObfuscationLookup testObject = new ObfuscationLookup(name, dataRows);

            // Assert
            testObject[index, columnName].Should().Be(comparisonValue);
        }
Exemple #11
0
        public virtual string GenerateFromLookup(string originalValue, ObfuscationFormatOption arg)
        {
            originalValue.ThrowArgumentNullExceptionIfNull(nameof(originalValue));
            arg.ThrowArgumentNullExceptionIfNull(nameof(arg));

            string fileName = string.Empty;

            if (arg.Arguments.ContainsKey("filename"))
            {
                fileName = arg.Arguments["filename"];
            }

            if (string.IsNullOrEmpty(fileName))
            {
                throw new ValidationException($"Obfuscation format option {nameof(fileName)} should not be null");
            }

            string columnName = string.Empty;

            if (arg.Arguments.ContainsKey("columnname"))
            {
                columnName = arg.Arguments["columnname"];
            }

            if (string.IsNullOrEmpty(columnName))
            {
                throw new ValidationException($"Obfuscation format option {nameof(columnName)} should not be null");
            }

            ObfuscationLookup obfuscationLookup = formattingOptionLookup.GetObfuscationLookup(fileName);

            var newValue = (string)LookupRandomValue(columnName, obfuscationLookup);

            while (originalValue.Contains(newValue))
            {
                newValue = (string)LookupRandomValue(columnName, obfuscationLookup);
            }

            return(newValue);
        }
        /// <summary>
        /// Load all csv files into memory from the specified path.
        /// </summary>
        /// <param name="folderPath">The folder that contains the csv files to be used as lookups.</param>
        public static void LoadLookups(string folderPath)
        {
            folderPath.ThrowArgumentNullExceptionIfNull(nameof(folderPath));

            var searchPattern = "*.csv";
            var files         = System.IO.Directory.GetFiles(folderPath, searchPattern, SearchOption.TopDirectoryOnly);

            if (files.Length == 0)
            {
                throw new FileNotFoundException($"No file matching the search pattern ({searchPattern}) could be found in the folder ({folderPath})");
            }

            Dictionary <string, ObfuscationLookup> lookups = new Dictionary <string, ObfuscationLookup>();

            foreach (string filePath in files)
            {
                var file            = new FileInfo(filePath);
                ObfuscationLookup f = ReadFromFile(filePath);

                lookups.Add(file.Name, f);
            }

            ObfuscationLookups = lookups;
        }