Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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 });
        }
Ejemplo n.º 3
0
        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 }));
        }
Ejemplo n.º 4
0
        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);
        }