diff --git a/RateLimiter.Tests/RateLimiter.Tests.csproj b/RateLimiter.Tests/RateLimiter.Tests.csproj
index 5cbfc4e8..484cdfdf 100644
--- a/RateLimiter.Tests/RateLimiter.Tests.csproj
+++ b/RateLimiter.Tests/RateLimiter.Tests.csproj
@@ -8,7 +8,9 @@
+
+
diff --git a/RateLimiter.Tests/RateLimiterTest.cs b/RateLimiter.Tests/RateLimiterTest.cs
index 172d44a7..75d811fd 100644
--- a/RateLimiter.Tests/RateLimiterTest.cs
+++ b/RateLimiter.Tests/RateLimiterTest.cs
@@ -1,13 +1,107 @@
-using NUnit.Framework;
+using System;
+using Microsoft.Extensions.Caching.Memory;
+using Moq;
+using NUnit.Framework;
+using RateLimiter.Model;
namespace RateLimiter.Tests;
[TestFixture]
public class RateLimiterTest
{
- [Test]
- public void Example()
- {
- Assert.That(true, Is.True);
- }
+ private IRateLimiterFactory _rateLimiterFactory;
+ private Mock _memoryCacheMock;
+
+ [SetUp]
+ public void SetUp()
+ {
+ _memoryCacheMock = new Mock();
+ _rateLimiterFactory = new RateLimiterFactory(_memoryCacheMock.Object);
+ }
+
+ [Test]
+ public void RateLimitResource2_DoNot_Allowed()
+ {
+ var clientData = new ClientModel()
+ {
+ ClientId = "123"
+ };
+
+ var cacheKey = $"rateLimiter-lastCall-resource2-{clientData.ClientId}";
+ var oneMinuteAgo = DateTime.UtcNow.AddMinutes(-1);
+
+ object outValue = oneMinuteAgo;
+
+ _memoryCacheMock
+ .Setup(x => x.TryGetValue(cacheKey, out outValue))
+ .Returns(true);
+
+ _memoryCacheMock
+ .Setup(x => x.CreateEntry(It.IsAny