private void SeedChannels(MessagesDbContext context)
 {
     var channel = new Channel()
     {
         Name = "Channel1"
     };
     context.Channels.Add(channel);
     context.SaveChanges();
     //var message = new ChannelMessage()
     //{
     //    Text = "New message",
     //    DateSent = DateTime.Now,
     //    Sender = context.Users.FirstOrDefault(),
     //    Channel = channel
     //};
     //context.ChannelMessages.Add(message);
     //context.SaveChanges();
     var channel2 = new Channel()
         {
             Name = "Channel2",
             ChannelMessages = new HashSet<ChannelMessage>()
         };
     context.Channels.Add(channel2);
     context.SaveChanges();
 }
        public IHttpActionResult PutChannel(int id, Channel channel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (channel == null)
            {
                return(BadRequest());
            }

            var dbChannel = db.Channels.Find(id);

            if (dbChannel == null)
            {
                return(NotFound());
            }

            if (db.Channels.Any(c => c.Name == channel.Name && c.Id != id))
            {
                return(Conflict());
            }

            dbChannel.Name = channel.Name;
            db.SaveChanges();
            return(this.Ok(new
            {
                Message = "Channel #" + dbChannel.Id + " edited successfully."
            }));
        }
Пример #3
0
        public IHttpActionResult PutChannel(int id, Channel channel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != channel.Id)
            {
                return(BadRequest());
            }

            //db.Entry(channel).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ChannelExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Пример #4
0
        private static void ClearDatabase()
        {
            var context = new MessagesDbContext();

            context.Channels.Delete();
            context.SaveChanges();
        }
        public void DeleteChannel_WhenIsExistingAndNonEmpty_ShoulReturn409()
        {
            // Arrange -> create a channel
            TestingEngine.CleanDatabase();

            MessagesDbContext dbContext = new MessagesDbContext();
            var existingChannel = new Channel()
            {
                Name = "Existing Channel"
            };
            existingChannel.ChannelMessages.Add(new ChannelMessage()
            {
                Id = 11,
                Text = "Some text",
                DateSent = DateTime.Now,
                Sender = null
            });
            dbContext.Channels.Add(existingChannel);
            dbContext.SaveChanges();

            // Act -> delete the channel
            var httpDeleteResponse = TestingEngine.HttpClient.DeleteAsync(
                "/api/channels/" + existingChannel.Id).Result;

            // Assert -> HTTP status code is 409
            Assert.AreEqual(HttpStatusCode.Conflict, httpDeleteResponse.StatusCode);
            var result = httpDeleteResponse.Content.ReadAsStringAsync().Result;
            Assert.IsNotNull(result);
            Assert.AreEqual(1, dbContext.Channels.Count());
        }
Пример #6
0
        public void SendMessage(Message message)
        {
            _context.Messages.Add(message);
            _context.SaveChanges();

            SendMessageAsync(message);
        }
        public void DeleteChannel_WhenIsExistingAndNonEmpty_ShoulReturn409()
        {
            // Arrange -> create a channel
            TestingEngine.CleanDatabase();

            MessagesDbContext dbContext = new MessagesDbContext();
            var existingChannel         = new Channel()
            {
                Name = "Existing Channel"
            };

            existingChannel.ChannelMessages.Add(new ChannelMessage()
            {
                Id       = 11,
                Text     = "Some text",
                DateSent = DateTime.Now,
                Sender   = null
            });
            dbContext.Channels.Add(existingChannel);
            dbContext.SaveChanges();

            // Act -> delete the channel
            var httpDeleteResponse = TestingEngine.HttpClient.DeleteAsync(
                "/api/channels/" + existingChannel.Id).Result;

            // Assert -> HTTP status code is 409
            Assert.AreEqual(HttpStatusCode.Conflict, httpDeleteResponse.StatusCode);
            var result = httpDeleteResponse.Content.ReadAsStringAsync().Result;

            Assert.IsNotNull(result);
            Assert.AreEqual(1, dbContext.Channels.Count());
        }
