private Optional<MessageAttachment> messageAttachment(MailboxSession session, Attachment attachment) throws MailboxException { try { return Optional.of(MessageAttachment.builder() .attachment(attachmentManager.getAttachment(AttachmentId.from(attachment.getBlobId().getRawValue()), session)) .name(attachment.getName().orElse(null)) .cid(attachment.getCid().map(Cid::from).orElse(null)) .isInline(attachment.isIsInline()) .build()); } catch (AttachmentNotFoundException e) { LOGGER.error(String.format("Attachment %s not found", attachment.getBlobId()), e); return Optional.empty(); } catch (IllegalStateException e) { LOGGER.error(String.format("Attachment %s is not well-formed", attachment.getBlobId()), e); return Optional.empty(); } } }
@Test(expected = IllegalArgumentException.class) public void builderShouldThrowWhenAttachmentIsNull() { MessageAttachment.builder() .attachment(null); }
@Test(expected = IllegalStateException.class) public void buildShouldThrowWhenAttachmentIsNotGiven() { MessageAttachment.builder() .build(); }
@Test(expected = IllegalStateException.class) public void buildShouldThrowWhenAttachmentIsNotGiven() { org.apache.james.mailbox.model.MessageAttachment.builder() .build(); }
@Test(expected = IllegalArgumentException.class) public void builderShouldThrowWhenAttachmentIsNull() { org.apache.james.mailbox.model.MessageAttachment.builder() .attachment(null); }
private MessageAttachment constructMessageAttachment(Attachment attachment, MessageAttachmentRepresentation messageAttachmentRepresentation) { return MessageAttachment.builder() .attachment(attachment) .name(messageAttachmentRepresentation.getName().orElse(null)) .cid(messageAttachmentRepresentation.getCid()) .isInline(messageAttachmentRepresentation.isInline()) .build(); }
private MessageAttachment convertReportToAttachment(MDNReport mdnReport) { Attachment attachment = Attachment.builder() .bytes(mdnReport.formattedValue().getBytes(StandardCharsets.UTF_8)) .type(MDN.DISPOSITION_CONTENT_TYPE) .build(); return MessageAttachment.builder() .attachment(attachment) .isInline(true) .build(); }
@Test public void buildShouldWorkWhenMandatoryAttributesAreGiven() { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.empty(), Optional.empty(), false); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .build(); assertThat(messageAttachment).isEqualTo(expectedMessageAttachment); }
private MessageAttachment retrieveAttachment(Entity entity) throws IOException { Optional<ContentTypeField> contentTypeField = getContentTypeField(entity); Optional<ContentDispositionField> contentDispositionField = getContentDispositionField(entity); Optional<String> contentType = contentType(contentTypeField); Optional<String> name = name(contentTypeField, contentDispositionField); Optional<Cid> cid = cid(readHeader(entity, CONTENT_ID, ContentIdField.class)); boolean isInline = isInline(readHeader(entity, CONTENT_DISPOSITION, ContentDispositionField.class)) && cid.isPresent(); return MessageAttachment.builder() .attachment(Attachment.builder() .bytes(getBytes(entity.getBody())) .type(contentType.orElse(DEFAULT_CONTENT_TYPE)) .build()) .name(name.orElse(null)) .cid(cid.orElse(null)) .isInline(isInline) .build(); }
@Test public void buildShouldAcceptIsInlineAndNoCid() { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .isInline(true) .build(); assertThat(messageAttachment.isInline()).isTrue(); }
private MessageAttachment createAttachment() { return MessageAttachment.builder() .attachment(Attachment.builder() .bytes("content".getBytes(StandardCharsets.UTF_8)) .type("type") .build()) .build(); } }
@Test public void buildShouldSetAttributesWhenAllAreGiven() { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.of("name"), Optional.of(Cid.from("cid")), true); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .name("name") .cid(Cid.from("cid")) .isInline(true) .build(); assertThat(messageAttachment).isEqualTo(expectedMessageAttachment); }
@Test public void isInlinedWithCidShouldReturnFalseWhenIsInlineButNoCid() throws Exception { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .name("name") .isInline(true) .build(); assertThat(messageAttachment.isInlinedWithCid()).isFalse(); } }
@Test void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStored() throws Exception { //Given MessageAttachment attachment = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("content".getBytes(StandardCharsets.UTF_8)) .type("type") .build()) .build(); SimpleMailboxMessage message1 = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), ImmutableList.of(attachment)); testee.save(message1).join(); MessageIdAttachmentIds expected = new MessageIdAttachmentIds(messageId, ImmutableSet.of(attachment.getAttachmentId())); //When Stream<MessageIdAttachmentIds> actual = testee.retrieveAllMessageIdAttachmentIds().join(); //Then assertThat(actual).containsOnly(expected); }
@Test public void isInlinedWithCidShouldReturnTrueWhenIsInlineAndHasCid() throws Exception { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .name("name") .cid(Cid.from("cid")) .isInline(true) .build(); assertThat(messageAttachment.isInlinedWithCid()).isTrue(); }
@Test public void isInlinedWithCidShouldReturnFalseWhenIsNotInline() throws Exception { Attachment attachment = Attachment.builder() .bytes("content".getBytes()) .type("type") .build(); MessageAttachment messageAttachment = MessageAttachment.builder() .attachment(attachment) .name("name") .cid(Cid.from("cid")) .isInline(false) .build(); assertThat(messageAttachment.isInlinedWithCid()).isFalse(); }
@Test void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStoredWithTwoAttachments() throws Exception { //Given MessageAttachment attachment1 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("content".getBytes(StandardCharsets.UTF_8)) .type("type") .build()) .build(); MessageAttachment attachment2 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("other content".getBytes(StandardCharsets.UTF_8)) .type("type") .build()) .build(); SimpleMailboxMessage message1 = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), ImmutableList.of(attachment1, attachment2)); testee.save(message1).join(); MessageIdAttachmentIds expected = new MessageIdAttachmentIds(messageId, ImmutableSet.of(attachment1.getAttachmentId(), attachment2.getAttachmentId())); //When Stream<MessageIdAttachmentIds> actual = testee.retrieveAllMessageIdAttachmentIds().join(); //Then assertThat(actual).containsOnly(expected); }
MessageAttachment attachment1 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("content".getBytes(StandardCharsets.UTF_8)) .build()) .build(); MessageAttachment attachment2 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("other content".getBytes(StandardCharsets.UTF_8))
MessageId messageId2 = messageIdFactory.generate(); MessageId messageId3 = messageIdFactory.generate(); MessageAttachment attachmentFor1 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("content".getBytes(StandardCharsets.UTF_8)) .build()) .build(); MessageAttachment attachmentFor3 = MessageAttachment.builder() .attachment(Attachment.builder() .bytes("other content".getBytes(StandardCharsets.UTF_8))
.internalDate(INTERNAL_DATE) .content(ClassLoader.getSystemResourceAsStream("spamMail.eml")) .attachments(ImmutableList.of(MessageAttachment.builder() .attachment(org.apache.james.mailbox.model.Attachment.builder() .attachmentId(AttachmentId.from(blodId.getRawValue()))