Пример #1
0
            public void SetUp()
            {
                const string verb            = "GET";
                const string applicationPath = "/";
                var          uri             = new Uri("http://example.com/resources/1?query=2");
                var          routeParameters = new Dictionary <string, string> {
                    { "route", "1" }
                };

                HttpContextBase.Request.HttpMethod.Returns(verb);
                HttpContextBase.Request.ApplicationPath.Returns(applicationPath);
                HttpContextBase.Request.Url.Returns(uri);

                var inputStream = Substitute.For <Stream>();

                inputStream.CanRead.Returns(false);
                HttpContextBase.Request.InputStream.Returns(inputStream);

                RequestRouter.FindRequestHandler(verb, applicationPath, uri).Returns(new RouteHandlerLookupResult(typeof(GetResource), routeParameters));

                RequestHandlerInvoker.Execute(
                    Arg.Any <GetResource>(),
                    verb,
                    routeParameters,
                    Arg.Is <IDictionary <string, string> >(x => x["query"] == "2"),
                    Arg.Is <IDictionary <string, object> >(x => (string)x["context"] == "3"),
                    Arg.Is <string>(x => x == null)).Returns(new HttpResponseMessage {
                    Content = new ObjectContent("test")
                });

                _piccoloContext = new PiccoloContext(HttpContextBase);
                _piccoloContext.Data.context = "3";

                Engine.ProcessRequest(_piccoloContext);
            }
Пример #2
0
            public void SetUp()
            {
                const string verb            = "POST";
                const string applicationPath = "/";
                var          uri             = new Uri("http://example.com/resources");
                var          routeParameters = new Dictionary <string, string>();

                HttpContextBase.Request.HttpMethod.Returns(verb);
                HttpContextBase.Request.ApplicationPath.Returns(applicationPath);
                HttpContextBase.Request.Url.Returns(uri);
                HttpContextBase.Request.InputStream.Returns(new MemoryStream(Encoding.UTF8.GetBytes("\"request_payload\"")));

                RequestRouter.FindRequestHandler(verb, applicationPath, uri).Returns(new RouteHandlerLookupResult(typeof(CreateResource), routeParameters));

                var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Created);

                httpResponseMessage.Headers.Location = new Uri("http://example.com/resources/1");

                RequestHandlerInvoker.Execute(
                    Arg.Any <CreateResource>(),
                    verb,
                    routeParameters,
                    Arg.Is <IDictionary <string, string> >(x => x.Count == 0),
                    Arg.Any <IDictionary <string, object> >(),
                    Arg.Is <string>(x => x == "request_payload")).Returns(httpResponseMessage);

                _piccoloContext = new PiccoloContext(HttpContextBase);

                Engine.ProcessRequest(_piccoloContext);
            }
Пример #3
0
            public void SetUp()
            {
                const string verb            = "DELETE";
                const string applicationPath = "/";
                var          uri             = new Uri("http://example.com/resources/1");
                var          routeParameters = new Dictionary <string, string> {
                    { "route", "1" }
                };

                HttpContextBase.Request.HttpMethod.Returns(verb);
                HttpContextBase.Request.ApplicationPath.Returns(applicationPath);
                HttpContextBase.Request.Url.Returns(uri);

                var inputStream = Substitute.For <Stream>();

                inputStream.CanRead.Returns(false);
                HttpContextBase.Request.InputStream.Returns(inputStream);

                RequestRouter.FindRequestHandler(verb, applicationPath, uri).Returns(new RouteHandlerLookupResult(typeof(DeleteResource), routeParameters));

                RequestHandlerInvoker.Execute(
                    Arg.Any <DeleteResource>(),
                    verb,
                    routeParameters,
                    Arg.Is <IDictionary <string, string> >(x => x.Count == 0),
                    Arg.Any <IDictionary <string, object> >(),
                    Arg.Is <string>(x => x == string.Empty)).Returns(new HttpResponseMessage(HttpStatusCode.NoContent));

                _piccoloContext = new PiccoloContext(HttpContextBase);

                Engine.ProcessRequest(_piccoloContext);
            }
Пример #4
0
            public void SetUp()
            {
                _piccoloContext = new PiccoloContext(HttpContextBase);

                EventDispatcher.RaiseRequestProcessingEvent(_piccoloContext).Returns(true);

                Engine.ProcessRequest(_piccoloContext);
            }
Пример #5
0
        public void RaiseRequestFaultedEvent(PiccoloContext context, Exception exception)
        {
            var args = new RequestFaultedEvent {
                Context = context, Exception = exception
            };

            RaiseEvent(_eventHandlers.RequestFaulted, args);
        }
Пример #6
0
        public void RaiseRequestProcessedEvent(PiccoloContext context)
        {
            var args = new RequestProcessedEvent {
                Context = context
            };

            RaiseEvent(_eventHandlers.RequestProcessed, args);
        }
Пример #7
0
        public void RaiseRequestProcessedEvent(PiccoloContext context, string payload)
        {
            var args = new RequestProcessedEvent {
                Context = context, Payload = payload
            };

            RaiseEvent(_eventHandlers.RequestProcessed, args);
        }
Пример #8
0
            protected given_event_dispatcher()
            {
                var httpContext = Substitute.For <HttpContextBase>();

                httpContext.Response.Returns(HttpResponse);

                PiccoloContext = new PiccoloContext(httpContext);
            }
Пример #9
0
            public void SetUp()
            {
                var eventHandlers = new EventHandlers();

                eventHandlers.RequestProcessing.Add(typeof(TestRequestProcessingEventHandlerWithInterrupt));
                eventHandlers.RequestProcessing.Add(typeof(BootstrapperTests.TestRequestProcessingEventHandler));

                var httpContext = new Mock <HttpContextBase>();

                _httpResponse = new Mock <HttpResponseBase>();
                httpContext.SetupGet(x => x.Response).Returns(_httpResponse.Object);
                var piccoloContext = new PiccoloContext(httpContext.Object);

                var eventDispatcher = new EventDispatcher(eventHandlers, new DefaultObjectFactory());

                eventDispatcher.RaiseRequestProcessingEvent(piccoloContext);
            }
Пример #10
0
            public void SetUp()
            {
                const string verb            = "POST";
                const string applicationPath = "/";
                var          uri             = new Uri("http://example.com/resources/1");

                HttpContextBase.Request.HttpMethod.Returns(verb);
                HttpContextBase.Request.ApplicationPath.Returns(applicationPath);
                HttpContextBase.Request.Url.Returns(uri);

                var inputStream = Substitute.For <Stream>();

                inputStream.CanRead.Returns(false);
                HttpContextBase.Request.InputStream.Returns(inputStream);

                RequestRouter.When(x => x.FindRequestHandler(verb, applicationPath, uri)).Do(_ => { throw new Exception(); });

                _piccoloContext = new PiccoloContext(HttpContextBase);

                Engine.ProcessRequest(_piccoloContext);
            }
Пример #11
0
        public bool RaiseRequestProcessingEvent(PiccoloContext context)
        {
            var args = new RequestProcessingEvent {
                Context = context
            };
            var stopRequestProcessing = false;

            foreach (var eventHandlerType in _eventHandlers.RequestProcessing)
            {
                var eventHandler = _objectFactory.CreateInstance <IHandle <RequestProcessingEvent> >(eventHandlerType);
                eventHandler.Handle(args);

                stopRequestProcessing = args.StopRequestProcessing;

                if (args.StopEventProcessing)
                {
                    break;
                }
            }

            return(stopRequestProcessing);
        }