public void ModifyExistingNews_NotNewsOwner_ValidData_ValidAccessToken_ShouldReturn_401Unathorized()
        {
            // Arrange
            this.Register();
            var loginData = this.Login();
            var dbNewsId = this.CreateNews(loginData);

            var secondRegistrationContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("username", "stefan1"),
                new KeyValuePair<string, string>("password", "stefan1"),
                new KeyValuePair<string, string>("confirmPassword", "stefan1"),
                new KeyValuePair<string, string>("email", "*****@*****.**")
            });

            var registrationHttpResponse = this.httpClient.PostAsync("api/account/register", secondRegistrationContent).Result;
            Assert.AreEqual(HttpStatusCode.OK, registrationHttpResponse.StatusCode);

            var loginContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("username", "stefan1"),
                new KeyValuePair<string, string>("password", "stefan1"),
                new KeyValuePair<string, string>("grant_type", "password")   
            });

            var loginHttpResponse = this.httpClient.PostAsync("api/account/login", loginContent).Result;
            var newLoginData = loginHttpResponse.Content.ReadAsAsync<LoginData>().Result;
            Assert.AreEqual(HttpStatusCode.OK, loginHttpResponse.StatusCode);

            var news = new EditNewsBindingModel
            {
                Title = "Edited title",
                Content = "Edited content",
                PublishDate = DateTime.Now
            };

            var newsContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("title", news.Title),
                new KeyValuePair<string, string>("content", news.Content),
                new KeyValuePair<string, string>("publishDate", news.PublishDate.ToString())
            });

            // Act
            this.httpClient.DefaultRequestHeaders.Add(
                   "Authorization", "Bearer " + newLoginData.Access_Token);
            var httpResponse = this.httpClient.PutAsync("api/news/" + dbNewsId, newsContent).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.Unauthorized, httpResponse.StatusCode);
        }
        public void ModifyExistingNews_ValidData_DuplicateTitle_ValidAccessToken_ShouldReturn_409Conflict()
        {
            // Arrange
            this.Register();
            var loginData = this.Login();
            this.CreateNews(loginData);

            var secondNews = new AddNewsBindingModel
            {
                Title = "Second news title",
                Content = "second news content",
                PublishDate = DateTime.Now
            };

            var secondNewsContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("title", secondNews.Title),
                new KeyValuePair<string, string>("content", secondNews.Content),
                new KeyValuePair<string, string>("publishDate", secondNews.PublishDate.ToString())
            });

            // Act
            this.httpClient.DefaultRequestHeaders.Add(
                   "Authorization", "Bearer " + loginData.Access_Token);
            var secondNewsHttpResponce = this.httpClient.PostAsync("api/news", secondNewsContent).Result;
            Assert.AreEqual(HttpStatusCode.Created, secondNewsHttpResponce.StatusCode);
            var newsId = secondNewsHttpResponce.Content.ReadAsAsync<NewsViewModel>().Result.Id;

            var editedNews = new EditNewsBindingModel
            {
                Title = "News title",
                Content = "Edited content",
                PublishDate = DateTime.Now
            };

            var editedNewsContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("title", editedNews.Title),
                new KeyValuePair<string, string>("content", editedNews.Content),
                new KeyValuePair<string, string>("publishDate", editedNews.PublishDate.ToString())
            });

            // Act
            var httpResponse = this.httpClient.PutAsync("api/news/" + newsId, editedNewsContent).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.Conflict, httpResponse.StatusCode);
        }
        public void ModifyNonExistingNews_ValidData_ValidAccessToken_ShouldReturn_404NotFound()
        {
            // Arrange
            this.Register();
            var loginData = this.Login();
            var news = new EditNewsBindingModel
            {
                Title = "Edited title",
                Content = "Edited content",
                PublishDate = DateTime.Now
            };

            var newsContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("title", news.Title),
                new KeyValuePair<string, string>("content", news.Content),
                new KeyValuePair<string, string>("publishDate", news.PublishDate.ToString())
            });

            // Act
            this.httpClient.DefaultRequestHeaders.Add(
                   "Authorization", "Bearer " + loginData.Access_Token);
            var httpResponse = this.httpClient.PutAsync("api/news/100", newsContent).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode);
        }
        public void ModifyExistingNews_ValidData_NoAccessToken_ShouldReturn_401Unauthorized()
        {
            // Arrange
            this.Register();
            var loginData = this.Login();
            var dbNewsId = this.CreateNews(loginData);
            var news = new EditNewsBindingModel
            {
                Title = "Edited title",
                Content = "Edited content",
                PublishDate = DateTime.Now
            };

            var newsContent = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("title", news.Title),
                new KeyValuePair<string, string>("content", news.Content),
                new KeyValuePair<string, string>("publishDate", news.PublishDate.ToString())
            });

            // Act
            var httpResponse = this.httpClient.PutAsync("api/news/" + dbNewsId, newsContent).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.Unauthorized, httpResponse.StatusCode);
        }