Exemple #1
0
        public void Ctor_SortKeys(bool critical)
        {
            SortKey[] sortKeys = new SortKey[] { new SortKey("name1", "rule1", true), new SortKey("name2", "rule2", false) };
            var       control  = new SortRequestControl(sortKeys);

            Assert.True(control.IsCritical);
            Assert.True(control.ServerSide);
            Assert.Equal("1.2.840.113556.1.4.473", control.Type);

            Assert.NotSame(sortKeys, control.SortKeys);
            for (int i = 0; i < sortKeys.Length; i++)
            {
                Assert.Equal(sortKeys[i].AttributeName, control.SortKeys[i].AttributeName);
                Assert.Equal(sortKeys[i].MatchingRule, control.SortKeys[i].MatchingRule);
                Assert.Equal(sortKeys[i].ReverseOrder, control.SortKeys[i].ReverseOrder);
            }

            control.IsCritical = critical;
            Assert.Equal(new byte[]
            {
                48, 132, 0, 0, 0, 43, 48, 132, 0, 0, 0, 17, 4, 5, 110,
                97, 109, 101, 49, 128, 5, 114, 117, 108, 101, 49, 129,
                1, 255, 48, 132, 0, 0, 0, 14, 4, 5, 110, 97, 109, 101,
                50, 128, 5, 114, 117, 108, 101, 50
            }, control.GetValue());
        }
        private int InsertUsersToTableByFilter(string tableCode, string filter)
        {
            // TODO ########### ########### ######### ############# ####### GetUsersByLdapFilter
            var result = 0;

            string[] userAttributes         = GetUserAttributes();
            string[] userRequiredAttributes = GetUserRequiredAttributes();
            var      request = new SearchRequest(_ldapUsersEntry, filter, SearchScope.Subtree, userAttributes);
            PageResultRequestControl paging = CreatePageResultRequestControl();

            request.Controls.Add(paging);
            SortRequestControl sortControl = CreateSortRequestControl(_ldapUserLoginAttribute);

            request.Controls.Add(sortControl);
            do
            {
                SearchResponse response;
                try {
                    response = _ldapConnection.SendRequest(request, RequestTimeout) as SearchResponse;
                } catch (Exception exception) {
                    LogLdapRequestError(exception, request);
                    throw;
                }
                if (response.ResultCode == ResultCode.Success)
                {
                    foreach (SearchResultEntry entry in response.Entries)
                    {
                        CheckEntryAttributes(entry, userRequiredAttributes);
                        LdapUser ldapUser   = CreateLdapUser(entry, string.Empty);
                        var      insertUser = new Insert(_userConnection).Into(tableCode)
                                              .Set("Id", Column.Parameter(ldapUser.Id))
                                              .Set("Name", Column.Parameter(ldapUser.Name))
                                              .Set("ModifiedOn", Column.Parameter(ldapUser.ModifiedOn))
                                              .Set("FullName", Column.Parameter(ldapUser.FullName))
                                              .Set("Company", Column.Parameter(ldapUser.Company))
                                              .Set("Email", Column.Parameter(ldapUser.Email))
                                              .Set("Phone", Column.Parameter(ldapUser.Phone))
                                              .Set("JobTitle", Column.Parameter(ldapUser.JobTitle))
                                              .Set("IsActive", Column.Parameter(ldapUser.IsActive))
                                              .Set("Dn", Column.Parameter(ldapUser.Dn));
                        try {
                            result += insertUser.Execute();
                        } catch (Exception e) {
                            _log.ErrorFormat("An error occurred while adding the record to the \"{0}\" table: {1}", e,
                                             tableCode, e.Message);
                            throw;
                        }
                    }
                }
                else
                {
                    _log.DebugFormat("Unable to obtain a list of users with the \"{0}\" filter. Result code: {1}.",
                                     filter, response.ResultCode);
                }
                var responseControl = (PageResultResponseControl)Array.Find(response.Controls,
                                                                            item => item is PageResultResponseControl);
                paging.Cookie = responseControl.Cookie;
            } while (paging.Cookie.Length != 0);
            return(result);
        }
