public async Task <ImageDTO> CreateImageAsync(Guid userId, Guid galleryId, ImageCreationDTO imageCreationDTO) { ImageEntity entity = imageCreationDTO.ToImageEntity(); entity.fk_gallery = galleryId; ImageEntity addedEntity = await _imageRepository.PostImage(entity); if (_imageRepository.Save() == false) { throw new Exception(); } IFormFile formFile = imageCreationDTO.FormFile; if (formFile.Length > 0) { string extension = Path.GetExtension(formFile.FileName); string filename = addedEntity.Id.ToString(); byte[] formfileBytes; using (Stream stream = formFile.OpenReadStream()) { formfileBytes = new byte[stream.Length]; await stream.ReadAsync(formfileBytes, 0, (int)stream.Length); } await _fileSystemRepository.SaveFile(formfileBytes, filename, extension); } return(addedEntity.ToImageDto()); }
public async Task <ActionResult> CreateImage(Guid galleryId, [FromForm] ImageCreationDTO dto) { Guid userId = new Guid(HttpContext.User.Identity.Name); if (await _galleryService.DoesGalleryExistAsync(galleryId) == false) { return(NotFound()); } if (await _galleryService.IsGalleryOwnedByUserAsync(galleryId, userId) == false) { return(Unauthorized()); } try { ImageDTO imageDTO = await _imageService.CreateImageAsync(userId, galleryId, dto); return(CreatedAtAction(nameof(GetImage), new { galleryId = galleryId, imageId = imageDTO.Id }, imageDTO)); } catch (Exception ex) { var problemDetails = new ProblemDetails { Title = "An unexpected error occurred.", Status = StatusCodes.Status500InternalServerError, Detail = "Unable to create the image at this moment due to an error, the error has been logged and sent to the developers for fixing.", Instance = HttpContext.TraceIdentifier, }; return(StatusCode(StatusCodes.Status500InternalServerError, problemDetails)); } }
public async Task CreateImage_not_own_gallery() { // Arrange var controller = new ImageController(GalleryService.Object, ImageService.Object); controller.ControllerContext = APIControllerUtils.CreateApiControllerContext(UserEntities[1].Id.ToString()); Guid galleryId = GalleryEntities[0].Id; ImageCreationDTO newItem = new ImageCreationDTO("CreatedTestName", TestFormFile()); // Act ActionResult <ImageDTO> response = await controller.CreateImage(galleryId, newItem); // Assert Assert.IsInstanceOfType(response.Result, typeof(UnauthorizedResult)); var result = response.Result as UnauthorizedResult; Assert.AreEqual(401, result.StatusCode); }
public async Task CreateImage() { // Arrange var controller = new ImageController(GalleryService.Object, ImageService.Object); controller.ControllerContext = APIControllerUtils.CreateApiControllerContext(UserEntities[0].Id.ToString()); Guid galleryId = GalleryEntities[0].Id; ImageCreationDTO newItem = new ImageCreationDTO("CreatedTestName", TestFormFile()); // Act ActionResult <ImageDTO> response = await controller.CreateImage(galleryId, newItem); // Assert Assert.IsInstanceOfType(response.Result, typeof(CreatedAtActionResult)); var result = response.Result as CreatedAtActionResult; Assert.AreEqual(201, result.StatusCode); Assert.IsNotNull(result.Value); Assert.IsInstanceOfType(result.Value, typeof(ImageDTO)); ImageDTO createdItem = result.Value as ImageDTO; Assert.AreEqual(createdItem.Name, "CreatedTestName"); }