예제 #1
0
        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);
        }
예제 #2
0
        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 _));
        }