public void Should_be_possible_to_generate_FileItems_from_FileObject_with_FilePathEntity_defined_with_PatternMatchOperation()
        {
            #region Oval File Object
            //  <file_object id="oval:modulo:obj:5009" version="1" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows">
            //      <filepath operation="pattern match">c:\windows\^system.*\drivers\^driv.*</filepath>
            //  </file_object>
            #endregion

            // Arrange
            string[] fakeFoundPaths = new string[]
            { "c:\\windows\\xsystem\\drivers\\driver.exe", "c:\\windows\\system\\drivers\\vgadriver.exe",
              @"c:\windows\system\drivers\driverx.exe", @"c:\windows\system 32\drivers\driver.dll",
              @"c:\windows\system 32\drivers\drivery.exe", "c:\\windows\\system 32\\drivers\\x64" };

            file_object           fileObj50009;
            FileItemTypeGenerator fileItemsGenerator = this.GetMockedFileItemTypeGenerator(OBJ_50009_ID, fakeFoundPaths, out fileObj50009);


            // Act
            IList <ItemType> itemsToCollect = fileItemsGenerator.GetItemsToCollect(fileObj50009, null).ToList();
            Assert.IsNotNull(itemsToCollect, "The generated items cannot be null.");
            Assert.AreEqual(3, itemsToCollect.Count, "The number of generated items is not expected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], @"c:\windows\system\drivers\driverx.exe", null, null);
            this.AssertGeneratedFileItem(itemsToCollect[1], @"c:\windows\system 32\drivers\driver.dll", null, null);
            this.AssertGeneratedFileItem(itemsToCollect[2], @"c:\windows\system 32\drivers\drivery.exe", null, null);
        }
        public void Should_be_possible_to_generate_FileItems_from_FileObject_with_FilePathEntity_defined_with_reference_to_variable()
        {
            #region Oval File Object
            //  <file_object id="oval:modulo:obj:50010" version="1" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows">
            //      <filepath var_ref="oval:modulo:var:50010"></filepath>
            //  </file_object>
            //  <constant_variable id="oval:modulo:var:50010" datatype="string" version="1" comment="...">
            //      <value>c:\windows\system32\vgadriver.dll</value>
            //  </constant_variable>
            #endregion

            // Arrange
            string fakeVariableValue = @"c:\windows\system32\vgadriver.dll";
            var    fileObj50010      = (file_object)WindowsTestHelper.GetObjectFromDefinitions(DEFINITIONS_REGEX_ON_VALUE, OBJ_50010_ID);
            var    vars = VariableHelper.CreateVariableWithOneValue(OBJ_50010_ID, "oval:modulo:var:50010", fakeVariableValue);
            var    fileItemsGenerator = new FileItemTypeGenerator()
            {
                SystemDataSource = WindowsTestHelper.GetDataSourceFakewithoutRegex()
            };

            // Act
            IList <ItemType> itemsToCollect = fileItemsGenerator.GetItemsToCollect(fileObj50010, vars).ToList();

            // Assert
            Assert.IsNotNull(itemsToCollect, "The generated items cannot be null.");
            Assert.AreEqual(1, itemsToCollect.Count, "The number of generated items is not expected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], fakeVariableValue, null, null);
        }
        public void Should_be_possible_to_generate_FileItems_from_FileObject_with_operation_in_path_and_variableReference_in_filename()
        {
            #region Oval File Object and Variable
            // <file_object id="oval:modulo:obj:50007" version="1" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows">
            //   <path operation="pattern match">c:\windows\^system.*\drivers</path>
            //   <filename var_ref="oval:modulo:var:50007"></filename>
            // </file_object>

            // <constant_variable id="oval:modulo:var:50007" datatype="string" version="1" comment="...">
            //   <value>driver.dll</value>
            // </constant_variable>
            #endregion

            // Arrange
            string[] fakeFoundPaths = new string[]
            { "c:\\windows\\xsystem\\drivers\\driver.exe", "c:\\windows\\system\\drivers\\vgadriver.exe",
              "c:\\windows\\system\\drivers\\driverx.exe", @"c:\windows\system 32\drivers\driver.dll",
              "c:\\windows\\system 32\\drivers\\drivery.exe", "c:\\windows\\system 32\\drivers\\x64" };


            file_object           fileObj50007;
            VariablesEvaluated    vars = VariableHelper.CreateVariableWithOneValue(OBJ_50007_ID, "oval:modulo:var:50007", "driver.dll");
            FileItemTypeGenerator fileItemsGenerator = this.GetMockedFileItemTypeGenerator(OBJ_50007_ID, fakeFoundPaths, out fileObj50007);

            // Act
            IList <ItemType> itemsToCollect = fileItemsGenerator.GetItemsToCollect(fileObj50007, vars).ToList();


            // Assert
            Assert.IsNotNull(itemsToCollect, "The generated items cannot be null.");
            Assert.AreEqual(1, itemsToCollect.Count, "The number of generated items is not expected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], null, @"c:\windows\system 32\drivers", "driver.dll");
        }
        public void Should_be_possible_to_generate_file_items_from_object_types_with_regex_on_all_entities()
        {
            #region Oval File Object
            //  <file_object id="oval:modulo:obj:50005" version="1" xmlns="#windows">
            //    <path operation="pattern match">c:\windows\^system.*\drivers</path>
            //    <filename operation="pattern match">.*driver.exe</filename>
            //  </file_object>
            #endregion

            // Arrange
            string[] fakeFoundPaths = new string[] {
                "c:\\windows\\xsystem\\drivers\\driver.exe", @"c:\windows\system\drivers\vgadriver.exe",
                "c:\\windows\\system\\drivers\\driverx.exe", @"c:\windows\system 32\drivers\xptodriver.exe",
                "c:\\windows\\system 32\\drivers\\drivery.exe", "c:\\windows\\system 32\\drivers\\x64"
            };

            file_object           fileObj50005;
            FileItemTypeGenerator fileItemsGenerator = this.GetMockedFileItemTypeGenerator(OBJ_50005_ID, fakeFoundPaths, out fileObj50005);


            // Act
            IList <ItemType> itemsToCollect = fileItemsGenerator.GetItemsToCollect(fileObj50005, null).ToList();

            // Assert
            Assert.IsNotNull(itemsToCollect, "The return of GetItemsToCollect method cannot be null.");
            Assert.AreEqual(2, itemsToCollect.Count, "The number of generated items is not expected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], null, @"c:\windows\system\drivers", "vgadriver.exe");
            this.AssertGeneratedFileItem(itemsToCollect[1], null, @"c:\windows\system 32\drivers", "xptodriver.exe");
        }
        public void Should_possible_to_collect_directory_passing_nil_filename()
        {
            var fileObject            = (file_object)WindowsTestHelper.GetObjectFromDefinitions("definitionsSimple.xml", "oval:com.modulo.IIS6:obj:6877401");
            var fakeFileProvider      = CreateFileProviderToAlwaysReturnThatTheFileExists();
            var fakeEvaluatedVars     = VariableHelper.CreateVariableWithOneValue(fileObject.id, "oval:com.modulo.IIS6:var:687741", @"c:\System32\Inetsrv\Iisadmpwd");
            var fileItemTypeGenerator = new FileItemTypeGenerator()
            {
                FileProvider = fakeFileProvider
            };

            var itemsToCollect = fileItemTypeGenerator.GetItemsToCollect(fileObject, fakeEvaluatedVars).ToList();

            ItemTypeChecker.DoBasicAssertForItems(itemsToCollect, 1, typeof(file_item));
            var fileItem = (file_item)itemsToCollect.Single();

            ItemTypeEntityChecker.AssertItemTypeEntity(fileItem.path, @"c:\System32\Inetsrv\Iisadmpwd", "path");
            ItemTypeEntityChecker.AssertItemTypeEntity(fileItem.filename, string.Empty, "filename");
        }
        public void Should_be_possible_to_generate_file_items_from_object_types()
        {
            // Arrange
            var fileObject            = (file_object)WindowsTestHelper.GetObjectFromDefinitions(DEFINITIONS_REGEX_ON_VALUE, OBJ_50004_ID);
            var fakeFileProvider      = CreateFileProviderToAlwaysReturnThatTheFileExists();
            var fileItemTypeGenerator = new FileItemTypeGenerator()
            {
                FileProvider = fakeFileProvider
            };

            // Act
            var itemsToCollect = fileItemTypeGenerator.GetItemsToCollect(fileObject, null).ToList();

            // Assert
            Assert.IsNotNull(itemsToCollect, "The return of GetItemsToCollect cannot be null.");
            Assert.AreEqual(1, itemsToCollect.Count, "The number of items to collect is unexpected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], null, "c:\\windows", "foo.exe");
        }
        public void Should_be_possible_to_generate_FileItems_from_FileObject_with_FilePathEntity_defined()
        {
            #region Oval File Object
            //  <file_object id="oval:modulo:obj:50008" version="1" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows">
            //      <filepath>c:\windows\foo.exe</filepath>
            //  </file_object>
            #endregion

            // Arrange
            file_object fileObj50008       = (file_object)WindowsTestHelper.GetObjectFromDefinitions(DEFINITIONS_REGEX_ON_VALUE, OBJ_50008_ID);
            var         fileItemsGenerator = new FileItemTypeGenerator()
            {
                SystemDataSource = WindowsTestHelper.GetDataSourceFakewithoutRegex()
            };


            // Act
            IList <ItemType> itemsToCollect = fileItemsGenerator.GetItemsToCollect(fileObj50008, null).ToList();
            Assert.IsNotNull(itemsToCollect, "The generated items cannot be null.");
            Assert.AreEqual(1, itemsToCollect.Count, "The number of generated items is not expected.");
            this.AssertGeneratedFileItem(itemsToCollect[0], @"c:\windows\foo.exe", null, null);
        }