private IHttpResponseModel MockSend(HttpRequestModel request) { if (MockResponseQueue.Count > 0) { var sentAtUtc = DateTimeOffset.UtcNow - TimeSpan.FromSeconds(-1); var mockResponse = MockResponseQueue.Dequeue(); mockResponse .Setup(mr => mr.SentAtUtc) .Returns(sentAtUtc); mockResponse .Setup(mr => mr.CompletedAtUtc) .Returns(DateTimeOffset.UtcNow); return(mockResponse.Object); } foreach (var lookupResponse in MockResponseLookup) { if (lookupResponse.MatchesRequest(request)) { return(lookupResponse.Process(request)); } } throw new NotImplementedException("There are no mocked responses queued or added to pattern match"); }
public void Request_Is_Retried() { // arrange var userWriter = new Mock<IUserWriter>(); var requestQueue = new MockRequestQueue(); var responseQueue = new MockResponseQueue(); var controller = new CrawlerController(userWriter.Object, requestQueue, responseQueue, new RecentFriendRegistry()); var retryRequest = new GetFriendsRequest("test"); var errorResponse = new ErrorResponse(retryRequest, "fail whale"); // act controller.ProcessResponse(errorResponse); // assert Assert.That(requestQueue.QueuedMessages, Has.Count(1)); Assert.That(requestQueue.QueuedMessages.Single(), Is.SameAs(retryRequest)); }
public void ErrorResponse_Is_Queued() { // arrange var requestQueue = new MockRequestQueue(); var responseQueue = new MockResponseQueue(); var statusService = new Mock<IStatusService>(); statusService.Setup(ss => ss.GetFriendsOf("test")).Throws(new XmlException("Twitter is full of FAIL!")); var crawler = new TwitterCrawler(requestQueue, responseQueue, statusService.Object); // act var friendRequest = new GetFriendsRequest("test"); crawler.ProcessRequest(friendRequest); // assert Assert.That(responseQueue.QueuedMessages, Has.Count(1)); Assert.That(responseQueue.QueuedMessages.Single(), Is.TypeOf(typeof(ErrorResponse))); var response = (ErrorResponse)responseQueue.QueuedMessages.Single(); Assert.That(response.Request, Is.SameAs(friendRequest)); }