Exemple #3
0
        /// <summary>
        /// Pages through LDAP results filtered by Linq spec.
        /// Caveats:
        /// (1) paging iterates through all prior pages - a limitation of LDAP,
        /// (2) sorting can only take one attribute, and that attribute must be
        /// indexed in LDAP, or the server-side sort will fail.
        /// </summary>
        /// <typeparam name="T">The mapped type.</typeparam>
        /// <param name="spec">The filter specification.</param>
        /// <param name="offsetPage">How many pages into the results. 0 = first page.</param>
        /// <param name="pageSize">Size of a page. Default = 10.</param>
        /// <param name="sortKeys">Sorting options.</param>
        /// <returns></returns>
        public virtual IEnumerable <T> PageWithPageControl <T>(
            Specification <T> spec,
            int offsetPage     = 0, int pageSize = 10,
            SortKey[] sortKeys = null
            )
            where T : IEntry, new()
        {
            ILinqSearchResponse <T> result = null;
            int curPage = 0;

            while (curPage++ <= offsetPage)
            {
                var search      = new LinqSearchRequest <T>(DistinguishedName, spec.AsExpression(), Scope);
                var pageControl = new PageResultRequestControl(pageSize);
                var soc         = new SearchOptionsControl(SearchOption.DomainScope);
                search.Controls.Add(pageControl);
                search.Controls.Add(soc);
                if (sortKeys != null)
                {
                    var sortControl = new SortRequestControl(sortKeys);
                    search.Controls.Add(sortControl);
                }
                result = Connection.SendRequest(search);
            }

            return(result?.Entries);
        }
