protected async Task _deleteObjectTest(IStateStorageProvider stateStorageProvider) { var stateStoreEntryKey = Guid.NewGuid().ToString("D"); var stateStoreEntry = stateStorageProvider.CreateNewEntry(TestStateNamespace, stateStoreEntryKey); var state = new StateTestsPocoState() { Id = "1", Count = 1 }; stateStoreEntry.SetValue(state); //first write should work await stateStorageProvider.Save(stateStoreEntry); var loadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); var loadedState = loadedStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.AreEqual(state.Count, loadedState.Count); await stateStorageProvider.Delete(TestStateNamespace, stateStoreEntryKey); var reloadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); Assert.IsNull(reloadedStateStoreEntry, "Did not expect to find the state store entry that was just deleted."); }
protected async Task _createObjectTest(IStateStorageProvider stateStorageProvider) { var stateStoreEntryKey = Guid.NewGuid().ToString("D"); var newStateStoreEntry = stateStorageProvider.CreateNewEntry(TestStateNamespace, stateStoreEntryKey); var newState = new StateTestsPocoState() { Id = Guid.NewGuid().ToString("D"), Nested = new StateTestsNestedPocoState { NestedId = Guid.NewGuid().ToString("D") } }; newStateStoreEntry.SetValue(newState); await stateStorageProvider.Save(newStateStoreEntry); var loadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); Assert.IsNotNull(loadedStateStoreEntry); var loadedState = newStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.IsNotNull(loadedState); Assert.AreEqual(newState.Id, loadedState.Id); Assert.IsNotNull(loadedState.Nested); Assert.AreEqual(newState.Nested.NestedId, loadedState.Nested.NestedId); }
public void Initialize() { string path = Path.Combine(Path.GetTempPath(), "BotFramework/FileSystemStateStorageProviderTests"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } foreach (var file in Directory.GetFiles(path)) { File.Delete(file); } stateStorageProvider = new FileSystemStateStorageProvider(path); }
protected async Task _handleCrazyKeys(IStateStorageProvider stateStorageProvider) { var stateStoreEntryKey = $"{Guid.NewGuid().ToString("N")}-!@#$%^&*()~/\\><,.?';\"`~"; var stateStoreEntry = stateStorageProvider.CreateNewEntry(TestStateNamespace, stateStoreEntryKey); var state = new StateTestsPocoState() { Id = Guid.NewGuid().ToString("D") }; stateStoreEntry.SetValue(state); await stateStorageProvider.Save(stateStoreEntry); var loadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); Assert.IsNotNull(loadedStateStoreEntry); var loadedState = loadedStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.IsNotNull(loadedState); Assert.AreEqual(state.Id, loadedState.Id); }
public static StateManagementMiddleware UseDefaultStorageProvider(this StateManagementMiddleware stateManagementMiddleware, IStateStorageProvider provider) => stateManagementMiddleware.UseStorageProvider(StateManagementMiddleware.DefaultStateStoreName, provider);
protected async Task _updateObjectTest(IStateStorageProvider stateStorageProvider) { var stateStoreEntryKey = Guid.NewGuid().ToString("D"); var stateStoreEntry = stateStorageProvider.CreateNewEntry(TestStateNamespace, stateStoreEntryKey); var originalState = new StateTestsPocoState() { Id = Guid.NewGuid().ToString("D"), Count = 1 }; stateStoreEntry.SetValue(originalState); //first write should work await stateStorageProvider.Save(stateStoreEntry); var loadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); Assert.IsNotNull(loadedStateStoreEntry); var loadedState = loadedStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.IsNotNull(loadedState); loadedState.Count++; await stateStorageProvider.Save(loadedStateStoreEntry); var reloadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); Assert.IsNotNull(reloadedStateStoreEntry); var reloadedState = reloadedStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.IsNotNull(reloadedState); Assert.AreEqual(2, reloadedState.Count); reloadedState.Count++; await stateStorageProvider.Save(reloadedStateStoreEntry); var rereloadedStateStoreEntry = await stateStorageProvider.Load(TestStateNamespace, stateStoreEntryKey); var rereloadedState = rereloadedStateStoreEntry.GetValue <StateTestsPocoState>(); Assert.AreEqual(3, rereloadedState.Count); //rereloadedStateStoreEntry.ETag = "*"; //// write with wildcard etag should work //result3.updatePocoItem.Count = 100; //result3.updatePocoStoreItem.Count = 100; //result3.updatePocoStoreItem.eTag = "*"; //result3.updateStoreItem.Count = 100; //result3.updateStoreItem.eTag = "*"; //await stateStorageProvider.Write(result3); //dynamic result4 = await stateStorageProvider.Read(((StoreItems)storeItems).GetDynamicMemberNames().ToArray()); //Assert.AreEqual(result3.updatePocoItem.Count, 100, "updatePocoItem.Count should be 100"); //Assert.AreEqual(result3.updatePocoStoreItem.Count, 100, "updatePocoStoreItem.Count should be 100"); //Assert.AreEqual(result3.updateStoreItem.Count, 100, "updateStoreItem.Count should be 100"); //// write with empty etag should not work //try //{ // dynamic storeItemsUpdate = new StoreItems(); // storeItemsUpdate.updatePocoStoreItem = FlexObject.Clone(result4.updatePocoStoreItem); // storeItemsUpdate.updatePocoStoreItem.eTag = ""; // await stateStorageProvider.Write(result); // Assert.Fail("Should not throw exception on write with pocoStoreItem because of empty etag"); //} //catch //{ //} //try //{ // dynamic storeItemsUpdate = new StoreItems(); // storeItemsUpdate.updateStoreItem = FlexObject.Clone(result4.updateStoreItem); // storeItemsUpdate.updateStoreItem.eTag = ""; // await stateStorageProvider.Write(result); // Assert.Fail("Should not throw exception on write with storeItem because of empty etag"); //} //catch //{ //} //dynamic result5 = await stateStorageProvider.Read(((StoreItems)storeItems).GetDynamicMemberNames().ToArray()); //Assert.AreEqual(result3.updatePocoItem.Count, 100, "updatePocoItem.Count should be 100"); //Assert.AreEqual(result3.updatePocoStoreItem.Count, 100, "updatePocoStoreItem.Count should be 100"); //Assert.AreEqual(result3.updateStoreItem.Count, 100, "updateStoreItem.Count should be 100"); }
protected async Task _readUnknownTest(IStateStorageProvider stateStorageProvider) { var result = await stateStorageProvider.Load(TestStateNamespace, Guid.NewGuid().ToString("N")); Assert.IsNull(result); }
public static Task Delete(this IStateStorageProvider stateStore, string stateNamespace, params string[] keys) => stateStore.Delete(stateNamespace, (IEnumerable <string>)keys);
public StateManager(string stateNamespace, IStateStorageProvider storageProvider) { Namespace = stateNamespace ?? throw new ArgumentNullException(nameof(stateNamespace)); StorageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); }
public static Task Save(this IStateStorageProvider stateStore, params IStateStorageEntry[] stateStorageEntries) => stateStore.Save((IEnumerable <IStateStorageEntry>)stateStorageEntries);
public StateManagementMiddleware UseStorageProvider(string name, IStateStorageProvider provider) { _configuredStateStorageProviders[name] = provider ?? throw new ArgumentNullException(nameof(provider)); return(this); }
public ConversationStateManager(string channelId, string conversationId, IStateStorageProvider stateStore) : base(BuildStateNamespace(channelId, conversationId), stateStore) { ChannelId = channelId ?? throw new System.ArgumentNullException(nameof(channelId)); ConversationId = conversationId ?? throw new System.ArgumentNullException(nameof(conversationId)); }
public void initialize() { stateStorageProvider = new MemoryStateStorageProvider(); }
public UserStateManager(string userId, IStateStorageProvider stateStore) : base(BuildStateNamespace(userId), stateStore) { UserId = userId ?? throw new System.ArgumentNullException(nameof(userId)); }