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"); }
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); }
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); }
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); }