public void When_create_plain_http_context_And_http_context_not_empty_Then_throws_invalid_operation_exception() { //Arrange var plainHttpContext = new PlainHttpContext(); var defaultHttpContext = new DefaultHttpContext(); defaultHttpContext.Features.Set(plainHttpContext); //Act //Assert Assert.Throws <InvalidOperationException>(() => HttpContextExtensions.CreatePlainHttpContext(defaultHttpContext)); }
public void When_get_plain_http_context_And_http_context_not_empty_Then_returns_plain_http_context() { //Arrange var plainHttpContext = new PlainHttpContext(); var defaultHttpContext = new DefaultHttpContext(); defaultHttpContext.Features.Set(plainHttpContext); //Act var result = HttpContextExtensions.GetPlainHttpContext(defaultHttpContext); //Assert Assert.That(result, Is.Not.Null); }
public async Task InvokeAsync(HttpContext context) { this.httpContext = context; await this.next(this.httpContext); this.plainHttpContext = this.httpContext.GetPlainHttpContext(); this.SetStatusCode(); this.SetHeaders(); await this.CopyContent(); this.LogResult(); }
/// <summary> /// Extension method for creating the <see cref="PlainHttpContext"/> for the current HTTP context. /// </summary> /// <param name="context">The <see cref="HttpContext"/> context.</param> /// <returns>The <see cref="PlainHttpContext"/>.</returns> public static PlainHttpContext CreatePlainHttpContext(this HttpContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var plainHttpContext = context.Features.Get <PlainHttpContext>(); if (plainHttpContext != null) { throw new InvalidOperationException("Plain HTTP context was already create for given HTTP context"); } plainHttpContext = new PlainHttpContext(); context.Features.Set(plainHttpContext); return(plainHttpContext); }