Example #1
0
            public void Sends500WhenRouteThrowsException()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                var exception = new Exception("Generic excpetion occured");

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    Func <IHttpContext, IHttpContext> func = ctx =>
                    {
                        throw exception;
                    };

                    server.Router.Register(func);

                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    server.TestRouteContext(context);

                    context.Response.Received().SendResponse(HttpStatusCode.InternalServerError, exception);
                }

                var logs = logger.Logs.FirstOrDefault(l => l.Level == LogLevel.Error);

                logs.ShouldNotBeNull();
                logs.Exception.ShouldBe(exception);
            }
Example #2
0
            public void ThrowsExceptionWhenRouteThrowsException()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                var exception = new Exception("Generic excpetion occured");

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    Func <IHttpContext, IHttpContext> func = ctx =>
                    {
                        throw exception;
                    };

                    server.Router.Register(func);
                    server.EnableThrowingExceptions = true;

                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    Should.Throw <Exception>(() => server.TestRouteContext(context));
                }

                var logs = logger.Logs.FirstOrDefault(l => l.Level == LogLevel.Error);

                logs.ShouldNotBeNull();
                logs.Exception.ShouldBe(exception);
            }
Example #3
0
            public void Sends501WhenRouteNotImplemented()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    Func <IHttpContext, IHttpContext> func = ctx =>
                    {
                        throw new NotImplementedException();
                    };

                    server.Router.Register(func);

                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    server.TestRouteContext(context);

                    context.Response.Received().SendResponse(HttpStatusCode.NotImplemented);
                }

                var logs = logger.Logs.FirstOrDefault(l => l.Level == LogLevel.Error);

                logs.ShouldNotBeNull();
                logs.Exception.GetType().ShouldBe(typeof(NotImplementedException));
            }
Example #4
0
            public void ThrowsExceptionWhenRouteNotImplemented()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    Func <IHttpContext, IHttpContext> func = ctx =>
                    {
                        throw new NotImplementedException();
                    };

                    server.Router.Register(func);
                    server.EnableThrowingExceptions = true;

                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    Should.Throw <NotImplementedException>(() => server.TestRouteContext(context));
                }

                var logs = logger.Logs.FirstOrDefault(l => l.Level == LogLevel.Error);

                logs.ShouldNotBeNull();
                logs.Exception.GetType().ShouldBe(typeof(NotImplementedException));
            }
Example #5
0
            public void Sends404WhenRouteNotFound()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    server.TestRouteContext(context);

                    context.Response.Received().SendResponse(HttpStatusCode.NotFound);
                }

                logger.Logs.Count.ShouldBe(1);
                logger.Logs[0].Exception.GetType().ShouldBe(typeof(RouteNotFoundException));
            }
Example #6
0
            public void ThrowsExceptionWhenRouteNotFound()
            {
                var logger = new InMemoryLogger();

                logger.Logs.Count.ShouldBe(0);

                using (var server = new RestServer(Substitute.For <IHttpListener>())
                {
                    Logger = logger
                })
                {
                    server.EnableThrowingExceptions = true;

                    var context = Mocks.HttpContext();
                    context.Server.Returns(server);

                    Should.Throw <RouteNotFoundException>(() => server.TestRouteContext(context));
                }

                logger.Logs.Count.ShouldBe(1);
                logger.Logs[0].Exception.GetType().ShouldBe(typeof(RouteNotFoundException));
            }
Example #7
0
            public void RoutesWithoutException()
            {
                const string pathinfo = "/route/success";
                var          invoked  = false;

                using (var server = new RestServer(Substitute.For <IHttpListener>()))
                {
                    var context = Mocks.HttpContext(new Dictionary <string, object> {
                        { "PathInfo", pathinfo }
                    });
                    Func <IHttpContext, IHttpContext> func = ctx =>
                    {
                        invoked = true;
                        context.WasRespondedTo.Returns(true);
                        return(ctx);
                    };

                    context.Server.Returns(server);
                    server.Router.Register(func, pathinfo);
                    server.TestRouteContext(context);
                }

                invoked.ShouldBeTrue();
            }