public async Task <IActionResult> CreateAsync([FromBody] CreateAttachmentCommand command)
        {
            await DispatchAsync(command);

            var cached = GetDto <AttachmentDto>(command.Id);

            return(Created("api/attachments", cached));
        }
        public async Task Validate_NoValidationErrors()
        {
            // Arrange
            var note = await _wolkDbContext.CreateAndSaveNote();

            var request = new CreateAttachmentCommand
            {
                Contents = new byte[] { 1, 2, 3 }, Filename = new string('a', 299), NoteId = note.Id
            };

            // Act
            var result = await _validator.ValidateAsync(request, CancellationToken.None);

            // Assert
            Assert.IsFalse(result.Errors.Any());
        }
        public async Task Validate_ValidationErrors()
        {
            // Arrange
            var note = await _wolkDbContext.CreateAndSaveNote();

            var request = new CreateAttachmentCommand
            {
                Contents = new byte[0], Filename = new string('a', 301), NoteId = note.Id + 1
            };

            // Act
            var result = await _validator.ValidateAsync(request, CancellationToken.None);

            // Assert
            Assert.AreEqual(3, result.Errors.Count);
            Assert.IsTrue(result.Errors.ElementAt(0).ErrorMessage.Contains("Please provide a file."));
            Assert.IsTrue(result.Errors.ElementAt(1).ErrorMessage.Contains("300 characters or fewer"));
            Assert.IsTrue(result.Errors.ElementAt(2).ErrorMessage.Contains("Note with ID"));
        }
Esempio n. 4
0
        public async Task Handle_ShouldAddAttachmentCorrectly()
        {
            // Arrange
            var note = await _wolkDbContext.CreateAndSaveNote();

            var request = new CreateAttachmentCommand
            {
                Contents = new byte[] { 1, 2, 3, 4 },
                Filename = "file.txt",
                NoteId   = note.Id
            };

            var mime = "text/plain";

            _mockMimeService
            .Setup(m => m.GetMimeType(request.Filename))
            .Returns(mime);

            // Act
            var result = await _handler.Handle(request, CancellationToken.None);

            // Assert
            Assert.AreEqual(request.Filename, result.Filename);
            Assert.AreEqual(request.NoteId, result.NoteId);
            Assert.AreEqual(4, result.FileSize);
            Assert.AreEqual(mime, result.MimeType);

            var attachment = await _wolkDbContext.Attachments.SingleAsync();

            ShouldBeEqual(attachment, result);
            Assert.IsFalse(string.IsNullOrWhiteSpace(attachment.InternalFilename));

            var expectedFilePath = Path.Combine(_configuration.UploadsPath, attachment.InternalFilename);

            _mockFileService
            .Verify(m => m.WriteAllBytes(expectedFilePath, request.Contents), Times.Once);
        }