Exemple #1
0
        public void MultipleRequestWithSameApiKey()
        {
            //key TEST100 has rate Limit as 15
            apiKey = "TEST0000";

            int rateLimit = Config.GetRateLimitByAppId(apiKey);
            int successA = 0, successB = 0, successC = 0;

            for (int i = 1; i <= rateLimit; i++)
            {
                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    successA++;
                }

                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    successB++;
                }

                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    successC++;
                }
            }

            Assert.IsTrue((successA + successB + successC) == rateLimit);
        }
Exemple #2
0
        public async Task <HttpResponseMessage> FetchAllHotelAsync(DataSourceRequests request)
        {
            if (RequestThrottler.IsThrottled(request.ApiKey))
            {
                return(Request.CreateResponse((HttpStatusCode)429, "Too many requests."));
            }

            var result = await _hotelService.FetchAllHotels(request);

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
Exemple #3
0
        public void WhenAppIdNotExistsInConfigAssignDefaultRate()
        {
            //Default rate limit is 10 in config.
            apiKey = "XXZZZZZ";
            int success = 0;

            int rateLimit = Config.GetRateLimitByAppId(apiKey);

            for (int i = 1; i <= rateLimit; i++)
            {
                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    success++;
                }
            }

            Assert.IsTrue(success == rateLimit);
        }
Exemple #4
0
        public void WhenRateLimitExceedsCheckIfKeyIsBlocked()
        {
            //key HD700 has default rate Limit 10
            apiKey = "HD700";
            bool isBlocked = false;

            for (int i = 1; i <= 11; i++)
            {
                if (RequestThrottler.IsThrottled(apiKey))
                {
                    if (RequestThrottler._cache.ContainsKey($"{apiKey}-BLOCKED"))
                    {
                        isBlocked = true;
                    }
                }
            }
            Assert.IsTrue(isBlocked);
        }
Exemple #5
0
        public void WhenNumberOfRequestIsEqualToRateLimit()
        {
            //key TEST100 has rate Limit as 15
            apiKey = "TEST102";

            int rateLimit = Config.GetRateLimitByAppId(apiKey);
            int success   = 0;

            for (int i = 1; i <= rateLimit; i++)
            {
                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    success++;
                }
            }

            Assert.IsTrue(rateLimit == success);
        }
Exemple #6
0
        public void WhenNumberOfRequestIsGreaterThanRateLimit()
        {
            //key TEST101 has rate Limit as 20
            apiKey = "TEST100";
            int success = 0, failed = 0;

            int rateLimit = Config.GetRateLimitByAppId(apiKey);

            for (int i = 1; i <= rateLimit; i++)
            {
                if (!RequestThrottler.IsThrottled(apiKey))
                {
                    success++;
                }
                else
                {
                    failed++;
                }
            }

            Assert.IsTrue(rateLimit - success == failed);
        }