public void GetOwinEnvironment_ReturnsSetEnvironment()
        {
            var request = new HttpRequestMessage();
            var environment = new Dictionary<string, object>();
            request.SetOwinEnvironment(environment);

            Assert.Equal(environment, request.GetOwinEnvironment());
        }
        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var scope = request.GetOwinEnvironment().GetLifetimeScope();
            if (scope != null)
            {
                request.Properties[HttpPropertyKeys.DependencyScope] = new AutofacScope(scope);
            }

            return base.SendAsync(request, cancellationToken);
        }
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
            CancellationToken cancellationToken)
        {
            string userContext;
            var environment = request.GetOwinEnvironment();
            if (TryGetUserContextFromRequestHeader(request, out userContext))
            {
                environment[HaloAuthEnvironment.UserContext] = userContext;
            }

            var response = await base.SendAsync(request, cancellationToken);

            if (TryGetUserContextFromEnvironment(environment, out userContext))
            {
                response.Headers.Add(HaloAuthEnvironment.UserContext, userContext);
            }
            return response;
        }
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
            CancellationToken cancellationToken)
        {
            string userContext;
            var environment = request.GetOwinEnvironment();
            if (TryGetUserContextFromRequestHeader(request, out userContext))
            {
                environment[HaloAuthEnvironment.UserContext] = userContext;
                // TODO: Inject the header type and check which type is needed
                //request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", userContext);

                //SetPrincipal(request, request.GetOwinContext(), userContext);
            }

            var response = await base.SendAsync(request, cancellationToken);

            if (TryGetUserContextFromEnvironment(environment, out userContext))
            {
                response.Headers.Add(HaloAuthEnvironment.UserContext, userContext);
            }
            return response;
        }
        public void GetOwinEnvironment_ReturnsSetContextEnvironmentInstance()
        {
            // Arrange
            var request = new HttpRequestMessage();
            var environment = new Dictionary<string, object>();
            var context = new OwinContext(environment);
            request.SetOwinContext(context);

            // Act & Assert
            Assert.Same(environment, request.GetOwinEnvironment());
        }