コード例 #1
0
        private WmiObject NewWmiObjectForFakeLocalGroup(string groupName, string sid)
        {
            var newWmiObject = new WmiObject();

            newWmiObject.Add("Name", groupName);
            newWmiObject.Add("SID", sid);
            return(newWmiObject);
        }
コード例 #2
0
        public IEnumerable <WmiObject> GetWmiObjectsForNetworkInterfacesAdapter()
        {
            WmiObject networkInterfaceAdapter = new WmiObject();

            networkInterfaceAdapter.Add("Index", 6);
            networkInterfaceAdapter.Add("PhysicalAdapter", true);
            networkInterfaceAdapter.Add("AdapterTypeId", 0);
            List <WmiObject> wmiObjects = new List <WmiObject>();

            wmiObjects.Add(networkInterfaceAdapter);
            return(wmiObjects);
        }
コード例 #3
0
        public void Should_be_possible_to_collect_FileEffectiveRights()
        {
            // Arrange
            WmiObject fakeWmiObject = new WmiObject();

            fakeWmiObject.Add("Descriptor.DACL.AccessMask", (uint)128);
            fakeWmiObject.Add("Descriptor.DACL.AceFlags", (uint)123);
            fakeWmiObject.Add("Descriptor.DACL.Trustee.SID", "{500}");
            fakeWmiObject.Add("Descriptor.DACL.Trustee.Domain", "mss");
            fakeWmiObject.Add("Descriptor.DACL.Trustee.Name", "lfernandes");


            MockRepository  mocks = new MockRepository();
            WmiDataProvider fakeWmiDataProvider = mocks.DynamicMock <WmiDataProvider>();

            Expect.Call(fakeWmiDataProvider.InvokeMethodByWmiPath(null)).IgnoreArguments().Return(new WmiObject[] { fakeWmiObject });
            FileEffectiveRightsObjectCollector fileEffectiveRightsSysDataSource = new FileEffectiveRightsObjectCollector();

            fileEffectiveRightsSysDataSource.WmiDataProvider = fakeWmiDataProvider;

            mocks.ReplayAll();

            // Act
            IEnumerable <CollectedItem> collectedItem = fileEffectiveRightsSysDataSource.CollectDataForSystemItem(this.getFakeFileItem());

            Assert.IsNotNull(collectedItem, "The return of collect data cannot be null");
            Assert.AreEqual(1, collectedItem.Count(), "Unexpected collected items count.");
            Assert.IsNotNull(collectedItem.ElementAt(0).ItemType, "The file item cannot be null.");
            Assert.IsInstanceOfType(collectedItem.ElementAt(0).ItemType, typeof(fileeffectiverights_item), "The item of collected item must be file_item");
            fileeffectiverights_item collectedFileEffectiveRights = (fileeffectiverights_item)collectedItem.ElementAt(0).ItemType;

            Assert.AreEqual("{500}", collectedFileEffectiveRights.trustee_sid.Value, "Unexpected item value.");
            Assert.AreEqual("1", collectedFileEffectiveRights.file_read_attributes.Value, "Unexpected file attribute found.");

            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_append_data, false, "file_append_data");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_delete_child, false, "file_delete_child");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_execute, false, "file_execute");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_read_data, false, "file_read_data");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_read_ea, false, "file_read_ea");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_write_attributes, false, "file_write_attributes");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_write_data, false, "file_write_data");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.file_write_ea, false, "file_write_ea");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.generic_all, true, "generic_all");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.generic_execute, true, "generic_execute");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.generic_read, true, "generic_read");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.generic_write, false, "generic_write");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.standard_delete, false, "standard_delete");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.standard_read_control, false, "standard_delete");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.standard_synchronize, false, "standard_sync");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.standard_write_dac, false, "standard_write_dac");
            this.AssertFileEffectiveRight(collectedFileEffectiveRights.standard_write_owner, false, "standard_write_owner");
        }
コード例 #4
0
        private IEnumerable <WmiObject> CreateFakeWmiReturn()
        {
            var wmiObject = new WmiObject();

            wmiObject.Add("name", "cpaiva");
            wmiObject.Add("domain", "mss");
            var wmiObject2 = new WmiObject();

            wmiObject2.Add("name", "jcastro");
            wmiObject2.Add("domain", "local");

            return(new WmiObject[] { wmiObject, wmiObject2 });
        }
