public async Task Return_CorrectHttpStatusCodeResult_WhenUserIsNotTheOwnerOfTheFoundReviewAndIsNotAdmin() { // Arrange var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = new Mock <IBeerReview>(); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview.Object); // Act var result = await sut.ChangeImage(bindingModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.Unauthorized, result.StatusCode); StringAssert.Contains("edit other people", result.StatusDescription); }
public async Task Call_ReviewServiceGetByIdMethodOnceWithCorrectparams_WhenUserIsTheOwnerOfTheFoundReview() { // Arrange var expectedId = 20; var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var bindingModel = new ChangeImageBindingModel { Id = expectedId, Image = fileMock.Object }; var beerReview = new Mock <IBeerReview>(); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(expectedId)) .Returns(beerReview.Object); // Act await sut.ChangeImage(bindingModel); // Assert reviewService.Verify(r => r.GetById(expectedId), Times.Once); }
public async Task Return_CorrectHttpStatusCodeResult_WhenImageUploadFails() { // Arrange var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = this.MockingKernel.Get <IBeerReview>(ForCurrentUser); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview); // Act var result = await sut.ChangeImage(bindingModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.InternalServerError, result.StatusCode); StringAssert.Contains("could not be uploaded", result.StatusDescription); }
public async Task Call_ImageUploadUploadImageMethodOnceWithCorrectParams_WhenUserIsTheOwnerOfTheFoundReview() { // Arrange var expectedStream = new MemoryStream(); var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(expectedStream); var sut = this.MockingKernel.Get <ReviewsController>(); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = this.MockingKernel.Get <IBeerReview>(ForCurrentUser); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview); var imgUploadServie = this.MockingKernel.GetMock <IImageUploadService>(); // Act await sut.ChangeImage(bindingModel); // Assert imgUploadServie.Verify(s => s.UploadImageAsync(expectedStream, Constants.DefaultImageSizePx, Constants.DefaultImageSizePx), Times.Once); }
public async Task <ActionResult> ChangeImage(ChangeImageBindingModel model) { var img = model.Image; var id = model.Id; var review = this.reviewService.GetById(id); var userId = this.User?.Identity.GetUserId(); if (userId != review.ApplicationUserId && !this.User.IsInRole(Constants.AdminRole)) { return(this.Unauthorized()); } var url = await this.imageUpload.UploadImageAsync(img.InputStream, Constants.DefaultImageSizePx, Constants.DefaultImageSizePx); if (url == null) { return(this.ImageUploadFailure()); } review.ImgUrl = url; var result = this.reviewService.UpdateReview(review); if (result.Successful) { return(this.Json(new UrlOnlyDto { url = url })); } return(this.ImageUploadFailure()); }
public void Setters_ShouldSetPropertiesCorrectly() { // Arrange var expectedId = this.Fixture.Create <int>(); var expectedImage = new Mock <HttpPostedFileBase>(); var sut = new ChangeImageBindingModel(); // Act sut.Id = expectedId; sut.Image = expectedImage.Object; // Assert Assert.AreEqual(expectedId, sut.Id); Assert.AreSame(expectedImage.Object, sut.Image); }
public async Task ReturnCorrectResult_WhenUpdateSucceeds() { // Arrange var expectedUrl = "I'm not an empty string"; var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Successful) .Returns(true); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = this.MockingKernel.Get <IBeerReview>(ForCurrentUser); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview); reviewService.Setup(r => r.UpdateReview(beerReview)) .Returns(updateResult.Object); var imgUpload = this.MockingKernel.GetMock <IImageUploadService>(); imgUpload.Setup(i => i.UploadImageAsync(It.IsAny <Stream>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(Task.FromResult(expectedUrl)); // Act var result = await sut.ChangeImage(bindingModel) as JsonResult; // Assert Assert.IsNotNull(result); var viewModel = result.Data as UrlOnlyDto; Assert.IsNotNull(viewModel); Assert.AreSame(expectedUrl, viewModel.url); }
public async Task ReturnCorrectResult_WhenUpdateFails() { // Arrange var expectedUrl = "I'm not an empty string"; var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var updateResult = new Mock <IDataModifiedResult>(); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = this.MockingKernel.Get <IBeerReview>(ForCurrentUser); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview); reviewService.Setup(r => r.UpdateReview(beerReview)) .Returns(updateResult.Object); var imgUpload = this.MockingKernel.GetMock <IImageUploadService>(); imgUpload.Setup(i => i.UploadImageAsync(It.IsAny <Stream>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(Task.FromResult(expectedUrl)); // Act var result = await sut.ChangeImage(bindingModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.InternalServerError, result.StatusCode); StringAssert.Contains("could not be uploaded", result.StatusDescription); }
public async Task SetReviewImgUrlPropertyToUploadImageReturnValueAndCallUpdateReview_WhenUploadIsSuccessful() { // Arrange var expectedUrl = "I'm not an empty string"; var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(new MemoryStream()); var sut = this.MockingKernel.Get <ReviewsController>(); var updateResult = new Mock <IDataModifiedResult>(); var bindingModel = new ChangeImageBindingModel { Image = fileMock.Object }; var beerReview = this.MockingKernel.Get <IBeerReview>(ForCurrentUser); var context = this.MockingKernel.Get <HttpContextBase>(); sut.ControllerContext = new ControllerContext(context, new RouteData(), sut); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview); reviewService.Setup(r => r.UpdateReview(beerReview)) .Returns(updateResult.Object); var mockedReview = this.MockingKernel.GetMock <IBeerReview>(); var imgUpload = this.MockingKernel.GetMock <IImageUploadService>(); imgUpload.Setup(i => i.UploadImageAsync(It.IsAny <Stream>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(Task.FromResult(expectedUrl)); // Act await sut.ChangeImage(bindingModel); // Assert mockedReview.VerifySet(r => r.ImgUrl = expectedUrl, Times.Once); reviewService.Verify(r => r.UpdateReview(beerReview), Times.Once); }