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); }
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); }
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); }
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"); }
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"); }
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"); }