[TestMethod]
public async Task Invoke_AddResopnseHeaders_ResponseHeaderExists() {
// ARRANGE
const string expectedHeaderValue = "SomeValue";
var respFeature = new MockResponseFeature();
var ctx = new DefaultHttpContext();
ctx.Features.Set<IHttpResponseFeature>(feature);
RequestDelegate next = async (ctx) => {
await respFeature.InvokeCallBack();
};
var alterResponseMiddleware = new AlterResponseMiddleware(next);
// ACT
await alterResponseMiddleware.Invoke(context);
// ASSERT
var response = ctx.Response;
Assert.True(response.Headers.TryGetValues("X-Your-Header", out var expectedHeader));
Assert.Equals(expectedHeaderValue, expectedHeader.FirstOrDefault()
}
Created
April 19, 2020 06:01
-
-
Save Wind010/0988df1de23c288deb387ab4ba9bc05a to your computer and use it in GitHub Desktop.
A mock response for testing HttpContext.Response.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.AspNetCore.Http; | |
using Microsoft.AspNetCore.Http.Features; | |
using System; | |
using System.Diagnostics.CodeAnalysis; | |
using System.IO; | |
using System.Threading.Tasks; | |
namespace Starbucks.CustomerEngagement.Serilog.Enrichers.Tests | |
{ | |
[ExcludeFromCodeCoverage] | |
sealed public class MockResponseFeature : IHttpResponseFeature | |
{ | |
public Stream Body { get; set; } | |
public bool HasStarted { get { return hasStarted; } } | |
public IHeaderDictionary Headers { get; set; } | |
public string ReasonPhrase { get; set; } | |
public int StatusCode { get; set; } | |
public void OnCompleted(Func<object, Task> callback, object state) | |
{ | |
} | |
public void OnStarting(Func<object, Task> callback, object state) | |
{ | |
this.callback = callback; | |
this.state = state; | |
} | |
bool hasStarted = false; | |
Func<object, Task> callback; | |
object state; | |
public Task InvokeCallBack() | |
{ | |
hasStarted = true; | |
return callback(state); | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment