public async Task RemoveFromGroupHandlerHandle_WhenConnectionExists_RemovesConnectionFromGroupStoreAndRepliesToBus() { 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 removeFromGroupCommand = new RemoveFromGroup <TestHub>("localhost", "group", connection.ConnectionId); hubLifetimeManager.AddToGroupLocal(connection, removeFromGroupCommand.GroupName); var removeFromGroupHandler = new RemoveFromGroupHandler <TestHub>(hubLifetimeManager, fakeBus); await removeFromGroupHandler.Handle(removeFromGroupCommand); Assert.True(hubLifetimeManager.GroupConnections.TryGetValue(removeFromGroupCommand.GroupName, out var groupStore)); Assert.False(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 Return_failed_result_when_validation_fails() { // Arrange var validator = Substitute.For <IValidateRequest <RemoveFromGroup> >(); validator .IsValidAsync(Arg.Any <RemoveFromGroup>()) .Returns(Task.FromResult(false)); var sut = new RemoveFromGroupHandler(validator, _dbContext); // Act var result = await sut.Handle(new RemoveFromGroup("a-sub", Guid.NewGuid(), Guid.NewGuid()), CancellationToken.None); // Assert result.IsFailure.ShouldBeTrue(); }
public async Task RemoveFromGroupHandlerHandle_WhenConnectionDoesntExist_LeavesGroupStoreUntouched() { using var client = new TestClient(); var connection = HubConnectionContextUtils.Create(connection: client.Connection); var fakeBus = new FakeBus(); var hubLifetimeManager = ArrangeRebusLifetimeManager(fakeBus); var removeFromGroupCommand = new RemoveFromGroup <TestHub>("localhost", "group", connection.ConnectionId); var removeFromGroupHandler = new RemoveFromGroupHandler <TestHub>(hubLifetimeManager, fakeBus); await removeFromGroupHandler.Handle(removeFromGroupCommand); Assert.False(hubLifetimeManager.GroupConnections.TryGetValue(removeFromGroupCommand.GroupName, out _)); }