public void Should_output_the_responses_cookies() { // Given var cookie1 = A.Fake <INancyCookie>(); var cookie2 = A.Fake <INancyCookie>(); var r = new Response(); r.WithCookie(cookie1).WithCookie(cookie2); var nancyContext = new NancyContext { Response = r }; A.CallTo(() => cookie1.ToString()).Returns("the first cookie"); A.CallTo(() => cookie2.ToString()).Returns("the second cookie"); SetupRequestProcess(nancyContext); // When var task = this.handler.ProcessRequest(context, ar => { }, new object()); NancyHandler.EndProcessRequest(task); // Then A.CallTo(() => this.response.AddHeader("Set-Cookie", "the first cookie")).MustHaveHappened(); A.CallTo(() => this.response.AddHeader("Set-Cookie", "the second cookie")).MustHaveHappened(); }
public async Task Invoke(HttpContext context, ITenantNancyBootstrapperAccessor <TTenant> tenantNancyBootstrapper, ITenantContainerAccessor <TTenant> tenantContainerAccessor, ITenantRequestContainerAccessor <TTenant> tenantRequestContainerAccessor) { // get the nancy bootstrapper, // adjust its request container - give it the current request container to return. // get the nancy engine // var tenantContainer = await tenantContainerAccessor.TenantContainer.Value; var tenantRequestContainer = await tenantRequestContainerAccessor.TenantRequestContainer.Value; var nancyBootstrapper = await tenantNancyBootstrapper.Bootstrapper.Value; if (tenantRequestContainer == null || nancyBootstrapper == null) { await _next.Invoke(context); return; } // swap out nancy request services. ITenantContainerAdaptor old = nancyBootstrapper.RequestContainerAdaptor; try { nancyBootstrapper.RequestContainerAdaptor = tenantRequestContainer.RequestContainer; var engine = nancyBootstrapper.GetEngine(); var nancyHandler = new NancyHandler(engine); await nancyHandler.ProcessRequest(context, NancyPassThroughOptions.PassThroughWhenStatusCodesAre(global::Nancy.HttpStatusCode.NotFound), _next); } finally { nancyBootstrapper.RequestContainerAdaptor = old; } }
public void Should_invoke_engine_with_requested_method() { // Given var nancyContext = new NancyContext() { Response = new Response() }; A.CallTo(() => this.request.HttpMethod).Returns("POST"); A.CallTo(() => this.engine.HandleRequest( A <Request> .Ignored, A <Func <NancyContext, NancyContext> > .Ignored, A <CancellationToken> .Ignored)) .Returns(TaskHelpers.GetCompletedTask(nancyContext)); // When var task = this.handler.ProcessRequest(this.context, ar => { }, new object()); NancyHandler.EndProcessRequest(task); // Then A.CallTo(() => this.engine.HandleRequest(A <Request> .That .Matches(x => x.Method.Equals("POST")), A <Func <NancyContext, NancyContext> > .Ignored, A <CancellationToken> .Ignored)) .MustHaveHappened(); }
public void Should_dispose_the_context() { // Given var disposable = A.Fake <IDisposable>(); var nancyContext = new NancyContext() { Response = new Response() }; nancyContext.Items.Add("Disposable", disposable); A.CallTo(() => this.request.HttpMethod).Returns("GET"); A.CallTo(() => this.engine.HandleRequest( A <Request> .Ignored, A <Func <NancyContext, NancyContext> > .Ignored, A <CancellationToken> .Ignored)) .Returns(TaskHelpers.GetCompletedTask(nancyContext)); // When var task = this.handler.ProcessRequest(this.context, ar => { }, new object()); NancyHandler.EndProcessRequest(task); // Then A.CallTo(() => disposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void Should_dispose_the_context() { // Given var disposable = A.Fake <IDisposable>(); var nancyContext = new NancyContext() { Response = new Response() }; nancyContext.Items.Add("Disposable", disposable); A.CallTo(() => this.request.HttpMethod).Returns("GET"); A.CallTo(() => this.engine.HandleRequest( A <Request> .Ignored, A <Action <NancyContext> > .Ignored, A <Action <Exception> > .Ignored)) .Invokes(f => ((Action <NancyContext>)f.Arguments[1]).Invoke(nancyContext)); // When var task = this.handler.ProcessRequest(this.context, ar => { }, new object()); NancyHandler.EndProcessRequest(task); // Then A.CallTo(() => disposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void Should_invoke_engine_with_requested_method() { // Given var nancyContext = new NancyContext() { Response = new Response() }; A.CallTo(() => this.request.HttpMethod).Returns("POST"); A.CallTo(() => this.engine.HandleRequest( A <Request> .Ignored, A <Action <NancyContext> > .Ignored, A <Action <Exception> > .Ignored)) .Invokes(f => ((Action <NancyContext>)f.Arguments[1]).Invoke(nancyContext)); // When var task = this.handler.ProcessRequest(this.context, ar => { }, new object()); NancyHandler.EndProcessRequest(task); // Then A.CallTo(() => this.engine.HandleRequest(A <Request> .That .Matches(x => x.Method.Equals("POST")), A <Action <NancyContext> > .Ignored, A <Action <Exception> > .Ignored)) .MustHaveHappened(); }
public NancyHandlerFixture() { this.context = A.Fake<HttpContextBase>(); this.request = A.Fake<HttpRequestBase>(); this.response = A.Fake<HttpResponseBase>(); this.engine = A.Fake<INancyEngine>(); this.handler = new NancyHandler(engine); this.formData = new NameValueCollection(); A.CallTo(() => this.request.Form).ReturnsLazily(() => this.formData); A.CallTo(() => this.request.Url).Returns(new Uri("http://www.foo.com")); A.CallTo(() => this.request.InputStream).Returns(new MemoryStream()); A.CallTo(() => this.request.Headers).Returns(new NameValueCollection()); A.CallTo(() => this.request.AppRelativeCurrentExecutionFilePath).Returns("~/foo"); A.CallTo(() => this.context.Request).Returns(this.request); A.CallTo(() => this.context.Response).Returns(this.response); A.CallTo(() => this.response.OutputStream).Returns(new MemoryStream()); }
public NancyHandlerFixture() { this.context = A.Fake <HttpContextBase>(); this.request = A.Fake <HttpRequestBase>(); this.response = A.Fake <HttpResponseBase>(); this.engine = A.Fake <INancyEngine>(); this.handler = new NancyHandler(engine); this.formData = new NameValueCollection(); A.CallTo(() => this.request.Form).ReturnsLazily(() => this.formData); A.CallTo(() => this.request.Url).Returns(new Uri("http://www.foo.com")); A.CallTo(() => this.request.InputStream).Returns(new MemoryStream()); A.CallTo(() => this.request.Headers).Returns(new NameValueCollection()); A.CallTo(() => this.request.AppRelativeCurrentExecutionFilePath).Returns("~/foo"); A.CallTo(() => this.context.Request).Returns(this.request); A.CallTo(() => this.context.Response).Returns(this.response); A.CallTo(() => this.response.OutputStream).Returns(new MemoryStream()); }