示例#1
0
        public async Task Build_BuildsTheOverallPipeline()
        {
            var serviceProvider = new MockServiceProvider();
            var routeBuilder    = new RouteBuilder(serviceProvider);

            var routerCallList        = new List <string>();
            var routerCallContextList = new List <RouteContext>();

            routeBuilder.AddRouter(next =>
            {
                return(async context =>
                {
                    routerCallList.Add("First");
                    routerCallContextList.Add(context);
                    var nextViewInfo = await next(context);
                    var viewInfo = new ViewInfo(string.Concat("Alpha ", nextViewInfo.View));
                    return viewInfo;
                });
            });

            routeBuilder.AddRouter(next =>
            {
                return(context =>
                {
                    routerCallList.Add("Second");
                    routerCallContextList.Add(context);
                    var viewInfo = new ViewInfo("Beta");
                    return Task.FromResult(viewInfo);
                });
            });

            routeBuilder.AddRouter(next =>
            {
                return(context =>
                {
                    routerCallList.Add("Third");
                    routerCallContextList.Add(context);
                    return next(context);
                });
            });

            var routeContext = new RouteContext();
            var router       = routeBuilder.Build();
            var result       = await router(routeContext);

            Assert.Equal(new string[] { "First", "Second" }, routerCallList);
            Assert.Equal(new RouteContext[] { routeContext, routeContext }, routerCallContextList);
            Assert.Equal("Alpha Beta", result.View);
        }
示例#2
0
        public void Use_ThrowsException_IfFunctionIsNull()
        {
            IServiceProvider serviceProvider = new MockServiceProvider();
            RouteBuilder     routeBuilder    = new RouteBuilder(serviceProvider);

            Assert.Throws <ArgumentNullException>("router", () => routeBuilder.AddRouter(null));
        }
示例#3
0
文件: Startup.cs 项目: Arch/Ocelot
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));

            loggerFactory.AddDebug();

            var routeBuilder = new RouteBuilder(app);

            routeBuilder.AddRouter(app);

            app.UseRouter(routeBuilder.Build());
        }
示例#4
0
        public async Task Build_BuildsAPipelineThatHasNoFinalStep()
        {
            var serviceProvider = new MockServiceProvider();
            var routeBuilder    = new RouteBuilder(serviceProvider);

            var routerCallList        = new List <string>();
            var routerCallContextList = new List <RouteContext>();

            routeBuilder.AddRouter(next =>
            {
                return(context =>
                {
                    routerCallList.Add("First");
                    routerCallContextList.Add(context);
                    return next(context);
                });
            });

            routeBuilder.AddRouter(next =>
            {
                return(context =>
                {
                    routerCallList.Add("Second");
                    routerCallContextList.Add(context);
                    return next(context);
                });
            });

            var routeContext = new RouteContext();
            var router       = routeBuilder.Build();
            var result       = await router(routeContext);

            Assert.Equal(new string[] { "First", "Second" }, routerCallList);
            Assert.Equal(new RouteContext[] { routeContext, routeContext }, routerCallContextList);
            Assert.Null(result);
        }