public async Task AddToGroupHandlerHandle_WhenConnectionExists_AddsConnectionToGroupStoreAndRepliesToBus() { using var client = new TestClient(); var connection = HubConnectionContextUtils.Create(connection: client.Connection); var fakeBus = new FakeBus(); var hubLifetimeManager = ArrangeRebusLifetimeManager(fakeBus); await hubLifetimeManager.OnConnectedAsync(connection).OrTimeout(); var addToGroupCommand = new AddToGroup <TestHub>("localhost", "group", connection.ConnectionId); var addToGroupHandler = new AddToGroupHandler <TestHub>(hubLifetimeManager, fakeBus); await addToGroupHandler.Handle(addToGroupCommand); Assert.True(hubLifetimeManager.GroupConnections.TryGetValue(addToGroupCommand.GroupName, out var groupStore)); Assert.True(groupStore.GetEnumerator().ToEnumerable().Contains(connection)); var ackReply = fakeBus.Events.OfType <ReplyMessageSent>().Select(m => m.ReplyMessage).OfType <Ack <TestHub> >().FirstOrDefault(); Assert.NotNull(ackReply); Assert.AreEqual(hubLifetimeManager.ServerName, ackReply.ServerName); }
public async Task AddToGroupHandlerHandle_WhenConnectionDoesntExist_LeavesGroupStoreUntouched() { using var client = new TestClient(); var connection = HubConnectionContextUtils.Create(connection: client.Connection); var fakeBus = new FakeBus(); var hubLifetimeManager = ArrangeRebusLifetimeManager(fakeBus); var addToGroupCommand = new AddToGroup <TestHub>("localhost", "group", connection.ConnectionId); var addToGroupHandler = new AddToGroupHandler <TestHub>(hubLifetimeManager, fakeBus); await addToGroupHandler.Handle(addToGroupCommand); Assert.False(hubLifetimeManager.GroupConnections.TryGetValue(addToGroupCommand.GroupName, out _)); }