コード例 #5
0
        public IEnumerable <WmiObject> GetWmiObjectsForOperatingSystemQuery()
        {
            WmiObject os = new WmiObject();

            os.Add("Version", "6.0.6002");
            os.Add("Name", "Microsoft® Windows Server® 2008 Enterprise |C:\\Windows|\\Device\\Harddisk0\\Partition2");
            os.Add("ServicePackMajorVersion", (ushort)2);
            os.Add("ServicePackMinorVersion", (ushort)0);

            List <WmiObject> wmiObjects = new List <WmiObject>();

            wmiObjects.Add(os);
            return(wmiObjects);
        }
コード例 #6
0
        public IEnumerable <WmiObject> GetWmiObjectsForComputerSystemQuery()
        {
            WmiObject system = new WmiObject();

            system.Add("SystemType", "X86-based PC");
            system.Add("DNSHostName", "MSS-RJ-220");
            system.Add("PartOfDomain", true);
            system.Add("Domain", "mss.modulo.com.br");
            system.Add("Name", "MSS-RJ-220");


            List <WmiObject> wmiObjects = new List <WmiObject>();

            wmiObjects.Add(system);
            return(wmiObjects);
        }
コード例 #7
0
        private WmiObject NewWmiObjectForFakeGroupUser(string name)
        {
            var partComponent = String.Format("\\\\{0}\\root\\cimv2:Win32_UserAccount.Domain=\"{0}\",Name=\"{1}\"", FAKE_COMPUTER_NAME, name);
            var newWmiObject  = new WmiObject();

            newWmiObject.Add("PartComponent", partComponent);
            return(newWmiObject);
        }
コード例 #8
0
        private WmiObject createFakeWmiObject(string accountDomain, string accountName, string isLocalAccount, string wmiClassName)
        {
            WmiObject fakeWmiObject = new WmiObject();

            fakeWmiObject.Add("__CLASS", wmiClassName);
            fakeWmiObject.Add("Description", "Administrator have complete and unrestricted access to the computer/domain");
            fakeWmiObject.Add("Domain", accountDomain);
            fakeWmiObject.Add("Name", accountName);
            fakeWmiObject.Add("InstallDate", null);
            fakeWmiObject.Add("LocalAccount", Boolean.Parse(isLocalAccount));
            fakeWmiObject.Add(@"Caption", string.Format(@"{0}\{1}", accountDomain, accountName));
            fakeWmiObject.Add("SID", Guid.NewGuid().ToString());
            fakeWmiObject.Add("SIDType", (UInt16)4);
            fakeWmiObject.Add("Status", "OK");

            return(fakeWmiObject);
        }
コード例 #9
0
        private WmiDataProvider GetWmiProviderMock(string usernameReturn, bool userDisabledReturn, params string[] groupNamesReturn)
        {
            var fakeWqlResult = new List <WmiObject>();

            if (usernameReturn != null)
            {
                var fakeWmiObject = new WmiObject();
                fakeWmiObject.Add("Domain", "fakeDomainOrComputername");
                fakeWmiObject.Add("Name", usernameReturn);
                fakeWmiObject.Add("Disabled", userDisabledReturn);
                fakeWqlResult.Add(fakeWmiObject);
            }

            var mocks           = new MockRepository();
            var fakeWmiProvider = mocks.DynamicMock <WmiDataProvider>();

            Expect.Call(fakeWmiProvider.ExecuteWQL(null)).IgnoreArguments().Return(fakeWqlResult);
            mocks.ReplayAll();

            return(fakeWmiProvider);
        }
コード例 #10
0
        private WmiObject createFakeWmiObject(string completeFileName, string fileType, int fileSize)
        {
            WmiObject fakeWmiObject = new WmiObject();

            fakeWmiObject.Add("Name", completeFileName);
            fakeWmiObject.Add(GeneratedFileItemAttributes.FileSize.ToString(), fileSize);
            fakeWmiObject.Add(GeneratedFileItemAttributes.CreationDate.ToString(), "20081217165939.013961 - 120");
            fakeWmiObject.Add(GeneratedFileItemAttributes.LastModified.ToString(), "20090116171121.673899 - 120");
            fakeWmiObject.Add(GeneratedFileItemAttributes.LastAccessed.ToString(), "20081217171525.895263 - 120");
            fakeWmiObject.Add(GeneratedFileItemAttributes.Version.ToString(), "1");
            fakeWmiObject.Add(GeneratedFileItemAttributes.FileType.ToString(), fileType);
            fakeWmiObject.Add(GeneratedFileItemAttributes.Manufacturer.ToString(), "Modulo");
            return(fakeWmiObject);
        }