Пример #8
0
        public IHttpActionResult PostChannelMessage(string channelName, [FromBody] ChannelMessageBindingModel channelMessageModel)
        {
            var userId = User.Identity.GetUserId();

            var  channel = db.Channels.FirstOrDefault(c => c.Name == channelName);
            User user    = null;

            if (userId != null)
            {
                user = db.Users.Find(userId);
            }

            if (channel == null)
            {
                return(NotFound());
            }

            if (channelMessageModel == null)
            {
                return(BadRequest("Null text"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (user == null && userId != null)
            {
                return(Unauthorized());
            }

            var channelMessage = new ChannelMessage()
            {
                Text     = channelMessageModel.Text,
                DateSent = DateTime.Now,
                Sender   = user
            };

            channel.ChannelMessages.Add(channelMessage);

            db.SaveChanges();

            if (user == null)
            {
                return(this.Ok(new
                {
                    Id = channelMessage.Id,
                    Message = "Anonymous message sent to channel " + channel.Name + "."
                }));
            }

            return(this.Ok(new
            {
                Id = channelMessage.Id,
                Sender = user.UserName,
                Message = "Message sent to channel " + channel.Name + "."
            }));
        }
 public static void CleanDatabase()
 {
     using (var dbContext = new MessagesDbContext())
     {
         dbContext.ChannelMessages.Delete();
         dbContext.UserMessages.Delete();
         dbContext.Users.Delete();
         dbContext.Channels.Delete();
         dbContext.SaveChanges();
     }
 }
Пример #10
0
 public static void CleanDatabase()
 {
     using (var dbContext = new MessagesDbContext())
     {
         dbContext.ChannelMessages.Delete();
         dbContext.UserMessages.Delete();
         dbContext.Users.Delete();
         dbContext.Channels.Delete();
         dbContext.SaveChanges();
     }
 }
Пример #11
0
        protected void MessageButton_Click(object sender, EventArgs e)
        {
            var db = new MessagesDbContext();

            db.Messages.Add(new Message()
            {
                Date = DateTime.Now,
                Text = this.MessageText.Text
            });
            db.SaveChanges();

            this.MessageText.Text = string.Empty;

            this.DataBind();
        }
Пример #12
0
        public IHttpActionResult PostPersonalMessage([FromBody] UserMessageBindingModel userMessageModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (userMessageModel == null)
            {
                return(BadRequest());
            }

            if (string.IsNullOrEmpty(userMessageModel.Text))
            {
                return(BadRequest());
            }

            var recipient = db.Users.FirstOrDefault(u => u.UserName == userMessageModel.Recipient);

            if (recipient == null)
            {
                return(NotFound());
            }

            var userMessage = new UserMessage()
            {
                Text     = userMessageModel.Text,
                DateSent = DateTime.Now,
                Reciever = recipient,
                Sender   = null
            };

            db.UserMessages.Add(userMessage);
            db.SaveChanges();

            return(this.Ok(new
            {
                Id = userMessage.Id,
                Message = "Anonymous message sent successfully to user " + userMessageModel.Recipient + "."
            }));
        }
        public void DeleteChannel_WhenIsExisting_ShoulReturn200()
        {
            // Arrange -> create a channel
            TestingEngine.CleanDatabase();
            var existingChannel = new Channel() 
            {
                Name = "Existing Channel"
            };
            MessagesDbContext dbContext = new MessagesDbContext();
            dbContext.Channels.Add(existingChannel);
            dbContext.SaveChanges();

            // Act -> delete the channel
            var httpDeleteResponse = TestingEngine.HttpClient.DeleteAsync(
                "/api/channels/" + existingChannel.Id).Result;

            // Assert -> HTTP status code is 200
            Assert.AreEqual(HttpStatusCode.OK, httpDeleteResponse.StatusCode);
            var result = httpDeleteResponse.Content.ReadAsStringAsync().Result;
            Assert.IsNotNull(result);
            Assert.AreEqual(0, dbContext.Channels.Count());
        }
Пример #14
0
        private static void SeedChannels(MessagesDbContext context)
        {
            context.Channels.Add(new Channel()
            {
                Name            = "EmptyChannel",
                ChannelMessages = new List <ChannelMessage>()
            });
            context.Channels.Add(new Channel()
            {
                Name            = "ChannelWithMessages",
                ChannelMessages = new List <ChannelMessage>()
                {
                    new ChannelMessage()
                    {
                        Text     = "seedSeed",
                        DateSent = DateTime.Now,
                        Sender   = null
                    }
                }
            });

            context.SaveChanges();
        }
        public void DeleteChannel_WhenIsExisting_ShoulReturn200()
        {
            // Arrange -> create a channel
            TestingEngine.CleanDatabase();
            var existingChannel = new Channel()
            {
                Name = "Existing Channel"
            };
            MessagesDbContext dbContext = new MessagesDbContext();

            dbContext.Channels.Add(existingChannel);
            dbContext.SaveChanges();

            // Act -> delete the channel
            var httpDeleteResponse = TestingEngine.HttpClient.DeleteAsync(
                "/api/channels/" + existingChannel.Id).Result;

            // Assert -> HTTP status code is 200
            Assert.AreEqual(HttpStatusCode.OK, httpDeleteResponse.StatusCode);
            var result = httpDeleteResponse.Content.ReadAsStringAsync().Result;

            Assert.IsNotNull(result);
            Assert.AreEqual(0, dbContext.Channels.Count());
        }