public async Task SendGroupExceptAsync_PublishesGroupCommandToBusAndHandlerSkipsExcludedConnection() { 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 groupName = "Group"; await hubLifetimeManager.SendGroupExceptAsync(groupName, "Hello", new object[] { "World" }, new List <string>(new[] { connection.ConnectionId }).AsReadOnly()); var publishedEvent = fakeBus.Events.OfType <MessagePublished>().Select(m => m.EventMessage).OfType <Group <TestHub> >().FirstOrDefault(); Assert.NotNull(publishedEvent); Assert.True(publishedEvent.ExcludedConnectionIds?.Length == 1 && publishedEvent.ExcludedConnectionIds[0] == connection.ConnectionId); var groupHandler = new GroupHandler <TestHub>(hubLifetimeManager, NullLogger <GroupHandler <TestHub> > .Instance); hubLifetimeManager.AddToGroupLocal(connection, groupName); await groupHandler.Handle(publishedEvent); var message = client.TryRead() as InvocationMessage; Assert.Null(message); }
public async Task SendGroupAsync_PublishesGroupCommandToBusAndHandlerWritesInvocationToClient() { 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 groupName = "Group"; await hubLifetimeManager.SendGroupAsync(groupName, "Hello", new object[] { "World" }); var publishedEvent = fakeBus.Events.OfType <MessagePublished>().Select(m => m.EventMessage).OfType <Group <TestHub> >().FirstOrDefault(); Assert.NotNull(publishedEvent); Assert.Null(publishedEvent.ExcludedConnectionIds); var groupHandler = new GroupHandler <TestHub>(hubLifetimeManager, NullLogger <GroupHandler <TestHub> > .Instance); hubLifetimeManager.AddToGroupLocal(connection, groupName); await groupHandler.Handle(publishedEvent); var message = client.TryRead() as InvocationMessage; Assert.NotNull(message); Assert.AreEqual("Hello", message.Target); Assert.AreEqual(1, message.Arguments.Length); Assert.AreEqual("World", (string)message.Arguments[0]); }
public async Task <IActionResult> Create([FromBody] CreateGroupInput input) { var result = _handler.Handle(input); return(await ApiResponse(result)); }