Exemplo n.º 1
0
 protected override void Because_of()
 {
     this.response = this.Sut.Search <Person>(
         this.uri, new Search()
     {
         SearchOptions = new SearchOptions()
         {
             MultiPage = true, ResultsPerPage = 1
         }
     });
 }
        public void InvalidResponseIsReturned()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();
            search.AddSearchCriteria(SearchCombinator.And)
                .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse<IList<SourceSystem>> { IsValid = false };
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
        }
Exemplo n.º 3
0
        public void ServiceInvokedOnFirstCall()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse <IList <SourceSystem> >();
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
            this.mdmService.Verify(x => x.Search(search), Times.AtMostOnce());
        }
        public void CacheUsedOnSecondCall()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();
            search.AddSearchCriteria(SearchCombinator.And)
                .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse<IList<SourceSystem>>();
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            this.cacheService.Search(search);
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
            this.mdmService.Verify(x => x.Search(search), Times.AtMostOnce());
        }
Exemplo n.º 5
0
        public void InvalidResponseIsReturned()
        {
            // Arrange
            var search = SearchBuilder.CreateSearch();

            search.AddSearchCriteria(SearchCombinator.And)
            .AddCriteria("A", SearchCondition.Equals, "34", false);

            this.searchResult = new PagedWebResponse <IList <SourceSystem> > {
                IsValid = false
            };
            this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult);

            // Act
            var result = this.cacheService.Search(search);

            // Assert
            Assert.AreEqual(this.searchResult, result);
        }
Exemplo n.º 6
0
        /// <copydocfrom cref="IMessageRequester.Search{T}" />
        public PagedWebResponse <IList <TContract> > Search <TContract>(string uri, Search message)
        {
            Logger.DebugFormat("Start: MessageRequester.Search {0}", uri);

            var result = new PagedWebResponse <IList <TContract> >
            {
                Message = new List <TContract>(0)
            };

            this.ResponseHandler(
                result,
                uri,
                client =>
            {
                client.AddHeader(CoreConstants.UserNameHeader, GetUserName());
                var content = new ObjectContent <Search>(message, new XmlMediaTypeFormatter());
                using (var response = client.Post(uri, content))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        Logger.Debug("MessageRequester.Search : Status OK - Reading the content from Response");
                        var settings = new XmlReaderSettings {
                            DtdProcessing = DtdProcessing.Ignore
                        };
                        Stream stream = null;
                        var readTask  = response.Content.ReadAsStreamAsync().ContinueWith(task =>
                        {
                            if (task.Exception != null)
                            {
                                Logger.DebugFormat("MessageRequester.Search : Exception occurred while reading content asynchronously - {0}", task.Exception.Message);
                                result.Code    = HttpStatusCode.InternalServerError;
                                result.IsValid = false;
                                result.Fault   = new Fault {
                                    Message = "Exception reading response stream : " + task.Exception.Message
                                };
                            }
                            else
                            {
                                stream = task.Result;
                            }
                            return(task);
                        });
                        readTask.Wait();
                        if (stream != null)
                        {
                            var reader = XmlReader.Create(stream, settings);

                            var feed = SyndicationFeed.Load(reader);
                            if (feed == null)
                            {
                                result.Code = HttpStatusCode.InternalServerError;
                            }
                            else
                            {
                                Logger.Debug("MessageRequester.Search : Populating Message with the response received");
                                result.Message = feed.Items.Select(syndicationItem => (XmlSyndicationContent)syndicationItem.Content).Select(syndic => syndic.ReadContent <TContract>()).ToList();
                                result.Code    = HttpStatusCode.OK;

                                var nextPageLink = feed.Links.FirstOrDefault(syndicationLink => syndicationLink.RelationshipType == "next-results");
                                result.NextPage  = nextPageLink == null ? null : nextPageLink.Uri;
                            }
                        }
                    }
                    else
                    {
                        result.Code = response.StatusCode;

                        if (response.StatusCode == HttpStatusCode.NotFound)
                        {
                            result.IsValid = false;
                            result.Message = new List <TContract>();
                            return;
                        }

                        result.IsValid = false;
                        result.Fault   = this.GetFault(response);
                    }
                }
            });

            Logger.DebugFormat("Finish: MessageRequester.Search {0}", uri);
            return(result);
        }