public async Task SetHeaderParameters_HasIncomingRequestWithHeader_SetHeaderFromIncoming(string headerKey, string headerValue) { // arrange var fakeRequest = new Mock <HttpRequest>(); var fakeContext = new Mock <HttpContext>(); fakeRequest.Setup(x => x.Headers) .Returns(new HeaderDictionary() { new KeyValuePair <string, StringValues>(headerKey, new StringValues(headerValue)) }); fakeRequest.Setup(x => x.HttpContext) .Returns(fakeContext.Object); fakeContext.Setup(x => x.Request) .Returns(fakeRequest.Object); var fakeContextAccessor = new Mock <IHttpContextAccessor>(); fakeContextAccessor.Setup(x => x.HttpContext) .Returns(fakeContext.Object); var handler = new BaseCompanyRequestHeadersHandler(fakeContextAccessor.Object); handler.InnerHandler = new FakeHttpClientHandler(); var client = new System.Net.Http.HttpClient(handler); // act var request = new HttpRequestMessage(HttpMethod.Get, "http://0.0.0.0:80"); await client.SendAsync(request); // assert Assert.That(request.Headers.GetValues(headerKey) .First(), Is.EqualTo(headerValue)); }
public async Task SetHeaderParameters_HasValuesInContext_SetHeaders() { // arrange var fakeContext = new Mock <ICallContext>(); fakeContext.Setup(x => x.UserId) .Returns("hamster"); fakeContext.Setup(x => x.UserDomain) .Returns("Domain"); fakeContext.Setup(x => x.RequestCallerIp) .Returns("0.0.0.0"); fakeContext.Setup(x => x.AuthorizeInfo) .Returns("token"); fakeContext.Setup(x => x.RequestId) .Returns("123"); var fakeContextFactory = new Mock <ICallContextFactory>(); fakeContextFactory.Setup(x => x.Create()) .Returns(fakeContext.Object); var handler = new BaseCompanyRequestHeadersHandler(fakeContextFactory.Object) { InnerHandler = new FakeHttpClientHandler() }; var client = new System.Net.Http.HttpClient(handler); // act var request = new HttpRequestMessage(HttpMethod.Get, "http://0.0.0.0:80"); await client.SendAsync(request); // assert Assert.Multiple(() => { Assert.That(request.Headers.GetValues(CompanyHttpHeaders.UserId) .First(), Is.EqualTo(fakeContext.Object.UserId)); Assert.That(request.Headers.GetValues(CompanyHttpHeaders.UserDomain) .First(), Is.EqualTo(fakeContext.Object.UserDomain)); Assert.That(request.Headers.GetValues(CompanyHttpHeaders.RequestId) .First(), Is.EqualTo(fakeContext.Object.RequestId)); Assert.That(request.Headers.GetValues(CompanyHttpHeaders.RequestHeaderCallerIp) .First(), Is.EqualTo(fakeContext.Object.RequestCallerIp)); }); }
public async Task GetCallerIp_HasRequestWithoutCallerIpHeader_SetCallerIpFromConnection() { // arrange var fakeRequest = new Mock <HttpRequest>(); fakeRequest.Setup(x => x.Headers) .Returns(new HeaderDictionary()); var fakeContext = new Mock <HttpContext>(); fakeRequest.Setup(x => x.HttpContext) .Returns(fakeContext.Object); fakeContext.Setup(x => x.Request) .Returns(fakeRequest.Object); var fakeConnectionInfo = new Mock <ConnectionInfo>(); fakeConnectionInfo.Setup(x => x.RemoteIpAddress) .Returns(new IPAddress(123)); fakeContext.Setup(x => x.Connection) .Returns(fakeConnectionInfo.Object); var fakeContextAccessor = new Mock <IHttpContextAccessor>(); fakeContextAccessor.Setup(x => x.HttpContext) .Returns(fakeContext.Object); var handler = new BaseCompanyRequestHeadersHandler(fakeContextAccessor.Object); handler.InnerHandler = new FakeHttpClientHandler(); var client = new System.Net.Http.HttpClient(handler); // act var request = new HttpRequestMessage(HttpMethod.Get, "http://0.0.0.0:80"); await client.SendAsync(request); // assert Assert.That(request.Headers.GetValues(CompanyHttpHeaders.RequestHeaderCallerIp) .First(), Is.EqualTo(new IPAddress(123).ToString())); }
public async Task SetHeaderParameters_DontHaveIncomingRequest_SetDefaultHeaders() { // arrange var fakeRequest = new Mock <HttpRequest>(); var fakeContext = new Mock <HttpContext>(); fakeRequest.Setup(x => x.Headers) .Returns(new HeaderDictionary()); fakeRequest.Setup(x => x.HttpContext) .Returns(fakeContext.Object); fakeContext.Setup(x => x.Request) .Returns(fakeRequest.Object); var fakeContextAccessor = new Mock <IHttpContextAccessor>(); fakeContextAccessor.Setup(x => x.HttpContext) .Returns(fakeContext.Object); var handler = new BaseCompanyRequestHeadersHandler(fakeContextAccessor.Object); handler.InnerHandler = new FakeHttpClientHandler(); var client = new System.Net.Http.HttpClient(handler); // act var request = new HttpRequestMessage(HttpMethod.Get, "http://0.0.0.0:80"); await client.SendAsync(request); // assert Assert.That(request.Headers.GetValues(CompanyHttpHeaders.RequestId) .First(), Is.Not.Empty); Assert.That(request.Headers.GetValues(CompanyHttpHeaders.UserId) .First(), Is.EqualTo(Environment.UserName)); Assert.That(request.Headers.GetValues(CompanyHttpHeaders.UserDomain) .First(), Is.EqualTo(Environment.UserDomainName)); request.Headers.TryGetValues(CompanyHttpHeaders.RequestHeaderCallerIp, out var values); Assert.That(values, Is.Null); }