@Test public void reportingUserAgentShouldParseWithoutProduct() { String minimal = "Reporting-UA: UA_name"; Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.reportingUaField()).run(minimal); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(ReportingUserAgent.class); assertThat((ReportingUserAgent)result.resultValue).isEqualTo(ReportingUserAgent.builder().userAgentName("UA_name").build()); }
@Test public void reportingUserAgentShouldParseWithProduct() { String minimal = "Reporting-UA: UA_name; UA_product"; Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.reportingUaField()).run(minimal); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(ReportingUserAgent.class); assertThat((ReportingUserAgent)result.resultValue).isEqualTo(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()); }
Rule dispositionNotificationContent() { return Sequence( push(MDNReport.builder()), Optional(Sequence(reportingUaField(), ACTION(setReportingUaField()), crlf())), Optional(Sequence(mdnGatewayField(), ACTION(setMdnGatewayField()), crlf())), Optional(Sequence(originalRecipientField(), ACTION(setOriginalRecipientField()), crlf())), Sequence(finalRecipientField(), ACTION(setFinalRecipientField()), crlf()), Optional(Sequence(originalMessageIdField(), ACTION(setOriginalMessageIdField()), crlf())), Sequence(dispositionField(), ACTION(setDispositionField()), crlf()), ZeroOrMore(Sequence(errorField(), ACTION(addErrorField()), crlf())), ZeroOrMore(Sequence(extentionField(), ACTION(addExtensionField()), crlf())), ACTION(buildMDNReport())); }