public RouteContext GetContext(RouteId id, HttpContext ctx) { var spec = Specs[id]; var options = RouteOptionsBuilder.Build(id, Config); var callCtx = RequestContextBuilder.Build(ctx); var handler = HandlerProvider.GetHandler(options.Handler, options.Config, responseContext: null); return(new RouteContext(options, spec, callCtx, handler, Logger)); }
public void ReturnDefaultsIfNoRoutesConfigured() { var config = GetConfig(new Dictionary <string, string>()); var route = new RouteId("/", HttpMethod.Get); var expected = new MockServerRouteOptions { Path = "/", Method = MockServerOptionsHttpMethod.Get, Handler = "default" }; var actual = RouteOptionsBuilder.Build(route, config); AssertEqual(expected, actual); }
public void ReturnDefaultOptionsIfRouteIsNotConfigured() { var config = GetConfig("/", "get", "test"); var route = new RouteId("/test", HttpMethod.Get); var expected = new MockServerRouteOptions { Path = "/test", Method = MockServerOptionsHttpMethod.Get, Handler = "default" }; var actual = RouteOptionsBuilder.Build(route, config); AssertEqual(expected, actual); }
public void CanBuildRouteOptions(string glob, string configMethod) { var config = GetConfig(glob, configMethod, "test"); var route = new RouteId("/foo/bar", HttpMethod.Get); var expected = new MockServerRouteOptions { Path = "/foo/bar", Method = MockServerOptionsHttpMethod.Get, Handler = "test" }; var actual = RouteOptionsBuilder.Build(route, config); AssertEqual(expected, actual); }
public RouteOptions Create(FileRoute fileRoute) { var isAuthenticated = IsAuthenticated(fileRoute); var isAuthorised = IsAuthorised(fileRoute); var isCached = IsCached(fileRoute); var enableRateLimiting = IsEnableRateLimiting(fileRoute); var useServiceDiscovery = !string.IsNullOrEmpty(fileRoute.ServiceName); var options = new RouteOptionsBuilder() .WithIsAuthenticated(isAuthenticated) .WithIsAuthorised(isAuthorised) .WithIsCached(isCached) .WithRateLimiting(enableRateLimiting) .WithUseServiceDiscovery(useServiceDiscovery) .Build(); return(options); }
public void should_create_re_route_options() { var route = new FileRoute { RateLimitOptions = new FileRateLimitRule { EnableRateLimiting = true }, AuthenticationOptions = new FileAuthenticationOptions() { AuthenticationProviderKey = "Test" }, RouteClaimsRequirement = new Dictionary <string, string>() { { "", "" } }, FileCacheOptions = new FileCacheOptions { TtlSeconds = 1 }, ServiceName = "west" }; var expected = new RouteOptionsBuilder() .WithIsAuthenticated(true) .WithIsAuthorised(true) .WithIsCached(true) .WithRateLimiting(true) .WithUseServiceDiscovery(true) .Build(); this.Given(x => x.GivenTheFollowing(route)) .When(x => x.WhenICreate()) .Then(x => x.ThenTheFollowingIsReturned(expected)) .BDDfy(); }