public void Should_be_possible_to_get_textfilecontent_with_notequal_operation_on_instance_entity() { var parameters = TextFileContentObjectCollector .GetDictionaryWithParametersToSearchTextFileConten("c:\\file.ini", "3gp", 3); var result = GetObjectCollectorWithBehavior().GetValues(parameters); }
public void Should_be_possible_to_get_textfilecontent_instance_as_specified_by_OVAL() { var parameters = TextFileContentObjectCollector .GetDictionaryWithParametersToSearchTextFileConten("c:\\file.ini", "3gp.*?\r\n", 1); var result = GetObjectCollectorWithBehavior().GetValues(parameters); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual("3gp=MPEGVideo", result.Single().Trim()); }
public void Should_be_possible_to_get_one_line_with_pattern_match() { var fileContentSearchingParameters = TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"CMCDL.*?\r\n", 1); var textFileContentObjectCollector = new TextFileContentObjectCollector() { FileContentProvider = CreateFakeFileContentProvider(CreateFakeFileContent()) }; var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual("CMCDLLNAME32=mapi32.dll", result[0].Trim()); }
public void Should_be_possible_to_get_xml_entries_with_pattern_match() { var fileContentSearchingParameters = TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"<book>.*?</book>", 1, true, true); var textFileContentObjectCollector = new TextFileContentObjectCollector() { FileContentProvider = CreateFakeFileContentProvider(GetFakeLines()) }; var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.IsTrue(result[0].Contains("<title>The Lord of the Rings</title>")); }
public void Should_be_possible_to_get_the_second_instance_of_pattern_match() { var fileContentSearchingParameters = TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"<title>.*?</title>", 2); var textFileContentObjectCollector = new TextFileContentObjectCollector() { FileContentProvider = CreateFakeFileContentProvider(GetFakeLines()) }; var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual(@"<title>Bible</title>", result[0].Trim()); }
public void Should_be_possible_to_get_textfilecontent_entries_with_pattern_match() { string regex = @"\s*net\.ipv4\.conf\.all\.accept_redirects\s*=\s*0\s*(#.*)?"; var fileContentSearchingParameters = TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten ("c:\\temp\\filecontent_base.xml", regex, 1); var textFileContentObjectCollector = new TextFileContentObjectCollector() { FileContentProvider = CreateFakeFileContentProvider(GetFakeLinesInFileContent()) }; var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.IsTrue(result[0].Contains("net.ipv4.conf.all.accept_redirects = 0")); }
public IEnumerable <ItemType> GetItemsToCollect(Definitions.ObjectType objectType, VariablesEvaluated variables) { var fileObject = ((textfilecontent54_object)objectType); var variableEvaluator = new VariableEntityEvaluator(variables); IList <string> filepaths = new List <string>(); IList <string> paths = new List <string>(); IList <string> filenames = new List <string>(); if (fileObject.IsFilePathDefined()) { filepaths = variableEvaluator .EvaluateVariableForEntity( (EntitySimpleBaseType)fileObject.GetItemValue( textfilecontent54_ItemsChoices.filepath)).ToList(); foreach (var filepath in filepaths) { var indexOfLastSlash = filepath.LastIndexOf("/"); var path = filepath.Substring(0, indexOfLastSlash + 1); var filename = filepath.Replace(path, string.Empty); paths.Add(path); filenames.Add(filename); } } else { paths = variableEvaluator .EvaluateVariableForEntity( (EntitySimpleBaseType)fileObject.GetItemValue( textfilecontent54_ItemsChoices.path)).ToList(); filenames = variableEvaluator .EvaluateVariableForEntity( (EntitySimpleBaseType)fileObject.GetItemValue( textfilecontent54_ItemsChoices.filename)).ToList(); foreach (var path in paths) { foreach (var filename in filenames) { filepaths.Add(string.Format("{0}/{1}", path, filename).Replace("//", "/")); } } } var entityPattern = (EntitySimpleBaseType)fileObject.GetItemValue(textfilecontent54_ItemsChoices.pattern); var pattern = variableEvaluator.EvaluateVariableForEntity(entityPattern).SingleOrDefault(); var entityInstance = (EntitySimpleBaseType)fileObject.GetItemValue(textfilecontent54_ItemsChoices.instance); var instance = variableEvaluator.EvaluateVariableForEntity(entityInstance).SingleOrDefault(); var itemsToCollect = new List <ItemType>(); foreach (var filepath in filepaths) { if (string.IsNullOrWhiteSpace(pattern)) { continue; } var fileContentSearchParameters = TextFileContentObjectCollector .GetDictionaryWithParametersToSearchTextFileConten( filepath, pattern, int.Parse(instance), fileObject.IsMultiline()); try { var matchLines = ObjectCollector.GetValues(fileContentSearchParameters); if (matchLines == null || matchLines.Count <= 0) { var newNotExistsItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null); newNotExistsItem.status = StatusEnumeration.doesnotexist; itemsToCollect.Add(newNotExistsItem); } else { var newCollectedItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null); var result = string.Join(System.Environment.NewLine, matchLines); ((textfilecontent_item)newCollectedItem).text = new EntityItemAnySimpleType() { Value = result }; itemsToCollect.Add(newCollectedItem); } } catch (UnauthorizedAccessException) { var newNotCollectedItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null); newNotCollectedItem.status = StatusEnumeration.notcollected; itemsToCollect.Add(newNotCollectedItem); } } //IList<ItemType> itemsToCollect = new List<ItemType>(); //for (int i = 0; i < filepaths.Count; i++) //{ // if ((filepaths[i] != null) && (paths[i] != null) && (filenames[i] != null) && (pattern != null) && (instance != null)) // { // var fileContents = this.FileContentCollector.GetTextFileFullContentInLines(filepaths[i]); //this.FileContentCollector.GetTextFileContent(filepaths[i], pattern); // if ((fileContents == null) || (fileContents.Count() <= 0)) // { // var newFileContentItem = CreateTextFileContentItem(filepaths[i], "", "", "", "", ""); // newFileContentItem.status = StatusEnumeration.doesnotexist; // itemsToCollect.Add(newFileContentItem); // continue; // } // var matchLines = new Dictionary<int, string>(); // for (int currentInstance = 1; currentInstance <= fileContents.Count(); currentInstance++) // { // var comparator = new OvalComparatorFactory().GetComparator(entityInstance.datatype); // if (comparator.Compare(instance, currentInstance.ToString(), entityInstance.operation)) // { // var instanceNumber = currentInstance - 1; // var matchLine = fileContents[instanceNumber].Text; // matchLines.Add(currentInstance, matchLine); // } // } // foreach (var matchLine in matchLines) // { // var newTextFileContent = // CreateTextFileContentItem( // filepaths[i], // paths[i], // filenames[i], // pattern, // matchLine.Key.ToString(), // matchLine.Value); // itemsToCollect.Add(newTextFileContent); // } // } //} return(itemsToCollect); }