public void DomainTrustProcessor_EnumerateDomainTrusts_HappyPath()
        {
            var mockUtils     = new Mock <MockLDAPUtils>();
            var searchResults = new[]
            {
                new MockSearchResultEntry("CN\u003dexternal.local,CN\u003dSystem,DC\u003dtestlab,DC\u003dlocal",
                                          new Dictionary <string, object>
                {
                    { "trustdirection", "3" },
                    { "trusttype", "2" },
                    { "trustattributes", 0x24.ToString() },
                    { "cn", "external.local" },
                    { "securityidentifier", Helpers.B64ToBytes("AQQAAAAAAAUVAAAA7JjftxhaHTnafGWh") }
                }, "", Label.Domain)
            };

            mockUtils.Setup(x => x.QueryLDAP(It.IsAny <string>(), It.IsAny <SearchScope>(), It.IsAny <string[]>(),
                                             It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <string>(), It.IsAny <bool>(),
                                             It.IsAny <bool>())).Returns(searchResults);
            var processor = new DomainTrustProcessor(mockUtils.Object);
            var test      = processor.EnumerateDomainTrusts("testlab.local").ToArray();

            Assert.Single(test);
            var trust = test.First();

            Assert.Equal(TrustDirection.Bidirectional, trust.TrustDirection);
            Assert.Equal("EXTERNAL.LOCAL", trust.TargetDomainName);
            Assert.Equal("S-1-5-21-3084884204-958224920-2707782874", trust.TargetDomainSid);
            Assert.True(trust.IsTransitive);
            Assert.Equal(TrustType.ParentChild, trust.TrustType);
            Assert.True(trust.SidFilteringEnabled);
        }
        public void DomainTrustProcessor_EnumerateDomainTrusts_SadPaths()
        {
            var mockUtils     = new Mock <MockLDAPUtils>();
            var searchResults = new[]
            {
                new MockSearchResultEntry("CN\u003dexternal.local,CN\u003dSystem,DC\u003dtestlab,DC\u003dlocal",
                                          new Dictionary <string, object>
                {
                    { "trustdirection", "3" },
                    { "trusttype", "2" },
                    { "trustattributes", 0x24.ToString() },
                    { "cn", "external.local" },
                    { "securityIdentifier", Array.Empty <byte>() }
                }, "", Label.Domain),
                new MockSearchResultEntry("CN\u003dexternal.local,CN\u003dSystem,DC\u003dtestlab,DC\u003dlocal",
                                          new Dictionary <string, object>
                {
                    { "trustdirection", "3" },
                    { "trusttype", "2" },
                    { "trustattributes", 0x24.ToString() },
                    { "cn", "external.local" },
                    { "securityIdentifier", Helpers.B64ToBytes("QQQAAAAAAAUVAAAA7JjftxhaHTnafGWh") }
                }, "", Label.Domain),
                new MockSearchResultEntry("CN\u003dexternal.local,CN\u003dSystem,DC\u003dtestlab,DC\u003dlocal",
                                          new Dictionary <string, object>
                {
                    { "trusttype", "2" },
                    { "trustattributes", 0x24.ToString() },
                    { "cn", "external.local" },
                    { "securityIdentifier", Helpers.B64ToBytes("AQQAAAAAAAUVAAAA7JjftxhaHTnafGWh") }
                }, "", Label.Domain),
                new MockSearchResultEntry("CN\u003dexternal.local,CN\u003dSystem,DC\u003dtestlab,DC\u003dlocal",
                                          new Dictionary <string, object>
                {
                    { "trustdirection", "3" },
                    { "trusttype", "2" },
                    { "cn", "external.local" },
                    { "securityIdentifier", Helpers.B64ToBytes("AQQAAAAAAAUVAAAA7JjftxhaHTnafGWh") }
                }, "", Label.Domain)
            };

            mockUtils.Setup(x => x.QueryLDAP(It.IsAny <string>(), It.IsAny <SearchScope>(), It.IsAny <string[]>(),
                                             It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <string>(), It.IsAny <bool>(),
                                             It.IsAny <bool>())).Returns(searchResults);
            var processor = new DomainTrustProcessor(mockUtils.Object);
            var test      = processor.EnumerateDomainTrusts("testlab.local");

            Assert.Empty(test);
        }
Example #3
0
 public ObjectProcessors(IContext context, ILogger log)
 {
     _context                  = context;
     _aclProcessor             = new ACLProcessor(context.LDAPUtils);
     _spnProcessor             = new SPNProcessors(context.LDAPUtils);
     _ldapPropertyProcessor    = new LDAPPropertyProcessor(context.LDAPUtils);
     _domainTrustProcessor     = new DomainTrustProcessor(context.LDAPUtils);
     _computerAvailability     = new ComputerAvailability(context.PortScanTimeout, skipPortScan: context.Flags.SkipPortScan, skipPasswordCheck: context.Flags.SkipPasswordAgeCheck);
     _computerSessionProcessor = new ComputerSessionProcessor(context.LDAPUtils);
     _groupProcessor           = new GroupProcessor(context.LDAPUtils);
     _containerProcessor       = new ContainerProcessor(context.LDAPUtils);
     _gpoLocalGroupProcessor   = new GPOLocalGroupProcessor(context.LDAPUtils);
     _methods                  = context.ResolvedCollectionMethods;
     _cancellationToken        = context.CancellationTokenSource.Token;
     _log = log;
 }
        public void DomainTrustProcessor_TrustAttributesToType()
        {
            var attrib = TrustAttributes.WithinForest;
            var test   = DomainTrustProcessor.TrustAttributesToType(attrib);

            Assert.Equal(TrustType.ParentChild, test);

            attrib = TrustAttributes.ForestTransitive;
            test   = DomainTrustProcessor.TrustAttributesToType(attrib);
            Assert.Equal(TrustType.Forest, test);

            attrib = TrustAttributes.TreatAsExternal;
            test   = DomainTrustProcessor.TrustAttributesToType(attrib);
            Assert.Equal(TrustType.External, test);

            attrib = TrustAttributes.CrossOrganization;
            test   = DomainTrustProcessor.TrustAttributesToType(attrib);
            Assert.Equal(TrustType.External, test);

            attrib = TrustAttributes.FilterSids;
            test   = DomainTrustProcessor.TrustAttributesToType(attrib);
            Assert.Equal(TrustType.Unknown, test);
        }