Exemple #4
0
        public void Ctor_SortKeys(bool critical)
        {
            SortKey[] sortKeys = new SortKey[] { new SortKey("name1", "rule1", true), new SortKey("name2", "rule2", false) };
            var       control  = new SortRequestControl(sortKeys);

            Assert.True(control.IsCritical);
            Assert.True(control.ServerSide);
            Assert.Equal("1.2.840.113556.1.4.473", control.Type);

            Assert.NotSame(sortKeys, control.SortKeys);
            for (int i = 0; i < sortKeys.Length; i++)
            {
                Assert.Equal(sortKeys[i].AttributeName, control.SortKeys[i].AttributeName);
                Assert.Equal(sortKeys[i].MatchingRule, control.SortKeys[i].MatchingRule);
                Assert.Equal(sortKeys[i].ReverseOrder, control.SortKeys[i].ReverseOrder);
            }

            control.IsCritical = critical;
            var expected = (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ?
                           // WLDAP formatted ASN.1
                           new byte[] { 48, 132, 0, 0, 0, 43, 48, 132, 0, 0, 0, 17, 4, 5, 110,
                                        97, 109, 101, 49, 128, 5, 114, 117, 108, 101, 49, 129,
                                        1, 255, 48, 132, 0, 0, 0, 14, 4, 5, 110, 97, 109, 101,
                                        50, 128, 5, 114, 117, 108, 101, 50 } :
            // OpenLdap formatted ASN.1
            new byte[] { 48, 35, 48, 17, 4, 5, 110, 97, 109, 101, 49, 128, 5,
                         114, 117, 108, 101, 49, 129, 1, 255, 48, 14, 4, 5, 110, 97, 109,
                         101, 50, 128, 5, 114, 117, 108, 101, 50 };

            Assert.Equal(expected, control.GetValue());
        }
Exemple #5
0
        public void Ctor_SortKeys(bool critical)
        {
            SortKey[] sortKeys = new SortKey[] { new SortKey("name1", "rule1", true), new SortKey("name2", "rule2", false) };
            var       control  = new SortRequestControl(sortKeys);

            Assert.True(control.IsCritical);
            Assert.True(control.ServerSide);
            Assert.Equal("1.2.840.113556.1.4.473", control.Type);

            Assert.NotSame(sortKeys, control.SortKeys);
            for (int i = 0; i < sortKeys.Length; i++)
            {
                Assert.Equal(sortKeys[i].AttributeName, control.SortKeys[i].AttributeName);
                Assert.Equal(sortKeys[i].MatchingRule, control.SortKeys[i].MatchingRule);
                Assert.Equal(sortKeys[i].ReverseOrder, control.SortKeys[i].ReverseOrder);
            }

            control.IsCritical = critical;
            Assert.Equal(new byte[]
            {
                0x30, 0x23, 0x30, 0x11, 0x04, 0x05, 0x6E, 0x61, 0x6D, 0x65, 0x31, 0x80, 0x05, 0x72, 0x75,
                0x6C, 0x65, 0x31, 0x81, 0x01, 0xFF, 0x30, 0x0E, 0x04, 0x05, 0x6E, 0x61, 0x6D, 0x65, 0x32,
                0x80, 0x05, 0x72, 0x75, 0x6C, 0x65, 0x32
            }, control.GetValue());
        }
        public IEnumerable <SearchResultEntry> GetUsersAttributesByFilter(string filter, string[] attributes,
                                                                          string sortByAttr = null)
        {
            // TODO #CRM-16313 ####### ##### ########## ######
            _log.Debug("Obtaining user data from server.");
            var request = new SearchRequest(_ldapUsersEntry, filter, SearchScope.Subtree, attributes);
            PageResultRequestControl paging = CreatePageResultRequestControl();

            request.Controls.Add(paging);
            if (sortByAttr != null)
            {
                SortRequestControl sortControl = CreateSortRequestControl(sortByAttr);
                request.Controls.Add(sortControl);
            }
            var result = new List <SearchResultEntry>();

            do
            {
                var response = _ldapConnection.SendRequest(request) as SearchResponse;
                if (response.ResultCode != ResultCode.Success)
                {
                    throw new Exception(response.ErrorMessage);
                }
                for (int index = 0; index < response.Entries.Count; index++)
                {
                    result.Add(response.Entries[index]);
                }
                _log.Debug(string.Format("Received data on {0} users from server.", result.Count));
                var responseControl = (PageResultResponseControl)Array.Find(response.Controls,
                                                                            item => item is PageResultResponseControl);
                paging.Cookie = responseControl.Cookie;
            } while (paging.Cookie.Length != 0);
            return(result);
        }
        private SortRequestControl CreateSortRequestControl(string sortByAttr)
        {
            var sortControl = new SortRequestControl(sortByAttr, false);

            sortControl.IsCritical = false;
            return(sortControl);
        }
Exemple #8
0
        public void SortKeys_GetNull_ReturnsEmptyArray()
        {
            var       control = new SortRequestControl();
            FieldInfo field   = typeof(SortRequestControl).GetField("_keys", BindingFlags.NonPublic | BindingFlags.Instance);

            field.SetValue(control, null);
            Assert.Empty(control.SortKeys);
        }
Exemple #9
0
        private void AddSortControl()
        {
            ADPropertyDefinition adpropertyDefinition = (ADPropertyDefinition)this.sortBy.ColumnDefinition;
            SortRequestControl   sortRequestControl   = new SortRequestControl(adpropertyDefinition.LdapDisplayName, LcidMapper.OidFromLcid(this.lcid), this.sortBy.SortOrder == SortOrder.Descending);

            sortRequestControl.IsCritical = false;
            ExTraceGlobals.ADFindTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "ADGenericReader::AddSortControl - Sort on {0}, {1} using rule {2})", sortRequestControl.SortKeys[0].AttributeName, sortRequestControl.SortKeys[0].ReverseOrder ? "reverse order (descending)" : "regular  order (ascending)", sortRequestControl.SortKeys[0].MatchingRule);
            this.DirectoryControls.Add(sortRequestControl);
        }
