private static Mock<HttpContextBase> MockHttpContext(string verb, string urlPath, Stream inputStream, Stream outputStream)
{
var request = new Mock<HttpRequestBase>();
request.Setup(r => r.ContentLength).Returns((int)inputStream.Length);
request.Setup(r => r.CurrentExecutionFilePath).Returns(@"C:\BlueCollar\collar.ashx");
request.Setup(r => r.Headers).Returns(new NameValueCollection());
request.Setup(r => r.HttpMethod).Returns(verb);
request.Setup(r => r.InputStream).Returns(inputStream);
request.Setup(r => r.PhysicalApplicationPath).Returns(@"C:\BlueCollar");
request.Setup(r => r.RawUrl).Returns("/collar.ashx" + urlPath);
request.Setup(r => r.Url).Returns(new Uri("http://localhost/bluecollar/collar.ashx" + urlPath));
var cachePolicy = new Mock<HttpCachePolicyBase>();
var response = new Mock<HttpResponseBase>();
response.SetupAllProperties();
response.Setup(r => r.Cache).Returns(cachePolicy.Object);
response.Setup(r => r.Headers).Returns(new NameValueCollection());
response.Setup(r => r.OutputStream).Returns(outputStream);
var context = new Mock<HttpContextBase>();
context.Setup(c => c.Cache).Returns(HttpRuntime.Cache);
context.Setup(c => c.Request).Returns(request.Object);
context.Setup(c => c.Response).Returns(response.Object);
return context;
}