public static KeyValueManager BuildCase1() { var IVaultClientMock = new Mock <IVaultClient>(); Func <Secret <SecretData> > buildDic = () => new Secret <SecretData>() { Data = new SecretData() { Data = new Dictionary <string, object> { { "A", "default-value" }, } } }; IVaultClientMock.Setup(it => it.V1.Secrets.KeyValue.V2.ReadSecretAsync(It.IsIn("path"), null, "kv", null)) .ReturnsAsync(buildDic); var manager = new KeyValueManager(IVaultClientMock.Object); return(manager); }
public async Task MarshalTestAsync() { var serviceProvider = new ServiceCollection() .AddDbContext <IKeyValueDbContext, KeyValueDbContext>(x => x.UseInMemoryDatabase("UnitTest")) .BuildServiceProvider(); var keyValues = new KeyValueManager( serviceProvider, new MemoryCache(new MemoryCacheOptions()) ); var key = "key"; var value = "123"; var value2 = "456"; Assert.IsFalse(keyValues.Exists(key)); Assert.IsNull(keyValues.Get(key)); Assert.IsNull(keyValues.Find(key)); Assert.AreEqual(0, keyValues.Get <int>(key)); keyValues.AddOrUpdate(key, value); Assert.IsTrue(keyValues.Exists(key)); Assert.IsNotNull(keyValues.Get(key)); Assert.IsNotNull(keyValues.Find(key)); Assert.AreEqual(value, keyValues.Get(key)); Assert.AreEqual(value, keyValues.Find(key).Value); Assert.AreEqual(value, keyValues.GetOrAdd(key, Crypto.RandomString())); Assert.AreEqual(value.AsInt(), keyValues.Get <int>(key)); keyValues.AddOrUpdate(key, value2.AsInt()); Assert.IsTrue(keyValues.Exists(key)); Assert.IsNotNull(keyValues.Get(key)); Assert.IsNotNull(keyValues.Find(key)); Assert.AreEqual(value2, keyValues.Get(key)); Assert.AreEqual(value2, keyValues.Find(key).Value); Assert.AreEqual(value2.AsInt(), keyValues.Get <int>(key)); keyValues.Reload(); Assert.IsFalse(keyValues.Exists(key)); Assert.IsNull(keyValues.Get(key)); Assert.IsNull(keyValues.Find(key)); keyValues.AddOrUpdate(key, value); keyValues.SaveAll(); keyValues.Reload(); Assert.IsTrue(keyValues.Exists(key)); Assert.IsNotNull(keyValues.Get(key)); Assert.IsNotNull(keyValues.Find(key)); keyValues.AddOrUpdate(key, value2); await keyValues.SaveAllAsync(); Assert.AreEqual(value2, keyValues.Get(key)); using var db = serviceProvider.GetRequiredService <IKeyValueDbContext>(); var row = db.KeyValues.Find(key); Assert.IsNotNull(row); Assert.AreEqual(key, row.Key); Assert.AreEqual(value2, row.Value); row.Value = Crypto.RandomString(); db.Normalize().SaveChanges(); keyValues.Reload(); Assert.IsTrue(keyValues.Exists(key)); Assert.AreEqual(row.Value, keyValues.Get(key)); db.Normalize().Database.EnsureDeleted(); }