diff --git a/src/main/java/com/github/javafaker/Internet.java b/src/main/java/com/github/javafaker/Internet.java index 163a072e..1db00b00 100644 --- a/src/main/java/com/github/javafaker/Internet.java +++ b/src/main/java/com/github/javafaker/Internet.java @@ -38,6 +38,25 @@ private String emailAddress(String localPart, String domain) { return join(stripAccents(localPart), "@", domain); } + /** + * Generates a message-id (msg-id) valid per https://tools.ietf.org/html/rfc2822 + * + * @param domain The domain name to use in the id-right part of the message-id + * @return A valid message id with the supplied domain + */ + public String rfcMessageId(String domain) { + return join("<", UUID.randomUUID(), "@", domain, ">"); + } + + /** + * Generates a message-id (msg-id) valid per https://tools.ietf.org/html/rfc2822 + * + * @return A valid message id with a faker generated domain + */ + public String rfcMessageId() { + return rfcMessageId(domainName()); + } + public String domainName() { return domainWord() + "." + domainSuffix(); } diff --git a/src/test/java/com/github/javafaker/InternetTest.java b/src/test/java/com/github/javafaker/InternetTest.java index 499993c5..569456b9 100644 --- a/src/test/java/com/github/javafaker/InternetTest.java +++ b/src/test/java/com/github/javafaker/InternetTest.java @@ -88,6 +88,18 @@ public void testImage() { assertThat(imageUrl, matchesRegularExpression("^http:\\/\\/lorempixel\\.com(/g)?/\\d{1,4}/\\d{1,4}/\\w+/$")); } + @Test + public void testRfc2822MessageIdIsValid() { + String rfcMessageId = faker.internet().rfcMessageId(); + assertThat(rfcMessageId, matchesRegularExpression("<.*@.*\\..*>")); + } + + @Test + public void testRfc2822MessageIdIsValidSuppliedDomain() { + String rfcMessageId = faker.internet().rfcMessageId("mydomain.org"); + assertThat(rfcMessageId, matchesRegularExpression("<.*@.*\\..*>")); + } + @Test public void testDomainName() { assertThat(faker.internet().domainName(), matchesRegularExpression("[a-z]+\\.\\w{2,4}"));