Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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 _));
        }