public async void GetOrCreateValueAsync_FromInMemoryProvider() { // Arrange var cacheKey = "Unit-Test-Cache"; var inMemoryValue = "FromInMemory"; var distributedValue = "FromDistributed"; var providerFunctionValue = "FromProviderFunction"; _inMemoryCacheProviderMock.Setup(imcp => imcp.GetAsync <string>(cacheKey, It.IsAny <CancellationToken>())).Returns(Task.FromResult(inMemoryValue)); _distributedCacheProviderMock.Setup(dcp => dcp.GetAsync <string>(cacheKey, It.IsAny <CancellationToken>())).Returns(Task.FromResult(distributedValue)); string cacheProviderFunc() => providerFunctionValue; // Act var obtainedCacheValue = await _cacheService.GetOrCreateValueAsync(cacheKey, cacheProviderFunc); // Assert _inMemoryCacheProviderMock.Verify(imcp => imcp.GetAsync <string>(cacheKey, It.IsAny <CancellationToken>()), Times.Once()); _distributedCacheProviderMock.Verify(dcp => dcp.GetAsync <string>(cacheKey, It.IsAny <CancellationToken>()), Times.Once()); _inMemoryCacheProviderMock.Verify(imcp => imcp.SetAsync(cacheKey, It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.Never()); _distributedCacheProviderMock.Verify(dcp => dcp.SetAsync(cacheKey, It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.Never()); Assert.Equal(inMemoryValue, obtainedCacheValue); }
/// <summary> /// Create a new secret to a connection ID /// </summary> /// <param name="connectionId">The ID of the connection</param> /// <param name="secretValue">The value of the secret</param> /// <returns>An async task</returns> public async Task CreateConnectionSecret(Guid connectionId, string secretValue) { // Instead of an actual keyvault use local in-memory and redis cache to store secrets await _cachingService.GetOrCreateValueAsync(GetConnectionSecretName(connectionId), () => secretValue); }