public void Ctor_SetsLimitAndRate_IfRatePeriod() { var attribute = new LimitRateAttribute(1, RatePeriod.PerSecond); attribute.Limit.Should().Be(1); attribute.Seconds.Should().Be((int)RatePeriod.PerSecond); }
public void Ctor_SetsLimitAndRate_IfOnlyType() { var attribute = new LimitRateAttribute(LimitType.PerUser); attribute.Limit.Should().Be(LimitProviderConstants.DefaultPerMinute); attribute.Seconds.Should().Be((int)RatePeriod.PerMinute); attribute.Type.Should().Be(LimitType.PerUser); }
public void Execute_AddsNextUserLimit_IfBothLimits() { var request = A.Fake <IRequest>(); request.Items.Add(LimitRateAttribute.RequestItemName, new Limits { Request = new LimitGroup { Limits = new List <LimitPerSecond> { new LimitPerSecond { Seconds = 1, Limit = 1 } } }, User = new LimitGroup { Limits = new List <LimitPerSecond> { new LimitPerSecond { Seconds = 1, Limit = 1 } } } }); var response = A.Fake <IResponse>(); var attribute = new LimitRateAttribute(LimitType.PerUser, 6, 45); attribute.Execute(request, response, null); request.Items[LimitRateAttribute.RequestItemName].Should().BeEquivalentTo(new Limits { Request = new LimitGroup { Limits = new List <LimitPerSecond> { new LimitPerSecond { Seconds = 1, Limit = 1 } } }, User = new LimitGroup { Limits = new List <LimitPerSecond> { new LimitPerSecond { Seconds = 1, Limit = 1 }, new LimitPerSecond { Seconds = 45, Limit = 6 } } } }); }