Пример #1
0
        public void PathResolver_DifferentOrNoRootController_CanResolveDifferentOrNoRootAction()
        {
            var ctrlCtx = new ControllerDiscoverer(new ActionDiscoverer(new ParametersDiscoverer(Fakes.FakeServiceProvider.GetServiceProvider(), new Fakes.FakeDefaultLiteApiOptionsRetriever())), new LiteApiOptionsAccessor(LiteApiOptions.Default))
                          .GetControllers(typeof(Controllers.NoRootController).GetTypeInfo().Assembly);

            var resolver = new PathResolver(ctrlCtx, new LiteApiOptionsAccessor(LiteApiOptions.Default));

            var request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/api/v2/DifferentRoot/Get");

            resolver.ResolveAndAssert(request, "DifferentRootController");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/theApi/simpleDifferentRoot/Get");
            resolver.ResolveAndAssert(request, "SimpleDifferentRoot");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/complex/root/with/multiple/parts/complexRoot/get");
            resolver.ResolveAndAssert(request, "ComplexRoot");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/complex/root/with/multiple/parts/get");
            resolver.ResolveAndAssert(request, "ComplexRoot2");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/noroot/get");
            resolver.ResolveAndAssert(request, "NoRoot");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/differentnoroot/get");
            resolver.ResolveAndAssert(request, "DifferentNoRoot");

            request = Fakes.FakeHttpRequest.WithGetMethod().WithPath("/api/NoCtrlInName/get");
            resolver.ResolveAndAssert(request, "NoCtrlInName");
        }
Пример #2
0
        public static ControllerContext GetControllerContext(this LiteController ctrl)
        {
            var ad = new ActionDiscoverer(new ParametersDiscoverer(Fakes.FakeServiceProvider.GetServiceProvider(), new Fakes.FakeDefaultLiteApiOptionsRetriever()));
            var controllerDiscoverer = new ControllerDiscoverer(ad, new LiteApiOptionsAccessor(LiteApiOptions.Default));

            var type    = ctrl.GetType();
            var context = new ControllerContext
            {
                ControllerType = type,
                RouteAndName   = GetControllerName(type, controllerDiscoverer)
            };

            context.Actions = ad.GetActions(context);

            return(context);
        }
Пример #3
0
        public static ControllerContext GetControllerContext(this LiteController ctrl)
        {
            var ad = new ActionDiscoverer(new ParametersDiscoverer(new Moq.Mock <IServiceProvider>().Object));
            var controllerDiscoverer = new ControllerDiscoverer(ad);

            var type    = ctrl.GetType();
            var context = new ControllerContext
            {
                ControllerType = type,
                RouteAndName   = GetControllerName(type, controllerDiscoverer)
            };

            context.Actions = ad.GetActions(context);

            return(context);
        }
Пример #4
0
        private static string GetControllerName(Type type, ControllerDiscoverer ctrlDiscoverer)
        {
            var method = typeof(ControllerDiscoverer).GetMethod("GetControllerRoute", BindingFlags.NonPublic | BindingFlags.Instance);

            return(method.Invoke(ctrlDiscoverer, new object[] { type }) as string);
        }