コード例 #1
0
        public void Execute_PagingDisabled_HasNoPageResultRequestControl()
        {
            //prepare
            var options    = new Mock <IQueryCommandOptions>();
            var connection = new MockLdapConnection();
            var xmlNode    = new XmlDocument();
            var mapping    = new Mock <IObjectMapping>();

            mapping.Setup(m => m.NamingContext)
            .Returns("nm");
            var command  = new AnyQueryCommand(options.Object, mapping.Object);
            var response = typeof(SearchResponse).Create <SearchResponse>(xmlNode);

            response.SetFieldValue("result", ResultCode.Success);
            connection.RequestResponses.Add(typeof(SearchRequest), response);

            //act
            var result = command.Execute(connection, SearchScope.Subtree, 1, false);

            //assert
            var request = connection.SentRequests[0];

            request.Controls.Count.Should().Be.EqualTo(0);
            request.As <SearchRequest>().Scope.Should().Be.EqualTo(SearchScope.Subtree);
            request.As <SearchRequest>().Attributes.Count.Should().Be.EqualTo(1);
            request.As <SearchRequest>().Attributes.Contains("cn").Should().Be.True();
            request.As <SearchRequest>().TypesOnly.Should().Be.True();

            result.Should().Be.EqualTo(false);
        }
コード例 #2
0
        public void Execute_OneEntryAndCustomNamingContext_ReturnsTrue()
        {
            //prepare
            var options    = new Mock <IQueryCommandOptions>();
            var connection = new MockLdapConnection();
            var xmlNode    = new XmlDocument();
            var mapping    = new Mock <IObjectMapping>();
            var command    = new AnyQueryCommand(options.Object, mapping.Object);
            var response   = typeof(SearchResponse).Create <SearchResponse>(xmlNode);

            response.SetFieldValue("result", ResultCode.Success);
            connection.RequestResponses.Add(typeof(SearchRequest), response);
            var collection =
                typeof(SearchResultEntryCollection).Create <SearchResultEntryCollection>();
            var entry = typeof(SearchResultEntry).Create <SearchResultEntry>("dn");

            collection.Call("Add", entry);
            response.Call("SetEntries", collection);

            //act
            var result = command.Execute(connection, SearchScope.Subtree, 1, true, null, "nc");

            //assert
            var request = connection.SentRequests[0];

            command.FieldValueEx <SearchRequest>("SearchRequest").DistinguishedName.Should().Be.EqualTo("nc");
            request.Controls[0].As <PageResultRequestControl>().PageSize.Should().Be.EqualTo(1);
            request.As <SearchRequest>().Scope.Should().Be.EqualTo(SearchScope.Subtree);
            request.As <SearchRequest>().Attributes.Count.Should().Be.EqualTo(1);
            request.As <SearchRequest>().Attributes.Contains("cn").Should().Be.True();
            request.As <SearchRequest>().TypesOnly.Should().Be.True();

            result.Should().Be.EqualTo(true);
        }
コード例 #3
0
        public void Execute_OneEntry_ReturnsTrue()
        {
            //prepare
            var options    = new Mock <IQueryCommandOptions>();
            var connection = new MockLdapConnection();
            var xmlNode    = new XmlDocument();
            var mapping    = new Mock <IObjectMapping>();

            mapping.Setup(m => m.NamingContext)
            .Returns("nm");
            var command = new AnyQueryCommand(options.Object, mapping.Object);

            object[] parameters;
#if (!NET35 && !NET40 && !NET45)
            parameters = new object[] { "", new System.DirectoryServices.Protocols.DirectoryControl[0], System.DirectoryServices.Protocols.ResultCode.Success, "", new System.Uri[0] };
#else
            parameters = new object[] { xmlNode };
#endif
            var response = typeof(SearchResponse).Create <SearchResponse>(parameters);
#if (NET35 || NET40 || NET45)
            response.SetFieldValue("result", ResultCode.Success);
#endif
            connection.RequestResponses.Add(typeof(SearchRequest), response);
            var collection =
                typeof(SearchResultEntryCollection).Create <SearchResultEntryCollection>();
            var entry = typeof(SearchResultEntry).Create <SearchResultEntry>("dn");
            collection.Call("Add", entry);
#if (!NET35 && !NET40 && !NET45)
            response.Call("set_Entries", collection);
#else
            response.Call("SetEntries", collection);
#endif

            //act
            var result = command.Execute(connection, SearchScope.Subtree, 1, true);

            //assert
            var request = connection.SentRequests[0];
            request.Controls[0].As <PageResultRequestControl>().PageSize.Should().Be.EqualTo(1);
            request.As <SearchRequest>().Scope.Should().Be.EqualTo(SearchScope.Subtree);
            request.As <SearchRequest>().Attributes.Count.Should().Be.EqualTo(1);
            request.As <SearchRequest>().Attributes.Contains("cn").Should().Be.True();
            request.As <SearchRequest>().TypesOnly.Should().Be.True();

            result.Should().Be.EqualTo(true);
        }
