public async Task <ActionResult> Reply(MessageReplyViewModel message) { if (!ModelState.IsValid) { PreventSpamAttribute.Reset(HttpContext); if (Request.IsAjaxRequest()) { return(new JsonResult(CommandResponse.FromStatus(Status.Invalid, ModelState.GetFirstErrorMessage()))); } else { return(View()); } } if (message.ID <= 0) { return(RedirectToAction("Sent", "Messages")); } var cmd = new SendMessageReplyCommand(message.ID, message.Body).SetUserContext(User); var response = await cmd.Execute(); return(JsonResult(response)); }
public void TestInitialize() { //create user inbox Message message = null; TestHelper.SetPrincipal(userName); var msg = "1"; var cmd = new SendMessageCommand(new Domain.Models.SendMessage() { Subject = "Chain", Recipient = "TestUser1", Message = msg }); var response = cmd.Execute().Result; Assert.IsTrue(response.Success, "Expecting true on send"); Assert.IsNotNull(response.Response, "Expecting non-null response"); message = response.Response; messages.Add(message); TestHelper.SetPrincipal("TestUser1"); msg = "1.1"; var cmdReply = new SendMessageReplyCommand(message.ID, msg); var responseReply = cmdReply.Execute().Result; Assert.IsTrue(responseReply.Success, "Expecting true on send"); Assert.IsNotNull(responseReply.Response, "Expecting non-null response"); message = responseReply.Response; messages.Add(message); TestHelper.SetPrincipal(userName); msg = "1.1.1"; cmdReply = new SendMessageReplyCommand(message.ID, msg); responseReply = cmdReply.Execute().Result; Assert.IsTrue(responseReply.Success, "Expecting true on send"); Assert.IsNotNull(responseReply.Response, "Expecting non-null response"); message = responseReply.Response; messages.Add(message); TestHelper.SetPrincipal("TestUser1"); msg = "1.1.1.1"; cmdReply = new SendMessageReplyCommand(message.ID, msg); responseReply = cmdReply.Execute().Result; Assert.IsTrue(responseReply.Success, "Expecting true on send"); Assert.IsNotNull(responseReply.Response, "Expecting non-null response"); message = responseReply.Response; messages.Add(message); }
public async Task <ActionResult> Reply(MessageReplyViewModel message) { if (!ModelState.IsValid) { PreventSpamAttribute.Reset(); if (Request.IsAjaxRequest()) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ModelState.GetFirstErrorMessage())); } else { return(View()); } } if (message.ID <= 0) { return(RedirectToAction("Sent", "Messages")); } var cmd = new SendMessageReplyCommand(message.ID, message.Body); var response = await cmd.Execute(); if (response.Success) { if (Request.IsAjaxRequest()) { return(new HttpStatusCodeResult(HttpStatusCode.OK)); } else { return(RedirectToAction("Sent", "Messages")); } } else { if (Request.IsAjaxRequest()) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, response.Message)); } else { ModelState.AddModelError(string.Empty, response.Message); return(View()); } } }
public async Task SendMessageReply_ToCommentRelatedMention() { //create a comment and ping another user aka comment mention var user = TestHelper.SetPrincipal("TestUser14"); var c = new CreateCommentCommand(1, null, "This is my comment @TestUser15, do you like it?").SetUserContext(user); var r = await c.Execute(); VoatAssert.IsValid(r); //read ping message and reply to it using message gateway var userName = "******"; user = TestHelper.SetPrincipal(userName); var mq = new Domain.Query.QueryMessages(user, MessageTypeFlag.CommentMention, MessageState.Unread).SetUserContext(user); var messages = await mq.ExecuteAsync(); Assert.IsTrue(messages.Any(), "Didn't return any messages"); var m = messages.FirstOrDefault(x => x.CommentID == r.Response.ID); Assert.IsNotNull(m, "Cant find message"); var content = "I reply to you from messages"; var cmd = new SendMessageReplyCommand(m.ID, content).SetUserContext(user); var response = await cmd.Execute(); VoatAssert.IsValid(response); //ensure comment exists in thread as message gateway should submit a comment based on message type and info using (var db = new VoatDataContext()) { var record = (from x in db.Comment where x.SubmissionID == m.SubmissionID.Value && x.ParentID == m.CommentID.Value && x.Content == content && x.UserName == userName select x).FirstOrDefault(); Assert.IsNotNull(record, "Can not find message in database"); } }
public override void ClassInitialize() { var user2 = "TestUser01"; //create user inbox Message message = null; var user = TestHelper.SetPrincipal(userName); var msg = "1"; var cmd = new SendMessageCommand(new Domain.Models.SendMessage() { Subject = "Chain", Recipient = "TestUser01", Message = msg }).SetUserContext(user); var response = cmd.Execute().Result; VoatAssert.IsValid(response); message = response.Response; messages.Add(message); user = TestHelper.SetPrincipal(user2); //Find message var query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user); var inbox = query.Execute(); VoatAssert.IsValid(inbox); message = inbox.FirstOrDefault(x => x.Sender == USERNAMES.User50CCP && x.Content == msg); Assert.IsNotNull(message, "Can not find message in recipient inbox 1"); msg = "1.1"; var cmdReply = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user); var responseReply = cmdReply.Execute().Result; VoatAssert.IsValid(responseReply); messages.Add(message); user = TestHelper.SetPrincipal(userName); //Find message query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user); inbox = query.Execute(); VoatAssert.IsValid(inbox); message = inbox.FirstOrDefault(x => x.Sender == user2 && x.Content == msg); Assert.IsNotNull(message, "Can not find message in recipient inbox 2"); msg = "1.1.1"; cmdReply = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user); responseReply = cmdReply.Execute().Result; VoatAssert.IsValid(responseReply); message = responseReply.Response; messages.Add(message); user = TestHelper.SetPrincipal(user2); //Find message query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user); inbox = query.Execute(); VoatAssert.IsValid(inbox); message = inbox.FirstOrDefault(x => x.Sender == USERNAMES.User50CCP && x.Content == msg); Assert.IsNotNull(message, "Can not find message in recipient inbox 3"); msg = "1.1.1.1"; cmdReply = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user); responseReply = cmdReply.Execute().Result; VoatAssert.IsValid(responseReply); message = responseReply.Response; messages.Add(message); }
public async Task SendPrivateMessageReply() { var id = Guid.NewGuid().ToString(); var sender = "User100CCP"; var recipient = "anon"; TestHelper.SetPrincipal(sender); var message = new Domain.Models.SendMessage() { //Sender = User.Identity.Name, Recipient = recipient, Subject = id, Message = id }; var cmd = new SendMessageCommand(message); var response = await cmd.Execute(); var firstMessage = response.Response; Assert.IsNotNull(response, "Response is null"); Assert.IsTrue(response.Success, response.Status.ToString()); //Ensure first msg is in db using (var db = new voatEntities()) { var record = (from x in db.Messages where x.Recipient == recipient && x.Sender == sender && x.Title == id && x.Content == id && x.Subverse == null && x.CommentID == null && x.SubmissionID == null && x.Type == (int)Domain.Models.MessageType.Sent //&& x.Direction == (int)Domain.Models.MessageDirection.OutBound select x).FirstOrDefault(); Assert.IsNotNull(record, "Can not find outbound in database"); record = (from x in db.Messages where x.Recipient == recipient && x.Sender == sender && x.Title == id && x.Content == id && x.Subverse == null && x.CommentID == null && x.SubmissionID == null && x.Type == (int)Domain.Models.MessageType.Private //&& x.Direction == (int)Domain.Models.MessageDirection.InBound select x).FirstOrDefault(); } TestHelper.SetPrincipal(recipient); var replyCmd = new SendMessageReplyCommand(firstMessage.ID, $"Reply to {firstMessage.ID.ToString()}"); var replyResponse = await replyCmd.Execute(); var replyMessage = replyResponse.Response; Assert.AreEqual(firstMessage.ID, replyMessage.ParentID); }
public async Task SendPrivateMessageReply() { var id = Guid.NewGuid().ToString(); var sender = USERNAMES.User100CCP; var recipient = "anon"; var user = TestHelper.SetPrincipal(sender); var message = new Domain.Models.SendMessage() { //Sender = User.Identity.Name, Recipient = recipient, Subject = id, Message = id }; var cmd = new SendMessageCommand(message).SetUserContext(user); var response = await cmd.Execute(); VoatAssert.IsValid(response); var firstMessage = response.Response; var idToRespondTo = 0; //Ensure first msg is in db using (var db = new VoatDataContext()) { var record = (from x in db.Message where x.Recipient == recipient && x.Sender == sender && x.Title == id && x.Content == id && x.Subverse == null && x.CommentID == null && x.SubmissionID == null && x.Type == (int)Domain.Models.MessageType.Sent //&& x.Direction == (int)Domain.Models.MessageDirection.OutBound select x).FirstOrDefault(); Assert.IsNotNull(record, "Can not find sent in database"); record = (from x in db.Message where x.Recipient == recipient && x.Sender == sender && x.Title == id && x.Content == id && x.Subverse == null && x.CommentID == null && x.SubmissionID == null && x.Type == (int)Domain.Models.MessageType.Private //&& x.Direction == (int)Domain.Models.MessageDirection.InBound select x).FirstOrDefault(); Assert.IsNotNull(record, "Can not find message in database"); idToRespondTo = record.ID; } //reply user = TestHelper.SetPrincipal(recipient); var replyCmd = new SendMessageReplyCommand(idToRespondTo, $"Reply to {idToRespondTo.ToString()}").SetUserContext(user); var replyResponse = await replyCmd.Execute(); VoatAssert.IsValid(replyResponse); var replyMessage = replyResponse.Response; Assert.AreEqual(idToRespondTo, replyMessage.ParentID); }