Ejemplo n.º 1
0
        public async Task Can_send_messages()
        {
            var text            = AutoFixture.Create <string>();
            var messageReceived = new AutoResetEvent(false);

            RocketMessage message = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                message = rocketMessage;
                messageReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            // Act
            var result = await _fixture.Master.Driver.SendMessageAsync(text, _fixture.RoomId);

            messageReceived.WaitOne(_timeout);

            // Assert
            result.HasError.Should().BeFalse();
            message.Should().NotBeNull();
            result.Result.ToString().Should().Be(message.ToString());
        }
Ejemplo n.º 2
0
        public void When_bot_is_mentioned_set_flag()
        {
            var rocketMessage = AutoFixture.Build <RocketMessage>()
                                .Create();
            var payload = new
            {
                id         = AutoFixture.Create <string>(),
                msg        = "added",
                collection = "stream-messages",
                fields     = new
                {
                    args = new object[]
                    {
                        AutoFixture.Create <string>(),
                        rocketMessage
                    }
                }
            };

            RocketMessage result = null;

            _driver.MessageReceived += message => result = message;

            // Act
            _mockClient.DataReceivedRaw += Raise.Event <DataReceived>(payload.msg, JObject.FromObject(payload));

            // Assert
            result.Should().NotBeNull();
            result.Message.Should().Be(rocketMessage.Message);
        }
Ejemplo n.º 3
0
        public async Task When_sending_messages_bot_flag_should_be_set()
        {
            var text            = AutoFixture.Create <string>();
            var messageReceived = new AutoResetEvent(false);

            RocketMessage message = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                message = rocketMessage;
                messageReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            // Act
            await _fixture.Master.Driver.SendMessageAsync(text, _fixture.RoomId);

            messageReceived.WaitOne(_timeout);

            // Assert
            message.Should().NotBeNull();
            message.IsBot.Should().BeTrue();
        }
Ejemplo n.º 4
0
        public async Task Messages_received_should_populate_created_by()
        {
            var text            = AutoFixture.Create <string>();
            var messageReceived = new AutoResetEvent(false);

            RocketMessage message = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                message = rocketMessage;
                messageReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            var userId = ((RocketChatDriver)_fixture.Master.Driver).UserId;

            // Act
            await _fixture.Master.Driver.SendMessageAsync(text, _fixture.RoomId);

            messageReceived.WaitOne(_timeout);

            // Assert
            message.Should().NotBeNull();
            message.CreatedBy.Id.Should().Be(userId);
            message.CreatedBy.Username.Should().Be(Constants.OneUsername);
        }
Ejemplo n.º 5
0
        public async Task When_message_is_sent_set_room_property()
        {
            var text = AutoFixture.Create <string>();

            var           masterReceived = new AutoResetEvent(false);
            RocketMessage masterMessage  = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                masterMessage = rocketMessage;
                masterReceived.Set();
            };

            var           slaveReceived = new AutoResetEvent(false);
            RocketMessage slaveMessage  = null;

            _fixture.Slave.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                slaveMessage = rocketMessage;
                slaveReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            await _fixture.Slave.InitAsync(Constants.TwoUsername, Constants.TwoPassword);

            await _fixture.Master.Driver.SubscribeToRoomListAsync();

            await _fixture.Slave.Driver.SubscribeToRoomListAsync();

            // Act
            await _fixture.Master.Driver.SendMessageAsync(text, _fixture.RoomId);

            masterReceived.WaitOne(_timeout);
            slaveReceived.WaitOne(_timeout);

            // Assert
            masterMessage.Should().NotBeNull();
            masterMessage.Room.Should().NotBeNull();

            slaveMessage.Should().NotBeNull();
            slaveMessage.Room.Should().BeNull(); // User is not apart of this room, should be null
        }
Ejemplo n.º 6
0
        public async Task When_bot_sends_message_on_receive_set_myself_flag()
        {
            var text = AutoFixture.Create <string>() + " @" + Constants.OneUsername;

            var           masterReceived = new AutoResetEvent(false);
            RocketMessage masterMessage  = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                masterMessage = rocketMessage;
                masterReceived.Set();
            };

            var           slaveReceived = new AutoResetEvent(false);
            RocketMessage slaveMessage  = null;

            _fixture.Slave.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                slaveMessage = rocketMessage;
                slaveReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            await _fixture.Slave.InitAsync(Constants.TwoUsername, Constants.TwoPassword);

            // Act
            await _fixture.Master.Driver.SendMessageAsync(text, _fixture.RoomId);

            masterReceived.WaitOne(_timeout);
            slaveReceived.WaitOne(_timeout);

            // Assert
            masterMessage.Should().NotBeNull();
            masterMessage.IsFromMyself.Should().BeTrue();

            slaveMessage.Should().NotBeNull();
            slaveMessage.IsFromMyself.Should().BeFalse();
        }
Ejemplo n.º 7
0
        public async Task Can_send_attachment()
        {
            var attachment = AutoFixture.Build <Attachment>()
                             .Without(x => x.Timestamp)
                             .Create();

            var messageReceived = new AutoResetEvent(false);

            RocketMessage message = null;

            _fixture.Master.Driver.MessageReceived += rocketMessage =>
            {
                if (rocketMessage.RoomId != _fixture.RoomId)
                {
                    return;
                }
                message = rocketMessage;
                messageReceived.Set();
            };

            await _fixture.Master.InitAsync(Constants.OneUsername, Constants.OnePassword);

            // Act
            var result = await _fixture.Master.Driver.SendCustomMessageAsync(attachment, _fixture.RoomId);

            messageReceived.WaitOne(_timeout);

            // Assert
            result.HasError.Should().BeFalse();
            message.Should().NotBeNull();
            message.Message.Should().BeEmpty();
            message.Attachments.Should().HaveCount(1);

            var resultAttachment = message.Attachments.First();

            resultAttachment.Should().Be(attachment);
        }