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