Exemple #10
0
        protected void SortCookie()
        {
            if ((QueryInfo.PerformSort) && (QueryInfo.SortKeys.Count > 0))
            {
                SortControl = new SortRequestControl(QueryInfo.SortKeys.ToArray());

                Request.Controls.Add(SortControl);
            }
        }
        public int InsertGroupsToTable(string tableCode)
        {
            // TODO ########### ########### ########### ###### ##### ####### GetGroups
            _log.DebugFormat("Inserting group data into table {0}.", tableCode);
            var result = 0;

            string[] requiredGroupAttributes = GetRequiredGroupAttributes();
            var      request = new SearchRequest(_ldapGroupsEntry, _ldapGroupsFilter, SearchScope.Subtree,
                                                 requiredGroupAttributes);
            PageResultRequestControl paging = CreatePageResultRequestControl();

            request.Controls.Add(paging);
            SortRequestControl sortControl = CreateSortRequestControl(_ldapGroupNameAttribute);

            request.Controls.Add(sortControl);
            do
            {
                SearchResponse response;
                try {
                    response = _ldapConnection.SendRequest(request, RequestTimeout) as SearchResponse;
                } catch (Exception exception) {
                    LogLdapRequestError(exception, request);
                    throw;
                }
                if (response.ResultCode == ResultCode.Success)
                {
                    foreach (SearchResultEntry entry in response.Entries)
                    {
                        CheckEntryAttributes(entry, requiredGroupAttributes);
                        LdapGroup ldapGroup   = CreateLdapGroup(entry);
                        var       insertGroup = new Insert(_userConnection).Into(tableCode)
                                                .Set("Id", Column.Parameter(ldapGroup.Id))
                                                .Set("Name", Column.Parameter(ldapGroup.Name))
                                                .Set("Dn", Column.Parameter(ldapGroup.Dn))
                                                .Set("ModifiedOn", Column.Parameter(ldapGroup.ModifiedOn));
                        try {
                            result += insertGroup.Execute();
                        } catch (Exception e) {
                            _log.ErrorFormat("An error occurred while adding the record to the \"{0}\" table: {1}", e,
                                             tableCode, e.Message);
                            throw;
                        }
                    }
                }
                else
                {
                    _log.DebugFormat("Unable to obtain the list of folders. Result code: {0}. Error: {1}.",
                                     response.ResultCode, response.ErrorMessage ?? string.Empty);
                }
                var responseControl = (PageResultResponseControl)Array.Find(response.Controls,
                                                                            item => item is PageResultResponseControl);
                paging.Cookie = responseControl.Cookie;
            } while (paging.Cookie.Length != 0);
            _log.DebugFormat("{0} group records added to table {1}.", result, tableCode);
            return(result);
        }
Exemple #12
0
        public void Ctor_AttributeName_MatchingRule_ReverseOrder()
        {
            var     control = new SortRequestControl("AttributeName", "MatchingRule", true);
            SortKey sortKey = Assert.Single(control.SortKeys);

            Assert.Equal("AttributeName", sortKey.AttributeName);
            Assert.True(control.IsCritical);
            Assert.Equal("MatchingRule", sortKey.MatchingRule);
            Assert.True(sortKey.ReverseOrder);
            Assert.True(control.ServerSide);
            Assert.Equal("1.2.840.113556.1.4.473", control.Type);
        }
        public void Virtual_List_View_Test()
        {
            int skip = 0;
            int take = 1000;

            var results = _context.Query <IntegrationUserTest>(SearchScope.Subtree, IntegrationUserTest.NamingContext2)
                          .Where(x => Filter.StartsWith(x, "givenName", "T", true))
                          .OrderByDescending(x => x.Cn)
                          .Skip(skip)
                          .Take(1000)
                          .ToList();

            results.Should().Not.Be.Empty().And.Have.Count.EqualTo(1000);
            results.As <IVirtualListView <IntegrationUserTest> >().Should().Not.Be.Null();
            results.As <IVirtualListView <IntegrationUserTest> >().ContextId
            .Should().Not.Be.Null();
            results.As <IVirtualListView <IntegrationUserTest> >().TargetPosition
            .Should().Be.GreaterThanOrEqualTo(0);

            string[] attribs = { "cn", "sn", "givenName" };

            SearchRequest searchRequest = new SearchRequest
                                              (IntegrationUserTest.NamingContext2,
                                              "(givenName=T*)",
                                              SearchScope.Subtree,
                                              attribs);

            SortRequestControl sortRequest = new SortRequestControl("cn", true);

            searchRequest.Controls.Add(sortRequest);

            VlvRequestControl vlvRequest =
                new VlvRequestControl(0, take - 1, skip + 1);

            // add the vlv request to the searchRequest object
            searchRequest.Controls.Add(vlvRequest);

            SearchResponse searchResponse =
                (SearchResponse)_context.SendRequest(searchRequest);

            searchResponse.Should().Not.Be.Null();
            searchResponse.Entries.Count.Should().Be.GreaterThan(0);
            results.As <IVirtualListView <IntegrationUserTest> >().ContentCount
            .Should().Be.EqualTo(searchResponse.Controls[1].As <VlvResponseControl>().ContentCount);


            results.Select(x => x.DistinguishedName)
            .OrderBy(x => x)
            .Should()
            .Have.SameSequenceAs(
                searchResponse.Entries.Cast <SearchResultEntry>().Select(x => x.DistinguishedName).OrderBy(x => x));
        }
