public bool Verify(string token, DateTime requestDate, RateLimitSettingsConfig rateLimitSettingsConfig) { var clientRepository = new ClientRepository(); var requestsPerTimeSpanRateLimiter = new TokenBucketRateLimiter(); var timeSpanPassedSinceLastCallRateLimiter = new TimespanPassedSinceLastCallRateLimiter(); var rateLimiterAlgorithm = new RateLimiterAlgorithm(requestsPerTimeSpanRateLimiter, timeSpanPassedSinceLastCallRateLimiter); var rateLimiter = new RateLimiter(clientRepository, rateLimiterAlgorithm); return(rateLimiter.Verify(token, requestDate, rateLimitSettingsConfig)); }
public void TimespanPassedSinceLastCall_Verify_True_WithinRatelimit() { var clientToken = "abc123"; var lastUpdateDate = new DateTime(2020, 1, 1, 0, 0, 0, 0); // 1/1/2020 12:00:00AM var requestDate = new DateTime(2020, 1, 1, 0, 0, 0, 500); // 1/1/2020 12:00:05AM var timespanPassedSinceLastCallRateLimiter = new TimespanPassedSinceLastCallRateLimiter(); var isAllowed = timespanPassedSinceLastCallRateLimiter.VerifyTimespanPassedSinceLastCall(requestDate, new TimeSpan(0, 0, 1), lastUpdateDate); Assert.AreEqual(isAllowed, true); }