// 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)); }
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); }
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); }