예제 #1
0
        public void Returns_mock_not_found_when_handler_constraints_cannot_be_verified()
        {
            var excludePhrase = "OhMyDaysssss";

            var handlerWithConstraints = new RequestHandler("", null);

            handlerWithConstraints.WithUrlConstraint(uri => uri.Contains(excludePhrase) == false);

            var matchingRule = MockRepository.GenerateMock <IMatchingRule>();

            matchingRule.Stub(m => m.IsEndpointMatch(Arg <IRequestHandler> .Is.Anything, Arg <HttpRequestHead> .Is.Anything)).Return(true);

            ConcurrentDictionary <Guid, RequestHandlerList> lst = new ConcurrentDictionary <Guid, RequestHandlerList>();
            RequestHandlerList rList = new RequestHandlerList();

            rList.Add(handlerWithConstraints);
            lst.GetOrAdd(Guid.Empty, rList);
            var p = new RequestProcessor(matchingRule, lst);

            var response = MockRepository.GenerateMock <IHttpResponseDelegate>();

            p.OnRequest(new HttpRequestHead {
                Uri = "http://blah.com/cheese/" + excludePhrase
            }, null, response);

            var notFoundResponse = (HttpResponseHead)response.GetArgumentsForCallsMadeOn(
                r => r.OnResponse(Arg <HttpResponseHead> .Is.Anything, Arg <IDataProducer> .Is.Anything))[0][0];

            Assert.That(notFoundResponse.Status == "404 NotFound");
        }
예제 #2
0
        public void Add(RequestHandler requestHandler)
        {
            Guid currentRequestId = Guid.Empty;

            if (requestHandler.RequestHeaders.ContainsKey(Constants.MockSessionHeaderKey))
            {
                currentRequestId = new Guid(requestHandler.RequestHeaders[Constants.MockSessionHeaderKey]);
            }
            else if (requestHandler.RequestHeaders.ContainsKey(Constants.CookieHeaderKey))
            {
                var mockSessionId = requestHandler.RequestHeaders[Constants.CookieHeaderKey].Split("=".ToCharArray());
                currentRequestId = new Guid(mockSessionId[1]);
            }
            RequestHandlerList lst;

            if (_handlers.TryGetValue(currentRequestId, out lst))
            {
                lock (lst)
                {
                    lst.Add(requestHandler);
                    _handlers.TryUpdate(currentRequestId, lst, _handlers[currentRequestId]);
                }
            }
            else
            {
                lst = new RequestHandlerList {
                    requestHandler
                };
                _handlers.TryAdd(currentRequestId, lst);
            }
        }
예제 #3
0
 public RequestProcessor(IMatchingRule matchingRule, RequestHandlerList requestHandlers)
 {
     _handlers       = requestHandlers;
     _requestMatcher = new RequestMatcher(matchingRule);
 }
예제 #4
0
 public void ClearHandlers()
 {
     _handlers = new RequestHandlerList();
 }
예제 #5
0
 public RequestProcessor(IMatchingRule matchingRule, RequestHandlerList requestHandlers)
 {
     _matchingRule = matchingRule;
     _handlers = requestHandlers;
 }
예제 #6
0
 public RequestProcessor(IMatchingRule matchingRule, RequestHandlerList requestHandlers)
 {
     _handlers = requestHandlers;
     _requestMatcher = new RequestMatcher(matchingRule);
 }