Exemplo n.º 1
0
        public void CreateConcreteQueryFilter_ShouldOnlyTransferSetQueryFiltersToTheConcreteQueryFilter()
        {
            const string descriptionFilter   = "Test";
            const bool   enabledFilter       = true;
            const string homeDirectoryFilter = "Test";

            using (var authenticablePrincipalQueryFilter = new AuthenticablePrincipalQueryFilter())
            {
                authenticablePrincipalQueryFilter.Description   = descriptionFilter;
                authenticablePrincipalQueryFilter.Enabled       = enabledFilter;
                authenticablePrincipalQueryFilter.HomeDirectory = homeDirectoryFilter;

                using (var concretePrincipalContext = CreateDefaultDomainPrincipalContext())
                {
                    using (var principalContext = (PrincipalContextWrapper)concretePrincipalContext)
                    {
                        var concreteQueryFilter = (IAuthenticablePrincipal)authenticablePrincipalQueryFilter.CreateConcreteQueryFilter(principalContext);

                        Assert.IsNull(concreteQueryFilter.AccountExpirationDate);
                        Assert.IsNull(concreteQueryFilter.AccountLockoutTime);
                        Assert.AreEqual(descriptionFilter, concreteQueryFilter.Description);
                        Assert.AreEqual(enabledFilter, concreteQueryFilter.Enabled);
                        Assert.AreEqual(homeDirectoryFilter, concreteQueryFilter.HomeDirectory);
                        Assert.IsNull(concreteQueryFilter.HomeDrive);
                        Assert.IsNull(concreteQueryFilter.Name);
                    }
                }
            }
        }
        public void Find_IfUsingAAuthenticablePrincipalQueryFilter_ShouldReturnAResultWithComputersAndUsers()
        {
            var principalRepository = new PrincipalRepository(CreateDefaultDomainPrincipalConnection());

            var structuralObjectClasses = new List <string>();
            var principalTypes          = new List <Type>();

            using (var queryFilter = new AuthenticablePrincipalQueryFilter())
            {
                using (var searchResult = principalRepository.Find(queryFilter))
                {
                    foreach (var item in searchResult)
                    {
                        if (!structuralObjectClasses.Contains(item.StructuralObjectClass, StringComparer.OrdinalIgnoreCase))
                        {
                            structuralObjectClasses.Add(item.StructuralObjectClass);
                        }

                        if (!principalTypes.Contains(item.GetType()))
                        {
                            principalTypes.Add(item.GetType());
                        }
                    }
                }
            }

            Assert.AreEqual(2, structuralObjectClasses.Count);

            Assert.IsTrue(structuralObjectClasses.Contains("computer"));
            Assert.IsTrue(structuralObjectClasses.Contains("user"));

            Assert.AreEqual(1, principalTypes.Count);

            Assert.IsTrue(principalTypes.Contains(typeof(AuthenticablePrincipalWrapper)));
        }
Exemplo n.º 3
0
        public void CreateConcreteQueryFilter_ShouldOnlyTransferSetQueryFiltersToTheConcreteQueryFilter()
        {
            var             accountExpirationDateFilter          = DateTime.Now;
            const MatchType accountExpirationDateFilterMatchType = MatchType.LessThan;
            const string    descriptionFilter   = "Test";
            const bool      enabledFilter       = true;
            const string    homeDirectoryFilter = "Test";

            using (ShimsContext.Create())
            {
                bool advancedSearchFilterAccountExpirationDateIsCalled = false;
                bool advancedSearchFilterAccountLockoutTimeIsCalled    = false;
                bool descriptionSetIsCalled   = false;
                bool enabledSetIsCalled       = false;
                bool homeDirectorySetIsCalled = false;
                bool homeDriveSetIsCalled     = false;
                bool nameSetIsCalled          = false;

                ShimAdvancedFilters.AllInstances.AccountExpirationDateDateTimeMatchType = delegate(AdvancedFilters advancedFilters, DateTime dateTime, MatchType matchType)
                {
                    if (dateTime == accountExpirationDateFilter && matchType == accountExpirationDateFilterMatchType)
                    {
                        advancedSearchFilterAccountExpirationDateIsCalled = true;
                    }
                };

                ShimAdvancedFilters.AllInstances.AccountLockoutTimeDateTimeMatchType = delegate { advancedSearchFilterAccountLockoutTimeIsCalled = true; };

                ShimPrincipal.AllInstances.DescriptionSetString = delegate(Principal principal, string description)
                {
                    if (description == descriptionFilter)
                    {
                        descriptionSetIsCalled = true;
                    }
                };

                ShimPrincipal.AllInstances.NameSetString = delegate { nameSetIsCalled = true; };

                ShimAuthenticablePrincipal.AllInstances.EnabledSetNullableOfBoolean = delegate(AuthenticablePrincipal authenticablePrincipal, bool?enabled)
                {
                    if (enabled == true)
                    {
                        enabledSetIsCalled = true;
                    }
                };

                ShimAuthenticablePrincipal.AllInstances.HomeDirectorySetString = delegate(AuthenticablePrincipal authenticablePrincipal, string homeDirectory)
                {
                    if (homeDirectory == homeDirectoryFilter)
                    {
                        homeDirectorySetIsCalled = true;
                    }
                };

                ShimAuthenticablePrincipal.AllInstances.HomeDriveSetString = delegate { homeDriveSetIsCalled = true; };

                using (var authenticablePrincipalQueryFilter = new AuthenticablePrincipalQueryFilter())
                {
                    authenticablePrincipalQueryFilter.AdvancedSearchFilter.AccountExpirationDate(accountExpirationDateFilter, accountExpirationDateFilterMatchType);
                    authenticablePrincipalQueryFilter.Description   = descriptionFilter;
                    authenticablePrincipalQueryFilter.Enabled       = enabledFilter;
                    authenticablePrincipalQueryFilter.HomeDirectory = homeDirectoryFilter;

                    using (var concretePrincipalContext = new PrincipalContext(ContextType.Machine))
                    {
                        using (var principalContext = (PrincipalContextWrapper)concretePrincipalContext)
                        {
                            Assert.IsFalse(advancedSearchFilterAccountExpirationDateIsCalled);
                            Assert.IsFalse(advancedSearchFilterAccountLockoutTimeIsCalled);
                            Assert.IsFalse(descriptionSetIsCalled);
                            Assert.IsFalse(enabledSetIsCalled);
                            Assert.IsFalse(homeDirectorySetIsCalled);
                            Assert.IsFalse(homeDriveSetIsCalled);
                            Assert.IsFalse(nameSetIsCalled);

                            authenticablePrincipalQueryFilter.CreateConcreteQueryFilter(principalContext);

                            Assert.IsTrue(advancedSearchFilterAccountExpirationDateIsCalled);
                            Assert.IsFalse(advancedSearchFilterAccountLockoutTimeIsCalled);
                            Assert.IsTrue(descriptionSetIsCalled);
                            Assert.IsTrue(enabledSetIsCalled);
                            Assert.IsTrue(homeDirectorySetIsCalled);
                            Assert.IsFalse(homeDriveSetIsCalled);
                            Assert.IsFalse(nameSetIsCalled);
                        }
                    }
                }
            }
        }