コード例 #1
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);
            }
コード例 #2
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);
            }
コード例 #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 PiccoloHttpHandler(Assembly assembly, bool applyCustomConfiguration)
 {
     _configuration         = Bootstrapper.ApplyConfiguration(assembly, applyCustomConfiguration);
     _eventDispatcher       = new EventDispatcher(_configuration.EventHandlers, _configuration.ObjectFactory);
     _requestRouter         = new RequestRouter(_configuration.RequestHandlers);
     _requestHandlerInvoker = new RequestHandlerInvoker(_configuration.JsonDeserialiser, _configuration.ParameterBinders);
 }
コード例 #5
0
        public PiccoloHttpHandler(Assembly assembly)
        {
            Configuration = Bootstrapper.ApplyConfiguration(assembly, true);

            var eventDispatcher       = new EventDispatcher(Configuration.EventHandlers, Configuration.ObjectFactory);
            var requestRouter         = new RequestRouter(Configuration.RequestHandlers);
            var requestHandlerInvoker = new RequestHandlerInvoker(Configuration.Parsers);

            Engine = new PiccoloEngine(Configuration, eventDispatcher, requestRouter, requestHandlerInvoker);
        }
コード例 #6
0
        public void it_should_throw_exception()
        {
            var handlerInvoker = new RequestHandlerInvoker(null, new Dictionary <Type, IParameterBinder>());

            Should.Throw <InvalidOperationException>(() =>
            {
                var routeParameters = new Dictionary <string, string>();
                var queryParameters = new Dictionary <string, string> {
                    { "Param", "value" }
                };
                handlerInvoker.Execute(new Handler(), "GET", routeParameters, queryParameters, null);
            });
        }
コード例 #7
0
            protected given_request_handler_invoker()
            {
                var configuration = Bootstrapper.ApplyConfiguration(Assembly.GetExecutingAssembly(), false);

                Invoker = new RequestHandlerInvoker(configuration.JsonDeserialiser, configuration.ParameterBinders);
            }