public void Returns500ErrorsOnUnhandledExceptions() { var mockResponseStream = new MemoryStream(); var mockContent = new Mock <IContent>(); var mockRequest = new HttpRequest( "GET / HTTP/1.1\r\nHost: google.com\r\n\r\n".ToMemoryStream(), TcpSettings.Default, new HttpRequestBodyFactory()); var mockResponse = new HttpResponse( mockRequest, mockResponseStream, TcpSettings.Default, HttpSettings.Default); mockContent .Setup(inst => inst.ServeAsync(It.IsAny <IHttpRequest>(), It.IsAny <IHttpResponse>())) .Callback(() => throw new Exception("My Custom Message")); var session = new HttpSession( new MemoryStream(), TcpSettings.Default, mockContent.Object, new ContentSettings { DefaultCharsetForTextContents = "utf-8" }, new Mock <IHttpKeepAliveService>().Object, mockRequest, mockResponse ); // Test Assert.Throws <AggregateException>(delegate { Assert.True(session.ExecuteAsync().Wait(TimeSpan.FromSeconds(5))); }); // Check mockResponseStream.ReadResponseHeader(out HttpResponseHeader responseHeader); Assert.Equal(500, responseHeader.StatusCode); Assert.True(string.Equals( responseHeader["connection"], "close", StringComparison.InvariantCultureIgnoreCase )); }
public async Task Returns400ErrorOnMalformedReuest() { var mockResponseStream = new MemoryStream(); var mockContent = new Mock <IContent>(); var mockRequest = new HttpRequest( "GET / HTTP/1.1\r\n############\r\n\r\n".ToMemoryStream(), TcpSettings.Default, new HttpRequestBodyFactory()); var mockResponse = new HttpResponse( mockRequest, mockResponseStream, TcpSettings.Default, HttpSettings.Default); var session = new HttpSession( new MemoryStream(), TcpSettings.Default, mockContent.Object, new ContentSettings { DefaultCharsetForTextContents = "utf-8" }, new Mock <IHttpKeepAliveService>().Object, mockRequest, mockResponse); // Test await session.ExecuteAsync(); // Check mockResponseStream.ReadResponseHeader(out HttpResponseHeader responseHeader); Assert.Equal(400, responseHeader.StatusCode); Assert.True(string.Equals( responseHeader["connection"], "close", StringComparison.InvariantCultureIgnoreCase )); }