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); }
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); }
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)); }
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)); }
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)); }
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)); }
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(); }