public void CacheHit() { var cache = new Mock <IDistributedCache>(MockBehavior.Strict); var cacheProvider = new Mock <IAsyncCacheProvider>(MockBehavior.Strict); var cachePolicy = Policy.CacheAsync(cacheProvider.Object, new Mock <ITtlStrategy>().Object); var repository = new Mock <ISecretRepository>(MockBehavior.Strict); var service = new SecretRepositoryCache(repository.Object, cachePolicy); // NB Have to use the underlying methods not the helpful extensions cache.Setup(x => x.Get("clientsecret:A")).Returns(Encoding.UTF8.GetBytes("B")); var candidate = service.ClientSecret("A"); Assert.That(candidate, Is.EqualTo("B"), "Secret differs"); }
public void CacheMiss() { var cache = new Mock <IDistributedCache>(MockBehavior.Strict); var cacheProvider = new Mock <IAsyncCacheProvider>(MockBehavior.Strict); var cachePolicy = Policy.CacheAsync(cacheProvider.Object, new Mock <ITtlStrategy>().Object); var repository = new Mock <ISecretRepository>(MockBehavior.Strict); var service = new SecretRepositoryCache(repository.Object, cachePolicy); // NB Have to use the underlying methods not the helpful extensions cache.Setup(x => x.Get("clientsecret:A")).Returns((byte[])null); cache.Setup(x => x.Set("clientsecret:A", It.IsAny <byte[]>(), It.IsAny <DistributedCacheEntryOptions>())); repository.Setup(x => x.ClientSecret("A")).Returns("B"); var candidate = service.ClientSecret("A"); Assert.That(candidate, Is.EqualTo("B"), "Secret differs"); }