예제 #1
0
        // POST api/<controller>
        public async Task <IHttpActionResult> Post([FromBody] Chat chat)
        {
            if (chat == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            chat.RequestTime = DateTime.UtcNow;
            bool result = await _chatService.PlaceChat(chat);

            if (result)
            {
                if (chat.MessPosition == ChatPosition.FromUser)
                {
                    var newChat = await _chatService.GetChat(chat.ChatId);

                    await AdminChatHub.NewMessage(newChat);
                }
                else
                {
                    await ChatHub.NewMessage(chat);
                }
            }
            return(Ok(result));
        }
예제 #2
0
        public async Task NewMessage_Success_NotifyMessageGroupUsersConnection()
        {
            var testGroup = new Group {
                Id = TestGroupId, Users = TestUsersGroup
            };
            var testPayload = new UserWssPayload
            {
                NewMessage = TestNewMessage,
                GroupId    = TestGroupId
            };

            _chatServiceMock
            .Setup(s => s.AddMessageAsync(
                       It.Is <GroupMessage>(m => m.Content == TestNewMessage),
                       TestGroupId))
            .Returns(Task.CompletedTask);
            _chatServiceMock
            .Setup(s => s.GetGroupAsync(TestGroupId))
            .ReturnsAsync(testGroup);

            await _target.NewMessage(testPayload);

            // message integrity should be tested in e2e instead
            AssertMessageSentToGroupUsersConnection(ChatHub.NewMessageMessage, content => true);
        }
예제 #3
0
        public async Task ChatHub_OnConnect_ShouldReturnMessage()
        {
            Mock <IHubCallerClients> mockClients     = new Mock <IHubCallerClients>();
            Mock <IClientProxy>      mockClientProxy = new Mock <IClientProxy>();

            mockClients.Setup(clients => clients.All).Returns(mockClientProxy.Object);

            ChatHub hub = new ChatHub()
            {
                Clients = mockClients.Object
            };

            await hub.NewMessage(1, "message");

            mockClients.Verify(clients => clients.All, Times.Once);

            mockClientProxy.Verify(clientProxy => clientProxy.SendCoreAsync(
                                       "messageReceived",
                                       It.Is <object[]>(o => o != null && o.Length == 1 && ((object[])o[0]).Length == 2),
                                       default(CancellationToken)),
                                   Times.Once);
        }