示例#1
0
        public async Task Invoke_ReplacesRequestServices()
        {
            var accessor        = Mock.Of <IHttpContextAccessor>();
            var originalFeature = Mock.Of <IServiceProvidersFeature>();
            var next            = new RequestDelegate(ctx =>
            {
                // When the next delegate is invoked, it should get
                // an updated request services feature.
                var currentFeature = ctx.Features.Get <IServiceProvidersFeature>();
                Assert.NotSame(originalFeature, currentFeature);
                return(Task.FromResult(0));
            });
            var context = CreateContext();

            context.Features.Set <IServiceProvidersFeature>(originalFeature);
            var mtc = CreateServiceProvider().GetRequiredService <MultitenantContainer>();
            var mw  = new MultitenantRequestServicesMiddleware(next, accessor, mtc);

            await mw.Invoke(context);

            // The original request services feature should have been replaced
            // after the middleware finished.
            var revertedFeature = context.Features.Get <IServiceProvidersFeature>();

            Assert.Same(originalFeature, revertedFeature);
        }
        public async Task Invoke_NoMultitenantContainer()
        {
            var accessor = Mock.Of <IHttpContextAccessor>();
            var next     = new RequestDelegate(ctx => Task.FromResult(0));
            var context  = CreateContext();

            var mw = new MultitenantRequestServicesMiddleware(next, () => null, accessor);
            await Assert.ThrowsAsync <InvalidOperationException>(() => mw.Invoke(context));
        }
示例#3
0
        public async Task Invoke_SetsHttpContextOnAccessor()
        {
            var accessor = Mock.Of <IHttpContextAccessor>();
            var next     = new RequestDelegate(ctx => Task.FromResult(0));
            var context  = CreateContext();
            var mtc      = CreateServiceProvider().GetRequiredService <MultitenantContainer>();
            var mw       = new MultitenantRequestServicesMiddleware(next, accessor, mtc);

            await mw.Invoke(context);

            Assert.Same(context, accessor.HttpContext);
        }
        public async Task Invoke_DoesNotOverrideExistingHttpContextOnAccessor()
        {
            var accessor = Mock.Of <IHttpContextAccessor>();

            accessor.HttpContext = new DefaultHttpContext();
            var mtc     = CreateContainer();
            var next    = new RequestDelegate(ctx => Task.FromResult(0));
            var context = CreateContext();

            var mw = new MultitenantRequestServicesMiddleware(next, () => mtc, accessor);
            await mw.Invoke(context);

            Assert.NotSame(context, accessor.HttpContext);
        }