public async Task It_can_get_resources_even_without_an_initial_search_call_if_you_know_what_you_are_doing()
        {
            // Arrange
            var it = IdmNetClientFactory.BuildClient();
            PagingContext pagingContext = new PagingContext
            {
                CurrentIndex = 0,
                Filter = "/ObjectTypeDescription",
                Selection = new[] { "ObjectID", "ObjectType", "DisplayName" },
                Sorting = new Sorting(),
                EnumerationDirection = "Forwards",
                Expires = "9999-12-31T23:59:59.9999999"
            };

            // Act
            var pagedResults = await it.GetPagedResultsAsync(5, pagingContext);

            // Assert
            Assert.AreEqual(5, pagedResults.Results.Count);
            Assert.IsTrue(pagedResults.Results[0].DisplayName.Length > 0);

            Assert.AreEqual(null, pagedResults.EndOfSequence);
            Assert.AreEqual(true, pagedResults.Items is XmlNode[]);
            Assert.AreEqual(5, ((XmlNode[])(pagedResults.Items)).Length);
        }
Exemple #2
0
 private static PagedSearchResults ConvertPullResponseToPagedSearchResults(PagingContext pagingContext,
     Message pullResponseMessage)
 {
     var pagedSearchResults =
         pullResponseMessage.GetBody<PagedSearchResults>(new SoapXmlSerializer(typeof(PagedSearchResults)));
     if (pagedSearchResults.Items != null)
     {
         var xmlNodes = (XmlNode[])pagedSearchResults.Items;
         var resources = xmlNodes.Select(BuildResource).ToArray();
         pagedSearchResults.Results.AddRange(resources);
         pagingContext.CurrentIndex += xmlNodes.Length;
     }
     return pagedSearchResults;
 }
Exemple #3
0
 private static Message BuildPullMessage(int pageSize, PagingContext pagingContext)
 {
     var pullMessage = Message.CreateMessage(
         MessageVersion.Default,
         "http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull",
         new Pull
         {
             PagingContext = pagingContext,
             MaxElements = pageSize,
             PullAdjustment =
                 new PullAdjustment { StartingIndex = pagingContext.CurrentIndex, EnumerationDirection = "Forwards" }
         },
         new SoapXmlSerializer(typeof(Pull)));
     return pullMessage;
 }
Exemple #4
0
        /// <summary>
        /// Pull resources from Identity Manager
        /// </summary>
        /// <param name="pageSize">Maximum number of records to return</param>
        /// <param name="pagingContext">Information regarding which records to pull</param>
        /// <returns>Paged search results</returns>
        /// <exception cref="SoapFaultException"></exception>
        public async Task<PagedSearchResults> GetPagedResultsAsync(int pageSize, PagingContext pagingContext)
        {
            var pullMessage = BuildPullMessage(pageSize, pagingContext);

            var pullResponseMessage = await _searchClient.PullAsync(pullMessage);

            if (pullResponseMessage.IsFault)
                throw new SoapFaultException("Pull Fault: " + pullResponseMessage);

            return ConvertPullResponseToPagedSearchResults(pagingContext, pullResponseMessage);
        }