.report( MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName(reportingUAName).userAgentProduct(reportingUAProduct).build()) .finalRecipientField(finalRecipient) .originalRecipientField(originalRecipient) .originalMessageIdField(originalMessageId) .dispositionField(Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .addModifier(DispositionModifier.Error) .build()) .build()) .build() .asMultipart();
.withExtensionField(extensionField1) .withExtensionField(extensionField2) .finalRecipientField(finalRecipientField) .dispositionField(disposition) .gatewayField(gateway) .originalMessageIdField(originalMessageIdField) .originalRecipientField(originalRecipientField) .reportingUserAgentField(reportingUserAgentField) .addErrorField(errorField1) .addErrorField(errorField2) .build();
"X-OPENPAAS-PORT: 8000\r\n"; Optional<MDNReport> expected = Optional.of(MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder() .userAgentName("UA_name") .userAgentProduct("UA_product") .build()) .gatewayField(Gateway.builder() .nameType(new AddressType("smtp")) .name(Text.fromRawText("apache.org")) .build()) .originalRecipientField("originalRecipient") .finalRecipientField("final_recipient") .originalMessageIdField("<original@message.id>") .dispositionField(Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .addModifier(DispositionModifier.Failed) .build()) .addErrorField("Message1") .addErrorField("Message2") .withExtensionField(ExtensionField.builder() .fieldName("X-OPENPAAS-IP") .rawValue(" 177.177.177.77") .build()) .withExtensionField(ExtensionField.builder() .fieldName("X-OPENPAAS-PORT") .rawValue(" 8000") .build())
.reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .gatewayField(Gateway.builder().nameType(new AddressType("postal")).name(Text.fromRawText("8 rue Charles mercier\n 36555 Saint Coincoin\n France")).build()) .finalRecipientField(FinalRecipient.builder().addressType(new AddressType("postal")).finalRecipient(Text.fromRawText("5 rue Mercier\n 36555 Saint Coincoin\n France")).build()) .originalRecipientField(OriginalRecipient.builder().addressType(new AddressType("postal")).originalRecipient(Text.fromRawText("3 rue Mercier\n 36555 Saint Coincoin\n France")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue();
@Test public void generateMDNReportShouldFormatErrorFields() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .addErrorFields( new Error(Text.fromRawText("An error message")), new Error(Text.fromRawText("A second error message"))) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n" + "Error: An error message\r\n" + "Error: A second error message\r\n"); }
@Test public void generateMDNReportShouldFormatGatewayWithExoticNameType() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .gatewayField(Gateway.builder().nameType(new AddressType("postal")).name(Text.fromRawText("5 rue Charles mercier")).build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "MDN-Gateway: postal;5 rue Charles mercier\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatExoticFinalRecipientAddressType() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().addressType(new AddressType("roomNumber")).finalRecipient(Text.fromRawText("781")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: roomNumber; 781\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatExoticAddressTypeForOriginalRecipient() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().addressType(new AddressType("roomNumber")).originalRecipient(Text.fromRawText("385")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: roomNumber; 385\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatTypeDeleted() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Deleted) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;deleted/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatManualActions() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;processed/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatErrorFieldsOnSeveralLines() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .addErrorField(new Error(Text.fromRawText("An error message\non several lines"))) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n" + "Error: An error message\r\n" + " on several lines\r\n"); }
@Test public void generateMDNReportShouldFormatOneExtension() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .withExtensionField(ExtensionField.builder().fieldName("X-OPENPAAS-IP").rawValue("177.177.177.77").build()) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n" + "X-OPENPAAS-IP: 177.177.177.77\r\n"); }
@Test public void generateMDNReportShouldFormatErrorField() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .addErrorField(new Error(Text.fromRawText("An error message"))) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n" + "Error: An error message\r\n"); }
@Test public void generateMDNReportShouldFormatGateway() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .gatewayField(Gateway.builder().name(Text.fromRawText("host.com")).build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "MDN-Gateway: dns;host.com\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: automatic-action/MDN-sent-automatically;processed/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatUnknownModifier() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Deleted) .addModifier(new DispositionModifier("new")) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;deleted/new\r\n"); }
@Test public void generateMDNReportShouldFormatOneModifier() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Deleted) .addModifier(DispositionModifier.Error) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;deleted/error\r\n"); }
@Test public void generateMDNReportShouldFormatTypeDisplayed() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Displayed) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;displayed/error,failed\r\n"); }
.reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .withExtensionFields( ExtensionField.builder().fieldName("X-OPENPAAS-IP").rawValue("177.177.177.77").build(), ExtensionField.builder().fieldName("X-OPENPAAS-PORT").rawValue("8000").build()) .build() .formattedValue();
@Test public void generateMDNReportShouldFormatTypeDispatcher() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Dispatched) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-manually;dispatched/error,failed\r\n"); }
@Test public void generateMDNReportShouldFormatNullUserAgentProduct() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Deleted) .addModifier(DispositionModifier.Error) .addModifier(DispositionModifier.Failed) .build(); String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").build()) .finalRecipientField(FinalRecipient.builder().finalRecipient(Text.fromRawText("final_recipient")).build()) .originalRecipientField(OriginalRecipient.builder().originalRecipient(Text.fromRawText("originalRecipient")).build()) .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); assertThat(report) .isEqualTo("Reporting-UA: UA_name; \r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recipient: rfc822; final_recipient\r\n" + "Original-Message-ID: original_message_id\r\n" + "Disposition: manual-action/MDN-sent-automatically;deleted/error,failed\r\n"); }