示例#1
0
        public void Validate_Succeeds_WhenAttachmentDoesNotExist()
        {
            var command = new UploadAttachmentCommand(1, "newfile.txt", false, new MemoryStream());

            var result = _dut.Validate(command);

            Assert.IsTrue(result.IsValid);
        }
示例#2
0
        public async Task AddingExistingFileToDatabase_WithOverwrite_Succeeds()
        {
            var command = new UploadAttachmentCommand(1, "ExistingFile.txt", true, new MemoryStream());
            var result  = await _dut.Handle(command, default);

            Assert.AreEqual(ResultType.Ok, result.ResultType);
            Assert.AreEqual(1, _invitation.Attachments.Count);
            _blobStorageMock.Verify(x => x.UploadAsync(It.IsAny <string>(), It.IsAny <Stream>(), true, default), Times.Once);
        }
示例#3
0
        public void Validate_Fails_WhenFileNameIsTooLong()
        {
            var command = new UploadAttachmentCommand(1, new string('a', 252) + ".txt", false, new MemoryStream());

            var result = _dut.Validate(command);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(1, result.Errors.Count);
            Assert.IsTrue(result.Errors[0].ErrorMessage.StartsWith("Filename too long!"));
        }
示例#4
0
        public void Validate_Fails_WhenFileNameIsNotGiven()
        {
            var command = new UploadAttachmentCommand(1, string.Empty, false, new MemoryStream());

            var result = _dut.Validate(command);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(1, result.Errors.Count);
            Assert.IsTrue(result.Errors[0].ErrorMessage.StartsWith("Filename not given!"));
        }
示例#5
0
        public void Validate_Fails_WhenAttachmentExists()
        {
            var command = new UploadAttachmentCommand(1, "existingfile.txt", false, new MemoryStream());

            var result = _dut.Validate(command);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(1, result.Errors.Count);
            Assert.IsTrue(result.Errors[0].ErrorMessage.StartsWith("Invitation already has an attachment with filename"));
        }
示例#6
0
        public void Validate_Fails_WhenInvitationDoesNotExist()
        {
            var command = new UploadAttachmentCommand(-1, "newfile.txt", false, new MemoryStream());

            var result = _dut.Validate(command);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(1, result.Errors.Count);
            Assert.IsTrue(result.Errors[0].ErrorMessage.StartsWith("Invitation with this ID does not exist"));
        }
示例#7
0
        public void Cosntructor_SetsProperties()
        {
            var stream = new MemoryStream();
            var dut    = new UploadAttachmentCommand(1, "FileName.txt", true, stream);

            Assert.AreEqual(1, dut.InvitationId);
            Assert.AreEqual("FileName.txt", dut.FileName);
            Assert.AreEqual(true, dut.OverWriteIfExists);
            Assert.AreEqual(stream, dut.Content);
        }
示例#8
0
        public void Validate_Fails_WhenAttachmentIsTooLarge()
        {
            var data    = new byte[2 * 1024 * 1024];
            var command = new UploadAttachmentCommand(1, "newfile.txt", false, new MemoryStream(data));

            var result = _dut.Validate(command);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(1, result.Errors.Count);
            Assert.IsTrue(result.Errors[0].ErrorMessage.StartsWith("Maximum file size is"));
        }
示例#9
0
        public async Task ValidateAsync_OnUploadAttachmentCommand_ShouldReturnFalse_WhenNoAccessToProject()
        {
            // Arrange
            var command = new UploadAttachmentCommand(
                _invitationIdWithoutAccessToProject,
                null,
                true,
                null);

            // act
            var result = await _dut.ValidateAsync(command);

            // Assert
            Assert.IsFalse(result);
        }
示例#10
0
        public async Task <ActionResult <int> > UploadAttachment(
            [FromHeader(Name = CurrentPlantMiddleware.PlantHeader)]
            [Required]
            [StringLength(PlantEntityBase.PlantLengthMax, MinimumLength = PlantEntityBase.PlantLengthMin)]
            string plant,
            [FromRoute] int id,
            [FromForm] UploadAttachmentDto dto)
        {
            await using var stream = dto.File.OpenReadStream();

            var command = new UploadAttachmentCommand(
                id,
                dto.File.FileName,
                dto.OverwriteIfExists,
                stream);

            var result = await _mediator.Send(command);

            return(this.FromResult(result));
        }