Example #1
0
        public void CreateScope_ExpectCorrelationContextPresent()
        {
            // arrange
            var httpContext = new DefaultHttpContext();

            var correlationId      = CorrelationId.FromString("123");
            var correlationContext = new RequestCorrelationContext(correlationId, HttpHeaders.CorrelationId);

            _factory
            .Setup(f => f.CreateContext(It.IsAny <HttpContext>()))
            .Returns(correlationContext);

            // act
            var container = new CorrelationContextContainer(_factory.Object);

            using var scope = container.CreateScope(httpContext);

            // assert
            // -> container content
            Assert.Equal(correlationContext, container.CorrelationContext);
            Assert.Equal(correlationId, container.CorrelationContext.CorrelationId);

            // -> scope content
            Assert.Equal(correlationContext, scope.CorrelationContext);
            Assert.Equal(correlationId, scope.CorrelationContext.CorrelationId);
        }
Example #2
0
        private void spfInstance_SendingRequest(object sender, System.Data.Services.Client.SendingRequestEventArgs e)
        {
            // Set Claim-based auth header
            var bearerToken = AuthenticationHelper.GetPrincipalBearerToken();

            // TODO: We should fail here when I remove the basic auth fallback
            if (!string.IsNullOrWhiteSpace(bearerToken))
            {
                e.RequestHeaders.Add("Authorization", "Bearer " + bearerToken);
            }

            e.RequestHeaders.Add("Accept-Language", System.Threading.Thread.CurrentThread.CurrentUICulture.Name);

            // Set common headers, including x-ms-principal-id
            RequestCorrelationContext current = RequestCorrelationContext.Current;

            current.Transfer(e.RequestHeaders);
        }
Example #3
0
        public async Task Emits_WhenNoEmit_ExpectNoCorrelationIdEmitted()
        {
            // arrange
            var incomingHeader = HttpHeaders.AspNetRequestId;

            var options = CreateEmitOptions(PropagationSettings.NoPropagation);

            var httpContext        = new DefaultHttpContext();
            var correlationContext = new RequestCorrelationContext(
                CorrelationId.FromString("123"),
                incomingHeader);

            // act
            var emitter = new CorrelationEmitter(options, _logger);
            await emitter
            .Emit(httpContext, correlationContext)
            .ConfigureAwait(false);

            // assert
            Assert.DoesNotContain(incomingHeader, httpContext.Response.Headers);
        }
Example #4
0
        public async Task Emits_WhenKeepingIncomingHeader_ExpectCorrelationIdEmittedWithIncomingHeader()
        {
            // arrange
            var headerName = HttpHeaders.CorrelationId;

            var options = CreateEmitOptions(PropagationSettings.KeepIncomingHeaderName());

            var httpContext        = new DefaultHttpContext();
            var correlationContext = new RequestCorrelationContext(
                CorrelationId.FromString("123"),
                headerName);

            // act
            var emitter = new CorrelationEmitter(options, _logger);
            await emitter
            .Emit(httpContext, correlationContext)
            .ConfigureAwait(false);

            // assert
            Assert.Contains(headerName, httpContext.Response.Headers);
            Assert.Equal("123", httpContext.Response.Headers[headerName]);
        }
Example #5
0
        public async Task Emits_WhenEmmitingUsingCustomHeader_ExpectCorrelationIdEmittedWithPredefinedHeader()
        {
            // arrange
            var incomingHeader = HttpHeaders.AspNetRequestId;
            var outgoingHeader = "X-Le-Custom-Request-Id";

            var options = CreateEmitOptions(PropagationSettings.PropagateAs(outgoingHeader));

            var httpContext        = new DefaultHttpContext();
            var correlationContext = new RequestCorrelationContext(
                CorrelationId.FromString("123"),
                incomingHeader);

            // act
            var emitter = new CorrelationEmitter(options, _logger);
            await emitter
            .Emit(httpContext, correlationContext)
            .ConfigureAwait(false);

            // assert
            Assert.Contains(outgoingHeader, httpContext.Response.Headers);
            Assert.Equal("123", httpContext.Response.Headers[outgoingHeader]);
        }