예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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();
        }