Exemple #14
0
        public void TestSortedSearch()
        {
            using (LdapConnection connection = GetConnection())
            {
                string ouName = "ProtocolsGroup10";
                string dn     = "ou=" + ouName;

                try
                {
                    for (int i = 0; i < 10; i++)
                    {
                        DeleteEntry(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
                    }
                    DeleteEntry(connection, dn);

                    AddOrganizationalUnit(connection, dn);
                    SearchResultEntry sre = SearchOrganizationalUnit(connection, LdapConfiguration.Configuration.SearchDn, ouName);
                    Assert.NotNull(sre);

                    for (int i = 0; i < 10; i++)
                    {
                        AddOrganizationalUnit(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
                    }

                    string        filter        = "(objectClass=*)";
                    SearchRequest searchRequest = new SearchRequest(
                        dn + "," + LdapConfiguration.Configuration.SearchDn,
                        filter,
                        SearchScope.Subtree,
                        null);

                    var sortRequestControl = new SortRequestControl("ou", true);
                    searchRequest.Controls.Add(sortRequestControl);

                    SearchResponse searchResponse = (SearchResponse)connection.SendRequest(searchRequest);
                    Assert.Equal(1, searchResponse.Controls.Length);
                    Assert.True(searchResponse.Controls[0] is SortResponseControl);
                    Assert.True(searchResponse.Entries.Count > 0);
                    Assert.Equal("ou=ProtocolsSubGroup10.9," + dn + "," + LdapConfiguration.Configuration.SearchDn, searchResponse.Entries[0].DistinguishedName);
                }
                finally
                {
                    for (int i = 0; i < 20; i++)
                    {
                        DeleteEntry(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
                    }
                    DeleteEntry(connection, dn);
                }
            }
        }
Exemple #15
0
        public void SortKeys_SetValid_GetReturnsExpected()
        {
            SortKey[] sortKeys = new SortKey[] { new SortKey("name1", "rule1", true), new SortKey("name2", "rule2", false) };
            var       control  = new SortRequestControl {
                SortKeys = sortKeys
            };

            Assert.NotSame(sortKeys, control.SortKeys);
            for (int i = 0; i < sortKeys.Length; i++)
            {
                Assert.Equal(sortKeys[i].AttributeName, control.SortKeys[i].AttributeName);
                Assert.Equal(sortKeys[i].MatchingRule, control.SortKeys[i].MatchingRule);
                Assert.Equal(sortKeys[i].ReverseOrder, control.SortKeys[i].ReverseOrder);
            }
        }
Exemple #16
0
        protected void VlvControls()
        {
            if (Attributes != null)
            {
                CurrentAttributesToDisplay.AddSafe <string, short>("sAMAccountName", 0);

                SortRequestControl sortcontrol = new SortRequestControl("sAMAccountName", false);

                Request.Controls.Add(sortcontrol);

                VlvControl = new VlvRequestControl(VlvStart, VlvRange, VlvRange + 1);

                Request.Controls.Add(VlvControl);
            }
        }
        public List <LdapGroup> GetGroups()
        {
            _log.Debug("Obtaining list of user groups from server.");
            var groupsList = new List <LdapGroup>();

            string[] requiredGroupAttributes = GetRequiredGroupAttributes();
            var      request = new SearchRequest(_ldapGroupsEntry, _ldapGroupsFilter, SearchScope.Subtree,
                                                 requiredGroupAttributes);
            PageResultRequestControl paging = CreatePageResultRequestControl();

            request.Controls.Add(paging);
            SortRequestControl sortControl = CreateSortRequestControl(_ldapGroupNameAttribute);

            request.Controls.Add(sortControl);
            do
            {
                SearchResponse response;
                try {
                    response = _ldapConnection.SendRequest(request, RequestTimeout) as SearchResponse;
                } catch (Exception exception) {
                    LogLdapRequestError(exception, request);
                    throw;
                }
                if (response.ResultCode == ResultCode.Success)
                {
                    foreach (SearchResultEntry entry in response.Entries)
                    {
                        CheckEntryAttributes(entry, requiredGroupAttributes);
                        LdapGroup ldapGroup = CreateLdapGroup(entry);
                        groupsList.Add(ldapGroup);
                    }
                }
                else
                {
                    _log.DebugFormat("Unable to obtain the list of folders. Result code: {0}. Error: {1}.",
                                     response.ResultCode, response.ErrorMessage ?? string.Empty);
                }
                var responseControl = (PageResultResponseControl)Array.Find(response.Controls,
                                                                            item => item is PageResultResponseControl);
                paging.Cookie = responseControl.Cookie;
            } while (paging.Cookie.Length != 0);
            _log.DebugFormat("{0} user group(s) received from server.", groupsList.Count);
            return(groupsList);
        }
        public virtual List <LdapUser> GetUsersByLdapFilter(string filter)
        {
            var usersList = new List <LdapUser>();

            string[] userAttributes         = GetUserAttributes();
            string[] userRequiredAttributes = GetUserRequiredAttributes();
            var      request = new SearchRequest(_ldapUsersEntry, filter, SearchScope.Subtree, userAttributes);
            PageResultRequestControl paging = CreatePageResultRequestControl();

            request.Controls.Add(paging);
            SortRequestControl sortControl = CreateSortRequestControl(_ldapUserLoginAttribute);

            request.Controls.Add(sortControl);
            do
            {
                SearchResponse response;
                try {
                    response = _ldapConnection.SendRequest(request, RequestTimeout) as SearchResponse;
                } catch (Exception exception) {
                    LogLdapRequestError(exception, request);
                    throw;
                }
                if (response.ResultCode == ResultCode.Success)
                {
                    foreach (SearchResultEntry entry in response.Entries)
                    {
                        CheckEntryAttributes(entry, userRequiredAttributes);
                        LdapUser ldapUser = CreateLdapUser(entry, null);
                        usersList.Add(ldapUser);
                    }
                }
                else
                {
                    _log.DebugFormat("Unable to obtain a list of users with the \"{0}\" filter. Result code: {1}. Error: {2}",
                                     filter, response.ResultCode, response.ErrorMessage ?? string.Empty);
                }
                var responseControl = (PageResultResponseControl)Array.Find(response.Controls,
                                                                            item => item is PageResultResponseControl);
                paging.Cookie = responseControl.Cookie;
            } while (paging.Cookie.Length != 0);
            return(usersList);
        }
Exemple #19
0
        /// <summary>
        /// Pages through LDAP results filtered by Linq spec.
        /// Caveats:
        /// (1) paging iterates through all prior pages - a limitation of LDAP,
        /// (2) sorting can only take one attribute, and that attribute must be
        /// indexed in LDAP, or the server-side sort will fail.
        /// </summary>
        /// <typeparam name="T">The mapped type.</typeparam>
        /// <param name="spec">The filter specification.</param>
        /// <param name="offsetPage">How many pages into the results. 0 = first page.</param>
        /// <param name="pageSize">Size of a page. Default = 10.</param>
        /// <param name="sortKeys">Sorting options.</param>
        /// <returns></returns>
        public virtual IEnumerable <T> PageWithVLV <T>(
            Specification <T> spec,
            int offsetPage     = 0, int pageSize = 10,
            SortKey[] sortKeys = null
            )
            where T : IEntry, new()
        {
            var search      = new LinqSearchRequest <T>(DistinguishedName, spec.AsExpression(), Scope);
            var pageControl = new VlvRequestControl(0, pageSize - 1, pageSize * offsetPage + 1);
            var soc         = new SearchOptionsControl(SearchOption.DomainScope);

            search.Controls.Add(pageControl);
            search.Controls.Add(soc);
            if (sortKeys != null)
            {
                var sortControl = new SortRequestControl(sortKeys);
                search.Controls.Add(sortControl);
            }
            return(Connection.SendRequest(search).Entries);
        }
Exemple #20
0
        public void SortKeys_SetNull_ThrowsArgumentNullException()
        {
            var control = new SortRequestControl(new SortKey[0]);

            Assert.Throws <ArgumentNullException>("value", () => control.SortKeys = null);
        }
Exemple #21
0
        public void SortKeys_SetNullInValue_ThrowsArgumentException()
        {
            var control = new SortRequestControl(new SortKey[0]);

            AssertExtensions.Throws <ArgumentException>("value", () => control.SortKeys = new SortKey[] { null });
        }