コード例 #1
0
        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);
        }
コード例 #2
0
        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]);
        }
コード例 #3
0
        public async Task <IActionResult> Create([FromBody] CreateGroupInput input)
        {
            var result = _handler.Handle(input);

            return(await ApiResponse(result));
        }