public void TestSendSmsMessages_InboundNotificationCreated() { string testStr = "{\"application\": { \"name\": \"Test Project 1\" }, \"build\": { \"commit\": { \"id\": \"" + Guid.NewGuid() + "\", \"message\": \"Implement foo\" }, \"status\": \"succeeded\" } }"; var o = JsonConvert.DeserializeObject <Notification>(testStr); TestTweetHarborDbContext db = new TestTweetHarborDbContext(); var m = new Mock <ITweetHarborTextMessageService>(); m.Setup(a => a.SendText("", "")); var user = UserHelper.ArrangeNewUserDefault(); db.Users.Add(user); var proj = new Project() { ProjectName = o.application.name, SendPrivateTweetOnFailure = true, SendPrivateTweetOnSuccess = true, SendPublicTweetOnFailure = false, SendPublicTweetOnSuccess = true, SendTextOnSuccess = true, SendTextOnFailure = false, User = user }; user.Projects.Add(proj); db.Projects.Add(proj); var tmr = new TextMessageRecipient() { Name = "App Test", PhoneNumber = "5201235678", }; proj.TextMessageRecipients.Add(tmr); var controller = new NotifyController(db, new TestTweetHarborTwitterService(), m.Object); var res = controller.New(user.UserName, user.UniqueId, o); Assert.IsInstanceOfType(res, typeof(JsonResult)); Assert.IsInstanceOfType((res as JsonResult).Data, typeof(JsonResultModel)); Assert.AreEqual(true, ((res as JsonResult).Data as JsonResultModel).Success); Assert.AreNotEqual(0, proj.ProjectNotifications.Count); Assert.AreNotEqual(0, proj.ProjectNotifications.First().Build.commit.message.Length); }
public JsonResult AddMessageRecipient(string Id, string value, string Type) { if (null != HttpContext) { if (!string.IsNullOrEmpty(value.Trim())) { var prj = database.Projects.Include("MessageRecipients").Include("TextMessageRecipients").FirstOrDefault(p => p.User.TwitterUserName == HttpContext.User.Identity.Name && p.ProjectName == Id); if (null != prj) { switch (Type) { case "Twitter": case "MessageRecipients": value = value.Replace("@", "").Trim(); if (prj.MessageRecipients.FirstOrDefault(m => m.ScreenName == value) == null) { prj.MessageRecipients.Add(new TwitterMessageRecipient() { ScreenName = value }); database.SaveChanges(); return Json(new { Success = true }); } else { return Json(new JsonResultModel() { Success = false, Error = "That user is already a message recipient" }); } break; case "SMS": case "TextMessageRecipients": value = value.Replace("-", "").Trim(); if (prj.TextMessageRecipients.FirstOrDefault(m => m.PhoneNumber == value) == null) { var tmr = database.TextMessageRecipients.FirstOrDefault(f => f.PhoneNumber == value); if (null == tmr) tmr = new TextMessageRecipient() { PhoneNumber = value }; prj.TextMessageRecipients.Add(tmr); try { database.SaveChanges(); } catch (DbEntityValidationException e) { return Json(new JsonResultModel() { Error = e.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage, Success = false }); } return Json(new { Success = true }); } else { return Json(new JsonResultModel() { Success = false, Error = "That number is already an SMS recipient" }); } break; } } else { return Json(new { Error = "Project Not Found", Success = false }); } } else { if (Type == "MessageRecipients") { return Json(new JsonResultModel() { Success = false, Error = "Please provide a Twitter screen name" }); } else { return Json(new JsonResultModel() { Success = false, Error = "Please provide a valid phone number including area code" }); } } } return Json(new { Error = "Something", Success = false }); }
public JsonResult AddMessageRecipient(string Id, string value, string Type) { if (null != HttpContext) { if (!string.IsNullOrEmpty(value.Trim())) { var prj = database.Projects.Include("MessageRecipients").Include("TextMessageRecipients").FirstOrDefault(p => p.User.UserName == HttpContext.User.Identity.Name && p.ProjectName == Id); if (null != prj) { switch (Type) { case "Twitter": case "MessageRecipients": value = value.Replace("@", "").Trim(); if (prj.MessageRecipients.FirstOrDefault(m => m.ScreenName == value) == null) { prj.MessageRecipients.Add(new TwitterMessageRecipient() { ScreenName = value }); database.SaveChanges(); return(Json(new { Success = true })); } else { return(Json(new JsonResultModel() { Success = false, Error = "That user is already a message recipient" })); } break; case "SMS": case "TextMessageRecipients": value = value.Replace("-", "").Trim(); if (prj.TextMessageRecipients.FirstOrDefault(m => m.PhoneNumber == value) == null) { var tmr = database.TextMessageRecipients.FirstOrDefault(f => f.PhoneNumber == value); if (null == tmr) { tmr = new TextMessageRecipient() { PhoneNumber = value } } ; prj.TextMessageRecipients.Add(tmr); try { database.SaveChanges(); } catch (DbEntityValidationException e) { return(Json(new JsonResultModel() { Error = e.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage, Success = false })); } return(Json(new { Success = true })); } else { return(Json(new JsonResultModel() { Success = false, Error = "That number is already an SMS recipient" })); } break; } } else { return(Json(new { Error = "Project Not Found", Success = false })); } } else { if (Type == "MessageRecipients") { return(Json(new JsonResultModel() { Success = false, Error = "Please provide a Twitter screen name" })); } else { return(Json(new JsonResultModel() { Success = false, Error = "Please provide a valid phone number including area code" })); } } } return(Json(new { Error = "Something", Success = false })); }
public void TestSendSmsMessages_OutboundNotificationCreated() { string testStr = "{\"application\": { \"name\": \"Test Project 1\" }, \"build\": { \"commit\": { \"id\": \"" + Guid.NewGuid() + "\", \"message\": \"Implement foo\" }, \"status\": \"succeeded\" } }"; var o = JsonConvert.DeserializeObject<Notification>(testStr); TestTweetHarborDbContext db = new TestTweetHarborDbContext(); var m = new Mock<ITweetHarborTextMessageService>(); m.Setup(a => a.SendText("", "")); var user = new User() { EmailAddress = "*****@*****.**", OAuthToken = "<FakeOauthToken>", OAuthTokenSecret = "<FakeOauthTokenSecret>", UniqueId = "db7a3a64156d0b33beae93fe99ca599e", SendPrivateTweet = true, SendPublicTweet = false, TwitterUserName = "******", SendSMS = true }; db.Users.Add(user); var proj = new Project() { ProjectName = o.application.name, SendPrivateTweetOnFailure = true, SendPrivateTweetOnSuccess = true, SendPublicTweetOnFailure = false, SendPublicTweetOnSuccess = true, SendTextOnSuccess = true, SendTextOnFailure = false, User = user }; user.Projects.Add(proj); db.Projects.Add(proj); var tmr = new TextMessageRecipient() { Name = "App Test", PhoneNumber = "5201235678", }; proj.TextMessageRecipients.Add(tmr); var dmr = new TwitterMessageRecipient() { ScreenName = "testuser", }; proj.MessageRecipients.Add(dmr); var controller = new NotifyController(db, new TestTweetHarborTwitterService(), m.Object); var res = controller.New(user.TwitterUserName, user.UniqueId, o); Assert.IsInstanceOfType(res, typeof(JsonResult)); Assert.IsInstanceOfType((res as JsonResult).Data, typeof(JsonResultModel)); Assert.AreEqual(true, ((res as JsonResult).Data as JsonResultModel).Success); Assert.AreNotEqual(0, proj.OutboundNotifications.Count); Assert.AreNotEqual(0, proj.OutboundNotifications.First().Message.Length); Assert.AreEqual(2, proj.OutboundNotifications.Count); var nots = proj.OutboundNotifications.OrderBy(pj => pj.NotificationType); Assert.AreEqual("SMS", nots.First().NotificationType); Assert.AreEqual("5201235678", nots.First().Recipient); Assert.AreEqual("Twitter", nots.ElementAt(1).NotificationType); Assert.AreEqual(dmr.ScreenName, nots.ElementAt(1).Recipient); }
public void TestSendSmsMessages_InboundNotificationCreated() { string testStr = "{\"application\": { \"name\": \"Test Project 1\" }, \"build\": { \"commit\": { \"id\": \"" + Guid.NewGuid() + "\", \"message\": \"Implement foo\" }, \"status\": \"succeeded\" } }"; var o = JsonConvert.DeserializeObject<Notification>(testStr); TestTweetHarborDbContext db = new TestTweetHarborDbContext(); var m = new Mock<ITweetHarborTextMessageService>(); m.Setup(a => a.SendText("", "")); var user = UserHelper.ArrangeNewUserDefault(); db.Users.Add(user); var proj = new Project() { ProjectName = o.application.name, SendPrivateTweetOnFailure = true, SendPrivateTweetOnSuccess = true, SendPublicTweetOnFailure = false, SendPublicTweetOnSuccess = true, SendTextOnSuccess = true, SendTextOnFailure = false, User = user }; user.Projects.Add(proj); db.Projects.Add(proj); var tmr = new TextMessageRecipient() { Name = "App Test", PhoneNumber = "5201235678", }; proj.TextMessageRecipients.Add(tmr); var controller = new NotifyController(db, new TestTweetHarborTwitterService(), m.Object); var res = controller.New(user.UserName, user.UniqueId, o); Assert.IsInstanceOfType(res, typeof(JsonResult)); Assert.IsInstanceOfType((res as JsonResult).Data, typeof(JsonResultModel)); Assert.AreEqual(true, ((res as JsonResult).Data as JsonResultModel).Success); Assert.AreNotEqual(0, proj.ProjectNotifications.Count); Assert.AreNotEqual(0, proj.ProjectNotifications.First().Build.commit.message.Length); }