示例#1
0
        public void SuccessfullyMakeCallsAfterThrottlingEnds()
        {
            var throttle = new ThrottleAttribute()
            {
                CallsPerRateLimitSeconds = 1, RateLimitSeconds = 1
            };
            var authCode = "Key8" + Guid.NewGuid();
            var context  = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context);
            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));

            var context2 = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context2);

            Assert.AreEqual(context2.Response.StatusCode.ToString(), 429.ToString());


            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));

            var context3 = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context3);

            Assert.AreEqual(context3.Response, null);
        }
示例#2
0
        public void DefaultsAreSetForThrottling()
        {
            var throttle = new ThrottleAttribute();

            var context = CreateHttpContext("Key" + Guid.NewGuid());

            throttle.OnActionExecuting(context);
            throttle.OnActionExecuting(context);

            Assert.AreEqual(throttle.CallsPerRateLimitSeconds, 10);
            Assert.AreEqual(throttle.RateLimitSeconds, 30);
        }
示例#3
0
        public void CallsDoNotExceedLimit()
        {
            var throttle = new ThrottleAttribute {
                CallsPerRateLimitSeconds = 3, RateLimitSeconds = 1
            };
            var authCode = "Key2" + Guid.NewGuid();
            var context  = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context);

            var context2 = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context2);

            Assert.AreEqual(context2.Response, null);
        }
示例#4
0
        public void CallsExceedAllowedCallsInTimeframe()
        {
            var throttle = new ThrottleAttribute()
            {
                CallsPerRateLimitSeconds = 1, RateLimitSeconds = 1
            };
            var authCode = "Key1" + Guid.NewGuid();
            var context  = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context);
            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));

            var context2 = CreateHttpContext(authCode);

            throttle.OnActionExecuting(context2);

            Assert.AreEqual(context2.Response.StatusCode.ToString(), 429.ToString());
        }
示例#5
0
        public void MultipleCallsFromDifferentUsersDoNotExceed()
        {
            var throttle = new ThrottleAttribute()
            {
                CallsPerRateLimitSeconds = 1, RateLimitSeconds = 1
            };

            var context = CreateHttpContext("Key3" + Guid.NewGuid());

            throttle.OnActionExecuting(context);

            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));

            var context2 = CreateHttpContext("Key4" + Guid.NewGuid());

            throttle.OnActionExecuting(context2);

            Assert.AreEqual(context2.Response, null);
        }