コード例 #11
0
        private WmiDataProvider GetWmiProviderMockWithNoWmiResultBehavior()
        {
            // This mocked WmiDataProvider must be used in order to test GetAllGroupsByUser method.
            var mocks           = new MockRepository();
            var fakeWmiProvider = mocks.StrictMock <WmiDataProvider>();

            // Create expectation for first calling (to get computer name).
            var wqlToGetComputerName          = new WQLBuilder().WithWmiClass("Win32_ComputerSystem").Build();
            var fakeWin32ComputerSystemRecord = new WmiObject();

            fakeWin32ComputerSystemRecord.Add("Name", FAKE_COMPUTER_NAME);
            fakeWin32ComputerSystemRecord.Add("DomainRole", 1);
            Expect.Call(fakeWmiProvider.ExecuteWQL(wqlToGetComputerName)).Return(new[] { fakeWin32ComputerSystemRecord });

            // Create expectation for second calling (to get all local groups);
            var wqlToGetAllLocalGroups = new WQLBuilder().WithWmiClass("Win32_Group").AddParameter("localaccount", "1").Build();
            var fakeWin32GroupRecords  = new List <WmiObject>();

            fakeWin32GroupRecords.Add(NewWmiObjectForFakeLocalGroup("Administrators", "S-1-5-32-544"));
            fakeWin32GroupRecords.Add(NewWmiObjectForFakeLocalGroup("Backup Operators", "S-1-5-32-551"));
            fakeWin32GroupRecords.Add(NewWmiObjectForFakeLocalGroup("Users", "S-1-5-32-545"));
            Expect.Call(fakeWmiProvider.ExecuteWQL(wqlToGetAllLocalGroups)).Return(fakeWin32GroupRecords);

            // Create expectation for each get group component calling...
            CreateExpectationForGetGroupComponent(fakeWmiProvider, "Administrators");
            CreateExpectationForGetGroupComponent(fakeWmiProvider, "Backup Operators");
            CreateExpectationForGetGroupComponent(fakeWmiProvider, "Users");

            // Create expectation for each get user details calling (3 first times) and get user SID (3 last times)
            Expect.Call(fakeWmiProvider.ExecuteWQL(null)).IgnoreArguments().Repeat.Times(6).Return(null);

            var wqlAllGetBuiltinAccounts = new WQLBuilder().WithWmiClass("Win32_SystemAccount").Build();

            Expect.Call(fakeWmiProvider.ExecuteWQL(wqlAllGetBuiltinAccounts)).Return(null);

            mocks.ReplayAll();

            return(fakeWmiProvider);
        }
コード例 #12
0
        private IEnumerable <WmiObject> CreateFakeWmiObjectList(string wmiFieldName, string[] wmiFieldValues)
        {
            var result = new List <WmiObject>();

            foreach (var wmiFieldValue in wmiFieldValues)
            {
                var fakeWmiObject = new WmiObject();
                fakeWmiObject.Add(wmiFieldName, wmiFieldValue);

                result.Add(fakeWmiObject);
            }

            return(result);
        }
コード例 #13
0
        private WmiObject createFakeWmiObject()
        {
            WmiObject fakeWmiObject = new WmiObject();

            fakeWmiObject.Add(FILE_SIZE, 50);
            fakeWmiObject.Add(C_DATE, "20081217165939.013961 - 120");
            fakeWmiObject.Add(M_DATE, "20090116171121.673899 - 120");
            fakeWmiObject.Add(A_DATE, "20081217171525.895263 - 120");
            fakeWmiObject.Add(VERSION, "1");
            fakeWmiObject.Add(FILE_TYPE, "Text Document");
            fakeWmiObject.Add(COMPANY, "Modulo");
            return(fakeWmiObject);
        }
コード例 #14
0
        public IEnumerable <WmiObject> GetWmiObjectsForNetworkInterfaces()
        {
            WmiObject networkInterface = new WmiObject();

            networkInterface.Add("Index", 6);
            networkInterface.Add("InterfaceIndex", 10);
            networkInterface.Add("Description", "Intel(R) 82567LM-3 Gigabit Network Connection");
            networkInterface.Add("MACAddress", "00 - 23 - AE - B6 - 6F - BF");
            networkInterface.Add("DHCPEnabled", true);
            networkInterface.Add("IPAddress", new String[] { "172.16.3.166", "fe80::99ab:a003:a78e:103b" });
            networkInterface.Add("IPSubnet", new String[] { "255.255.254.0", "64" });
            networkInterface.Add("IPUseZeroBroadcast", false);

            List <WmiObject> wmiObjects = new List <WmiObject>();

            wmiObjects.Add(networkInterface);
            return(wmiObjects);
        }