Ejemplo n.º 1
0
        public void should_create_downstream_route_with_rate_limit_options()
        {
            var rateLimitOptions = new RateLimitOptionsBuilder()
                                   .WithEnableRateLimiting(true)
                                   .WithClientIdHeader("test")
                                   .Build();

            var downstreamReRoute = new DownstreamReRouteBuilder()
                                    .WithServiceName("auth")
                                    .WithRateLimitOptions(rateLimitOptions)
                                    .Build();

            var reRoute = new ReRouteBuilder()
                          .WithDownstreamReRoute(downstreamReRoute)
                          .Build();

            var reRoutes = new List <ReRoute> {
                reRoute
            };

            var configuration = new InternalConfiguration(reRoutes, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);

            this.Given(_ => GivenTheConfiguration(configuration))
            .When(_ => WhenICreate())
            .Then(_ => ThenTheDownstreamRouteIsCreated())
            .And(_ => WithRateLimitOptions(rateLimitOptions))
            .BDDfy();
        }
Ejemplo n.º 2
0
        public void should_create_rate_limit_options()
        {
            var fileReRoute = new FileReRoute
            {
                RateLimitOptions = new FileRateLimitRule
                {
                    ClientWhitelist    = new List <string>(),
                    Period             = "Period",
                    Limit              = 1,
                    PeriodTimespan     = 1,
                    EnableRateLimiting = true
                }
            };
            var fileGlobalConfig = new FileGlobalConfiguration
            {
                RateLimitOptions = new FileRateLimitOptions
                {
                    ClientIdHeader          = "ClientIdHeader",
                    DisableRateLimitHeaders = true,
                    QuotaExceededMessage    = "QuotaExceededMessage",
                    RateLimitCounterPrefix  = "RateLimitCounterPrefix",
                    HttpStatusCode          = 200
                }
            };
            var expected = new RateLimitOptionsBuilder()
                           .WithClientIdHeader("ClientIdHeader")
                           .WithClientWhiteList(fileReRoute.RateLimitOptions.ClientWhitelist)
                           .WithDisableRateLimitHeaders(true)
                           .WithEnableRateLimiting(true)
                           .WithHttpStatusCode(200)
                           .WithQuotaExceededMessage("QuotaExceededMessage")
                           .WithRateLimitCounterPrefix("RateLimitCounterPrefix")
                           .WithRateLimitRule(new RateLimitRule(fileReRoute.RateLimitOptions.Period,
                                                                fileReRoute.RateLimitOptions.PeriodTimespan,
                                                                fileReRoute.RateLimitOptions.Limit))
                           .Build();

            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
            .And(x => x.GivenTheFollowingFileGlobalConfig(fileGlobalConfig))
            .And(x => x.GivenRateLimitingIsEnabled())
            .When(x => x.WhenICreate())
            .Then(x => x.ThenTheFollowingIsReturned(expected))
            .BDDfy();
        }
Ejemplo n.º 3
0
        public RateLimitOptions Create(FileReRoute fileReRoute, FileGlobalConfiguration globalConfiguration, bool enableRateLimiting)
        {
            RateLimitOptions rateLimitOption = null;

            if (enableRateLimiting)
            {
                rateLimitOption = new RateLimitOptionsBuilder()
                                  .WithClientIdHeader(globalConfiguration.RateLimitOptions.ClientIdHeader)
                                  .WithClientWhiteList(fileReRoute.RateLimitOptions.ClientWhitelist)
                                  .WithDisableRateLimitHeaders(globalConfiguration.RateLimitOptions.DisableRateLimitHeaders)
                                  .WithEnableRateLimiting(fileReRoute.RateLimitOptions.EnableRateLimiting)
                                  .WithHttpStatusCode(globalConfiguration.RateLimitOptions.HttpStatusCode)
                                  .WithQuotaExceededMessage(globalConfiguration.RateLimitOptions.QuotaExceededMessage)
                                  .WithRateLimitCounterPrefix(globalConfiguration.RateLimitOptions.RateLimitCounterPrefix)
                                  .WithRateLimitRule(new RateLimitRule(fileReRoute.RateLimitOptions.Period,
                                                                       TimeSpan.FromSeconds(fileReRoute.RateLimitOptions.PeriodTimespan),
                                                                       fileReRoute.RateLimitOptions.Limit))
                                  .Build();
            }

            return(rateLimitOption);
        }