コード例 #4
0
        public void HandlePagedRequest_NullPagedRequest_CreatesPagedRequestFromOptions()
        {
            //prepare
            _options.Setup(o => o.Filter)
            .Returns("filter");
            _options.Setup(o => o.PagingOptions)
            .Returns(new PagingOptions(1, null));
            _options.Setup(o => o.GetEnumerator(It.IsAny <SearchResultEntryCollection>()))
            .Returns(new SearchResponseEnumerable <object>(new Mock <IResultTransformer>().Object,
                                                           new List <SearchResultEntry>()));
            _options.Setup(o => o.GetEnumeratorReturnType())
            .Returns(typeof(object));
            var xmlNode = new XmlDocument();

            object[] parameters;
#if (!NET35 && !NET40 && !NET45)
            parameters = new object[] { "", new System.DirectoryServices.Protocols.DirectoryControl[0], System.DirectoryServices.Protocols.ResultCode.Success, "", new System.Uri[0] };
#else
            parameters = new object[] { xmlNode };
#endif
            var response = typeof(SearchResponse).Create <SearchResponse>(parameters);
#if (NET35 || NET40 || NET45)
            response.SetFieldValue("result", ResultCode.Success);
#endif
            var connection = new MockLdapConnection(new Dictionary <Type, DirectoryResponse> {
                { typeof(SearchRequest), response }
            });
            var command = new MockStandardQueryCommand(_options.Object, _mapping.Object)
                          .DisableStandardRequest();
            command.ResponseControlsToSearch = new DirectoryControl[]
            {
                DirectoryControlFactory.CreatePageResponse(new byte[] { 1, 2 }, new byte[0])
            };

            //act
            var obj = command.HandlePagedRequest(connection, null, null);

            //assert
            command.GetRequest().Controls.OfType <PageResultRequestControl>().Should().Have.Count.EqualTo(1);
            obj.Should().Be.InstanceOf <LdapPage <object> >();
            obj.As <LdapPage <object> >().PageSize.Should().Be.EqualTo(1);
            obj.As <LdapPage <object> >().NextPage.Should().Have.SameSequenceAs(new byte[] { 1, 2 });
            obj.As <LdapPage <object> >().Filter.Should().Be.EqualTo("filter");
        }
コード例 #5
0
        public void Execute_ReturnsRequest()
        {
            //prepare
            var sortingOptions = new SortingOptions();

            sortingOptions.AddSort("att1", true);
            var options = new Mock <IQueryCommandOptions>();

            options.SetupGet(o => o.Filter)
            .Returns("x=1");
            options.SetupGet(o => o.AttributesToLoad)
            .Returns(new Dictionary <string, string> {
                { "Property1", "prop1" }, { "Property2", "prop2" }
            });
            options.SetupGet(o => o.SortingOptions)
            .Returns(sortingOptions);
            options.SetupGet(o => o.Controls)
            .Returns(new DirectoryControl[] { new AsqRequestControl("att") });
            options.SetupGet(o => o.TakeSize)
            .Returns(2);
            var connection = new MockLdapConnection();
            var mapping    = new Mock <IObjectMapping>();

            mapping.Setup(m => m.NamingContext)
            .Returns("nm");
            var command = new GetRequestCommand(options.Object, mapping.Object);

            //act
            var result = command.Execute(connection, SearchScope.Subtree, 1, true).As <SearchRequest>();

            //assert
            result.Filter.Should().Be.EqualTo("x=1");
            result.Controls[0].As <AsqRequestControl>().AttributeName.Should().Be.EqualTo("att");
            result.Controls[1].As <SortRequestControl>().SortKeys[0].AttributeName.Should().Be.EqualTo("att1");
            result.Controls[1].As <SortRequestControl>().SortKeys[0].ReverseOrder.Should().Be.True();
            result.Controls[2].As <PageResultRequestControl>().PageSize.Should().Be.EqualTo(2);
            result.Attributes[0].Should().Be.EqualTo("prop1");
            result.Attributes[1].Should().Be.EqualTo("prop2");
            result.Scope.Should().Be.EqualTo(SearchScope.Subtree);

            result.DistinguishedName.Should().Be.EqualTo("nm");
        }
コード例 #6
0
        public void HandlePagedRequest_ExistingPagedRequest_IgnoresPagedRequestFromOptions()
        {
            //prepare
            _options.Setup(o => o.Filter)
            .Returns("filter");
            _options.Setup(o => o.GetEnumerator(It.IsAny <SearchResultEntryCollection>()))
            .Returns(new SearchResponseEnumerable <object>(new Mock <IResultTransformer>().Object,
                                                           new List <SearchResultEntry>()));
            _options.Setup(o => o.GetEnumeratorReturnType())
            .Returns(typeof(object));
            var xmlNode  = new XmlDocument();
            var response = typeof(SearchResponse).Create <SearchResponse>(xmlNode);

            response.SetFieldValue("result", ResultCode.Success);
            var connection = new MockLdapConnection(new Dictionary <Type, DirectoryResponse> {
                { typeof(SearchRequest), response }
            });
            var command = new MockStandardQueryCommand(_options.Object, _mapping.Object)
                          .DisableStandardRequest();

            command.ResponseControlsToSearch = new DirectoryControl[]
            {
                DirectoryControlFactory.CreatePageResponse(new byte[] { 1, 2 }, new byte[0])
            };

            //act
            var obj = command.HandlePagedRequest(connection, new PageResultRequestControl(2), null);

            //assert
            command.GetRequest().Controls.OfType <PageResultRequestControl>()
            .Should().Have.Count.EqualTo(0);
            obj.Should().Be.InstanceOf <LdapPage <object> >();
            obj.As <LdapPage <object> >().PageSize.Should().Be.EqualTo(2);
            obj.As <LdapPage <object> >().NextPage.Should().Have.SameSequenceAs(new byte[] { 1, 2 });
            obj.As <LdapPage <object> >().Filter.Should().Be.EqualTo("filter");
        }