public void SetHttpContextAddsAllIntendedExtendedProperties()
        {
            var correlationId   = "CorrelationId1";
            var forwardedFor    = "SomeForwardedForValue1";
            var path            = "SomePathValue1";
            var referrer        = new Uri("http://SomeReferrerValue1");
            var remoteIpAddress = "10.0.0.1";
            var requestMethod   = "SomeRequestMethodValue1";
            var userAgent       = "SomeUserAgentValue1";

            var endpointMock = new Mock <IEndpointFeature>();

            endpointMock.Setup(em => em.Endpoint).Returns(new RouteEndpoint(rd => Task.CompletedTask, RoutePatternFactory.Pattern(path), 0, null, null)
            {
            });

            var featureMock = new Mock <IFeatureCollection>();

            featureMock.Setup(fm => fm[typeof(IEndpointFeature)]).Returns(endpointMock.Object);

            var connectionMock = new Mock <ConnectionInfo>();

            connectionMock.Setup(cm => cm.RemoteIpAddress).Returns(IPAddress.Parse(remoteIpAddress));

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(CorrelationId, correlationId);
            headers.Set(ForwardedFor, forwardedFor);
            headers.Set(UserAgent, userAgent);
            headers.Referer = referrer;

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);
            requestMock.Setup(rm => rm.Method).Returns(requestMethod);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(new Dictionary <object, object>());
            contextMock.Setup(cm => cm.Features).Returns(featureMock.Object);
            contextMock.Setup(cm => cm.Connection).Returns(connectionMock.Object);

            var logEntry = new LogEntry();

            logEntry.SetHttpContext(contextMock.Object);

            logEntry.CorrelationId.Should().Be(correlationId);
            logEntry.ExtendedProperties["X-Forwarded-For"].Should().Be(forwardedFor);
            logEntry.ExtendedProperties["Path"].Should().Be(path);
            logEntry.ExtendedProperties["Referrer"].Should().Be(referrer.ToString());
            logEntry.ExtendedProperties["RemoteIpAddress"].Should().Be(remoteIpAddress);
            logEntry.ExtendedProperties["Method"].Should().Be(requestMethod.ToUpperInvariant());
            logEntry.ExtendedProperties["UserAgent"].Should().Be(userAgent);
        }
Beispiel #2
0
        }                                     // prevent external instantiation

        #region HTTP Settings

        // Note that some headers are restricted like Host.
        public void SetRequestHeader(string headerName, string headerValue)
        {
            ThrowIfReadOnly();

            // WebHeaderCollection performs validation of headerName/headerValue.
            RequestHeaders.Set(headerName, headerValue);
        }
Beispiel #3
0
        public void ForwardedForContextProviderConstructor1()
        {
            var forwardedFor = new StringValues("SomeForwardedForValue1");

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(HeaderNames.ForwardedFor, forwardedFor);

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(new Dictionary <object, object>());

            var accessorMock = new Mock <IHttpContextAccessor>();

            accessorMock.Setup(am => am.HttpContext).Returns(contextMock.Object);

            var contextProvider = new ForwardedForContextProvider(accessorMock.Object);

            contextProvider.ForwardedFor.Should().BeEquivalentTo(forwardedFor);
        }
Beispiel #4
0
        public void CorrelationIdContextProviderConstructor1()
        {
            var correlationId = new StringValues("CorrelationId1");

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(CorrelationId, correlationId);

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(new Dictionary <object, object>());

            var accessorMock = new Mock <IHttpContextAccessor>();

            accessorMock.Setup(am => am.HttpContext).Returns(contextMock.Object);

            var contextProvider = new CorrelationIdContextProvider(accessorMock.Object);

            contextProvider.Accessor.CorrelationId.Should().Be(correlationId);
        }
Beispiel #5
0
        private static Mock <IHttpContextAccessor> SetUpFullHttpContextAccessor(StringValues correlationId, StringValues forwardedFor, StringValues path, Uri referrer, string remoteIpAddress, string requestMethod, StringValues userAgent)
        {
            var endpointMock = new Mock <IEndpointFeature>();

            endpointMock.Setup(em => em.Endpoint).Returns(new RouteEndpoint(rd => Task.CompletedTask, RoutePatternFactory.Pattern(path), 0, null, null)
            {
            });

            var featureMock = new Mock <IFeatureCollection>();

            featureMock.Setup(fm => fm[typeof(IEndpointFeature)]).Returns(endpointMock.Object);

            var connectionMock = new Mock <ConnectionInfo>();

            connectionMock.Setup(cm => cm.RemoteIpAddress).Returns(IPAddress.Parse(remoteIpAddress));

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(CorrelationId, correlationId);
            headers.Set(ForwardedFor, forwardedFor);
            headers.Set(UserAgent, userAgent);
            headers.Referer = referrer;

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);
            requestMock.Setup(rm => rm.Method).Returns(requestMethod);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(new Dictionary <object, object>());
            contextMock.Setup(cm => cm.Features).Returns(featureMock.Object);
            contextMock.Setup(cm => cm.Connection).Returns(connectionMock.Object);

            var accessorMock = new Mock <IHttpContextAccessor>();

            accessorMock.Setup(am => am.HttpContext).Returns(contextMock.Object);
            return(accessorMock);
        }
        public void GetCorrelationId()
        {
            var correlationId = new StringValues("CorrelationId1");

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(HeaderNames.CorrelationId, correlationId);

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(new Dictionary <object, object>());

            contextMock.Object.GetCorrelationId().Should().BeEquivalentTo(correlationId);
        }
        public void GetCorrelationIdAccessor2()
        {
            var correlationId = new StringValues("CorrelationId1");
            var items         = new Dictionary <object, object>();

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(HeaderNames.CorrelationId, correlationId);

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);
            contextMock.Setup(cm => cm.Items).Returns(items);

            var accessor = contextMock.Object.GetCorrelationIdAccessor();

            accessor.Should().NotBeNull();
            accessor.CorrelationId.Should().Be(correlationId);
        }
Beispiel #8
0
        public void UserAgentContextProviderConstructor1()
        {
            var userAgent = new StringValues("SomeUserAgentValue1");

            var headers = new RequestHeaders(new HeaderDictionary());

            headers.Set(Microsoft.Net.Http.Headers.HeaderNames.UserAgent, userAgent);

            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(rm => rm.Headers).Returns(headers.Headers);

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(cm => cm.Request).Returns(requestMock.Object);

            var accessorMock = new Mock <IHttpContextAccessor>();

            accessorMock.Setup(am => am.HttpContext).Returns(contextMock.Object);

            var contextProvider = new UserAgentContextProvider(accessorMock.Object);

            contextProvider.UserAgent.ToString().Should().Be(userAgent);
        }