public void GenerateCryptoKey_NoDataInCache_ReturnFromRemote_UpdateCache() { var dataKey = GetSecureDataKey(); var newDataKey = GetSecureDataKey(); var key = Guid.NewGuid().ToString(); var provider = new Mock <ICryptoKeyProvider>(); provider.Setup(store => store.GenerateCryptoKey(_application, _tenant, key)) .Returns(dataKey); var cachedProvider = new CachedCryptoKeyProvider(provider.Object); var value = cachedProvider.GenerateCryptoKey(_application, _tenant, key); Assert.True(IsEqual(dataKey, value)); provider.Setup(store => store.GenerateCryptoKey(_application, _tenant, key)) .Returns(newDataKey); value = cachedProvider.GenerateCryptoKey(_application, _tenant, key); Assert.True(IsEqual(dataKey, value)); Assert.False(IsEqual(newDataKey, value)); }
public async Task GetCryptoKeyAsync_NoDataInCahce_RetrunFromRemote() { var dataKey = GetSecureDataKey(); var provider = new Mock <ICryptoKeyProvider>(); var key = Guid.NewGuid().ToString(); var cachedProvider = new CachedCryptoKeyProvider(provider.Object); provider.Setup(store => store.GetCryptoKeyAsync(_application, _tenant, key)) .ReturnsAsync(dataKey); var value = await cachedProvider.GetCryptoKeyAsync(_application, _tenant, key); Assert.True(IsEqual(dataKey, value)); }
public void GetCryptoKey_NoDataInCahce_RetrunFromRemote_DoNotUpdateCacheIfNull() { var key = Guid.NewGuid().ToString(); var dataKey = GetSecureDataKey(); var provider = new Mock <ICryptoKeyProvider>(); provider.Setup(store => store.GetCryptoKey(_application, _tenant, key)) .Returns(() => null); var cachedProvider = new CachedCryptoKeyProvider(provider.Object); var value = cachedProvider.GetCryptoKey(_application, _tenant, key); Assert.Null(value); provider.Setup(store => store.GetCryptoKey(_application, _tenant, key)) .Returns(dataKey); value = cachedProvider.GetCryptoKey(_application, _tenant, key); Assert.True(IsEqual(dataKey, value)); }